From c2cc0b5048396229173239b79a30e45899155a9c Mon Sep 17 00:00:00 2001 From: Garrett Michael Flynn Date: Wed, 22 May 2024 10:42:41 -0700 Subject: [PATCH 01/17] Separate stories from the src --- .storybook/main.ts | 2 +- generateInterfaceSchema.py | 6 +- .../stories/assets => assets/icons}/dandi.svg | 0 .../assets => assets/icons}/delete.svg | 0 .../assets => assets/icons}/exploration.svg | 0 .../assets => assets/icons}/folder_open.svg | 0 .../assets => assets/icons}/fullscreen.svg | 0 .../icons}/fullscreen_exit.svg | 0 .../assets => assets/icons}/global.svg | 0 .../assets => assets/icons}/inspect.svg | 0 .../stories/assets => assets/icons}/key.svg | 0 .../icons}/neurosift-logo.svg | 0 .../assets => assets/icons}/preview.svg | 0 .../assets => assets/icons}/python.svg | 0 .../assets => assets/icons}/restart.svg | 0 .../stories/assets => assets/icons}/save.svg | 0 .../assets => assets/icons}/search.svg | 0 .../assets => assets/icons}/server.svg | 0 .../assets => assets/icons}/settings.svg | 0 .../assets => assets/icons}/web_asset.svg | 0 .../stories/assets => assets/icons}/wifi.svg | 0 src/electron/renderer/src/pages.js | 8 +- src/electron/renderer/src/server/globals.ts | 6 +- .../src/stories/FileSystemSelector.js | 2 +- .../renderer/src/stories/FullScreenToggle.ts | 4 +- src/electron/renderer/src/stories/Search.js | 2 +- .../pages/guided-mode/data/GuidedMetadata.js | 2 +- .../guided-mode/data/GuidedPathExpansion.js | 2 +- .../guided-mode/data/GuidedSourceData.js | 2 +- .../options/GuidedInspectorPage.js | 2 +- .../guided-mode/options/GuidedStubPreview.js | 2 +- .../pages/guided-mode/options/GuidedUpload.js | 2 +- .../guided-mode/results/GuidedResults.js | 2 +- .../pages/guided-mode/setup/GuidedSubjects.js | 2 +- .../stories/pages/settings/SettingsPage.js | 8 +- .../src/stories/pages/uploads/UploadsPage.js | 2 +- .../src/stories => stories}/Introduction.mdx | 0 .../pages => stories}/Pages.stories.js | 2 +- .../assets/code-brackets.svg | 0 .../src/stories => stories}/assets/colors.svg | 0 .../stories => stories}/assets/comments.svg | 0 .../stories => stories}/assets/direction.svg | 0 .../src/stories => stories}/assets/flow.svg | 0 .../src/stories => stories}/assets/plugin.svg | 0 .../src/stories => stories}/assets/repo.svg | 0 .../stories => stories}/assets/stackalt.svg | 0 .../components}/Accordion.stories.js | 2 +- .../components}/Button.stories.js | 2 +- .../components}/FileSystemSelector.stories.js | 2 +- .../components}/InspectorList.stories.js | 4 +- .../components}/InstanceManager.stories.js | 4 +- .../components}/JSONSchemaForm.stories.js | 2 +- .../components}/List.stories.js | 2 +- .../components}/Locate.stories.js | 2 +- .../components}/Multiselect.stories.js | 2 +- .../components}/OptionalSection.stories.js | 2 +- .../components}/ProgressBar.stories.js | 2 +- .../components}/Search.stories.js | 2 +- .../components}/StatusBar.stories.js | 8 +- .../components}/Table.stories.js | 8 +- .../inputs/inspector_output.json | 0 .../AlphaOmegaRecordingInterface.json | 0 .../interface_schemas}/AudioInterface.json | 0 .../AxonaRecordingInterface.json | 0 .../BiocamRecordingInterface.json | 0 .../BlackrockRecordingInterface.json | 0 .../BlackrockSortingInterface.json | 0 .../BrukerTiffMultiPlaneConverter.json | 0 .../BrukerTiffMultiPlaneImagingInterface.json | 0 .../BrukerTiffSinglePlaneConverter.json | 0 ...BrukerTiffSinglePlaneImagingInterface.json | 0 .../CaimanSegmentationInterface.json | 0 .../CellExplorerRecordingInterface.json | 0 .../CellExplorerSortingInterface.json | 0 .../CnmfeSegmentationInterface.json | 0 .../DeepLabCutInterface.json | 0 .../EDFRecordingInterface.json | 0 .../ExtractSegmentationInterface.json | 0 .../FicTracDataInterface.json | 0 .../IntanRecordingInterface.json | 0 .../KiloSortSortingInterface.json | 0 .../MCSRawRecordingInterface.json | 0 .../MEArecRecordingInterface.json | 0 .../MicroManagerTiffImagingInterface.json | 0 .../MiniscopeBehaviorInterface.json | 0 .../MiniscopeConverter.json | 0 .../MiniscopeImagingInterface.json | 0 .../NeuralynxRecordingInterface.json | 0 .../NeuroScopeLFPInterface.json | 0 .../NeuroScopeRecordingInterface.json | 0 .../NeuroScopeSortingInterface.json | 0 .../OpenEphysRecordingInterface.json | 0 .../PhySortingInterface.json | 0 .../PlexonRecordingInterface.json | 0 .../PlexonSortingInterface.json | 0 .../interface_schemas}/SLEAPInterface.json | 0 .../SbxImagingInterface.json | 0 .../ScanImageImagingInterface.json | 0 .../Spike2RecordingInterface.json | 0 .../SpikeGLXConverterPipe.json | 0 .../SpikeGLXNIDQInterface.json | 0 .../SpikeGLXRecordingInterface.json | 0 .../Suite2pSegmentationInterface.json | 0 .../TdtRecordingInterface.json | 0 .../TiffImagingInterface.json | 0 .../interface_schemas}/VideoInterface.json | 0 .../pages}/GuidedHome.stories.js | 0 .../pages}/Metadata.stories.js | 0 .../pages}/NewDataset.stories.js | 0 .../pages}/Preview.stories.js | 0 .../pages}/Review.stories.js | 0 .../pages}/SourceData.stories.js | 90 +++++++++---------- .../pages}/Structure.stories.js | 0 .../pages}/Subjects.stories.js | 0 .../pages}/Upload.stories.js | 0 .../pages}/storyStates.ts | 6 +- tsconfig.json | 2 +- 117 files changed, 100 insertions(+), 100 deletions(-) rename src/electron/renderer/{src/stories/assets => assets/icons}/dandi.svg (100%) rename src/electron/renderer/{src/stories/assets => assets/icons}/delete.svg (100%) rename src/electron/renderer/{src/stories/assets => assets/icons}/exploration.svg (100%) rename src/electron/renderer/{src/stories/assets => assets/icons}/folder_open.svg (100%) rename src/electron/renderer/{src/stories/assets => assets/icons}/fullscreen.svg (100%) rename src/electron/renderer/{src/stories/assets => assets/icons}/fullscreen_exit.svg (100%) rename src/electron/renderer/{src/stories/assets => assets/icons}/global.svg (100%) rename src/electron/renderer/{src/stories/assets => assets/icons}/inspect.svg (100%) rename src/electron/renderer/{src/stories/assets => assets/icons}/key.svg (100%) rename src/electron/renderer/{src/stories/assets => assets/icons}/neurosift-logo.svg (100%) rename src/electron/renderer/{src/stories/assets => assets/icons}/preview.svg (100%) rename src/electron/renderer/{src/stories/assets => assets/icons}/python.svg (100%) rename src/electron/renderer/{src/stories/assets => assets/icons}/restart.svg (100%) rename src/electron/renderer/{src/stories/assets => assets/icons}/save.svg (100%) rename src/electron/renderer/{src/stories/assets => assets/icons}/search.svg (100%) rename src/electron/renderer/{src/stories/assets => assets/icons}/server.svg (100%) rename src/electron/renderer/{src/stories/assets => assets/icons}/settings.svg (100%) rename src/electron/renderer/{src/stories/assets => assets/icons}/web_asset.svg (100%) rename src/electron/renderer/{src/stories/assets => assets/icons}/wifi.svg (100%) rename {src/electron/renderer/src/stories => stories}/Introduction.mdx (100%) rename {src/electron/renderer/src/stories/pages => stories}/Pages.stories.js (91%) rename {src/electron/renderer/src/stories => stories}/assets/code-brackets.svg (100%) rename {src/electron/renderer/src/stories => stories}/assets/colors.svg (100%) rename {src/electron/renderer/src/stories => stories}/assets/comments.svg (100%) rename {src/electron/renderer/src/stories => stories}/assets/direction.svg (100%) rename {src/electron/renderer/src/stories => stories}/assets/flow.svg (100%) rename {src/electron/renderer/src/stories => stories}/assets/plugin.svg (100%) rename {src/electron/renderer/src/stories => stories}/assets/repo.svg (100%) rename {src/electron/renderer/src/stories => stories}/assets/stackalt.svg (100%) rename {src/electron/renderer/src/stories => stories/components}/Accordion.stories.js (90%) rename {src/electron/renderer/src/stories => stories/components}/Button.stories.js (92%) rename {src/electron/renderer/src/stories => stories/components}/FileSystemSelector.stories.js (87%) rename {src/electron/renderer/src/stories/preview/inspector => stories/components}/InspectorList.stories.js (55%) rename {src/electron/renderer/src/stories => stories/components}/InstanceManager.stories.js (92%) rename {src/electron/renderer/src/stories => stories/components}/JSONSchemaForm.stories.js (96%) rename {src/electron/renderer/src/stories => stories/components}/List.stories.js (91%) rename {src/electron/renderer/src/stories/pages/guided-mode => stories/components}/Locate.stories.js (90%) rename {src/electron/renderer/src/stories/multiselect => stories/components}/Multiselect.stories.js (87%) rename {src/electron/renderer/src/stories => stories/components}/OptionalSection.stories.js (77%) rename {src/electron/renderer/src/stories => stories/components}/ProgressBar.stories.js (87%) rename {src/electron/renderer/src/stories => stories/components}/Search.stories.js (94%) rename {src/electron/renderer/src/stories/status => stories/components}/StatusBar.stories.js (63%) rename {src/electron/renderer/src/stories => stories/components}/Table.stories.js (82%) rename src/electron/renderer/src/stories/preview/inspector/test.json => stories/inputs/inspector_output.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/AlphaOmegaRecordingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/AudioInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/AxonaRecordingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/BiocamRecordingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/BlackrockRecordingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/BlackrockSortingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/BrukerTiffMultiPlaneConverter.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/BrukerTiffMultiPlaneImagingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/BrukerTiffSinglePlaneConverter.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/BrukerTiffSinglePlaneImagingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/CaimanSegmentationInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/CellExplorerRecordingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/CellExplorerSortingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/CnmfeSegmentationInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/DeepLabCutInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/EDFRecordingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/ExtractSegmentationInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/FicTracDataInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/IntanRecordingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/KiloSortSortingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/MCSRawRecordingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/MEArecRecordingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/MicroManagerTiffImagingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/MiniscopeBehaviorInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/MiniscopeConverter.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/MiniscopeImagingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/NeuralynxRecordingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/NeuroScopeLFPInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/NeuroScopeRecordingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/NeuroScopeSortingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/OpenEphysRecordingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/PhySortingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/PlexonRecordingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/PlexonSortingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/SLEAPInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/SbxImagingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/ScanImageImagingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/Spike2RecordingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/SpikeGLXConverterPipe.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/SpikeGLXNIDQInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/SpikeGLXRecordingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/Suite2pSegmentationInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/TdtRecordingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/TiffImagingInterface.json (100%) rename {src/schemas/json/generated => stories/inputs/interface_schemas}/VideoInterface.json (100%) rename {src/electron/renderer/src/stories/pages/guided-mode => stories/pages}/GuidedHome.stories.js (100%) rename {src/electron/renderer/src/stories/pages/guided-mode => stories/pages}/Metadata.stories.js (100%) rename {src/electron/renderer/src/stories/pages/guided-mode => stories/pages}/NewDataset.stories.js (100%) rename {src/electron/renderer/src/stories/pages/guided-mode => stories/pages}/Preview.stories.js (100%) rename {src/electron/renderer/src/stories/pages/guided-mode => stories/pages}/Review.stories.js (100%) rename {src/electron/renderer/src/stories/pages/guided-mode => stories/pages}/SourceData.stories.js (83%) rename {src/electron/renderer/src/stories/pages/guided-mode => stories/pages}/Structure.stories.js (100%) rename {src/electron/renderer/src/stories/pages/guided-mode => stories/pages}/Subjects.stories.js (100%) rename {src/electron/renderer/src/stories/pages/guided-mode => stories/pages}/Upload.stories.js (100%) rename {src/electron/renderer/src/stories/pages/guided-mode => stories/pages}/storyStates.ts (87%) diff --git a/.storybook/main.ts b/.storybook/main.ts index 80af1da82..4325b84cf 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -3,7 +3,7 @@ import type { StorybookConfig } from '@storybook/web-components-vite'; import ViteYaml from "@modyfi/vite-plugin-yaml"; const config: StorybookConfig = { - stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|ts|tsx)"], + stories: ["../stories/**/*.mdx", "../stories/**/*.stories.@(js|jsx|ts|tsx)"], addons: ["@storybook/addon-links", "@storybook/addon-essentials"], framework: { name: "@storybook/web-components-vite", diff --git a/generateInterfaceSchema.py b/generateInterfaceSchema.py index 279c450b7..fe886ac86 100644 --- a/generateInterfaceSchema.py +++ b/generateInterfaceSchema.py @@ -4,7 +4,7 @@ from neuroconv import NWBConverter, converters, datainterfaces filepath = Path("src") / "supported_interfaces.json" -generatedJSONSchemaPath = Path("schemas", "json", "generated") +generatedJSONSchemaPath = Path("stories") / "inputs" / "interface_schemas" generatedJSONSchemaPath.mkdir(exist_ok=True, parents=True) f = filepath.open() @@ -29,9 +29,9 @@ class CustomNWBConverter(NWBConverter): outfile.write(json.dumps(schema, indent=4)) -sourceDataStoryPath = Path("src/electron/renderer/src/stories/pages/guided-mode/SourceData.stories.js") +sourceDataStoryPath = Path("stories/pages/SourceData.stories.js") -importCode = "\n".join(map(lambda arr: f"import {arr[0]}Schema from '../../../../../../{arr[1]}'", paths.items())) +importCode = "\n".join(map(lambda arr: f"import {arr[0]}Schema from '../inputs/interface_schemas/{arr[1]}'", paths.items())) storyCode = "\n".join( map( lambda arr: f"""export const {arr[0]} = PageTemplate.bind({{}}); diff --git a/src/electron/renderer/src/stories/assets/dandi.svg b/src/electron/renderer/assets/icons/dandi.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/dandi.svg rename to src/electron/renderer/assets/icons/dandi.svg diff --git a/src/electron/renderer/src/stories/assets/delete.svg b/src/electron/renderer/assets/icons/delete.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/delete.svg rename to src/electron/renderer/assets/icons/delete.svg diff --git a/src/electron/renderer/src/stories/assets/exploration.svg b/src/electron/renderer/assets/icons/exploration.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/exploration.svg rename to src/electron/renderer/assets/icons/exploration.svg diff --git a/src/electron/renderer/src/stories/assets/folder_open.svg b/src/electron/renderer/assets/icons/folder_open.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/folder_open.svg rename to src/electron/renderer/assets/icons/folder_open.svg diff --git a/src/electron/renderer/src/stories/assets/fullscreen.svg b/src/electron/renderer/assets/icons/fullscreen.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/fullscreen.svg rename to src/electron/renderer/assets/icons/fullscreen.svg diff --git a/src/electron/renderer/src/stories/assets/fullscreen_exit.svg b/src/electron/renderer/assets/icons/fullscreen_exit.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/fullscreen_exit.svg rename to src/electron/renderer/assets/icons/fullscreen_exit.svg diff --git a/src/electron/renderer/src/stories/assets/global.svg b/src/electron/renderer/assets/icons/global.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/global.svg rename to src/electron/renderer/assets/icons/global.svg diff --git a/src/electron/renderer/src/stories/assets/inspect.svg b/src/electron/renderer/assets/icons/inspect.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/inspect.svg rename to src/electron/renderer/assets/icons/inspect.svg diff --git a/src/electron/renderer/src/stories/assets/key.svg b/src/electron/renderer/assets/icons/key.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/key.svg rename to src/electron/renderer/assets/icons/key.svg diff --git a/src/electron/renderer/src/stories/assets/neurosift-logo.svg b/src/electron/renderer/assets/icons/neurosift-logo.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/neurosift-logo.svg rename to src/electron/renderer/assets/icons/neurosift-logo.svg diff --git a/src/electron/renderer/src/stories/assets/preview.svg b/src/electron/renderer/assets/icons/preview.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/preview.svg rename to src/electron/renderer/assets/icons/preview.svg diff --git a/src/electron/renderer/src/stories/assets/python.svg b/src/electron/renderer/assets/icons/python.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/python.svg rename to src/electron/renderer/assets/icons/python.svg diff --git a/src/electron/renderer/src/stories/assets/restart.svg b/src/electron/renderer/assets/icons/restart.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/restart.svg rename to src/electron/renderer/assets/icons/restart.svg diff --git a/src/electron/renderer/src/stories/assets/save.svg b/src/electron/renderer/assets/icons/save.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/save.svg rename to src/electron/renderer/assets/icons/save.svg diff --git a/src/electron/renderer/src/stories/assets/search.svg b/src/electron/renderer/assets/icons/search.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/search.svg rename to src/electron/renderer/assets/icons/search.svg diff --git a/src/electron/renderer/src/stories/assets/server.svg b/src/electron/renderer/assets/icons/server.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/server.svg rename to src/electron/renderer/assets/icons/server.svg diff --git a/src/electron/renderer/src/stories/assets/settings.svg b/src/electron/renderer/assets/icons/settings.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/settings.svg rename to src/electron/renderer/assets/icons/settings.svg diff --git a/src/electron/renderer/src/stories/assets/web_asset.svg b/src/electron/renderer/assets/icons/web_asset.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/web_asset.svg rename to src/electron/renderer/assets/icons/web_asset.svg diff --git a/src/electron/renderer/src/stories/assets/wifi.svg b/src/electron/renderer/assets/icons/wifi.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/wifi.svg rename to src/electron/renderer/assets/icons/wifi.svg diff --git a/src/electron/renderer/src/pages.js b/src/electron/renderer/src/pages.js index 4cadf8964..5b5e4117a 100644 --- a/src/electron/renderer/src/pages.js +++ b/src/electron/renderer/src/pages.js @@ -16,11 +16,11 @@ import { GuidedInspectorPage } from "./stories/pages/guided-mode/options/GuidedI import logo from "../assets/img/logo-guide-draft-transparent-tight.png"; import { GuidedPathExpansionPage } from "./stories/pages/guided-mode/data/GuidedPathExpansion"; -import uploadIcon from "./stories/assets/dandi.svg?raw"; -import inspectIcon from "./stories/assets/inspect.svg?raw"; -import neurosiftIcon from "./stories/assets/neurosift-logo.svg?raw"; +import uploadIcon from "../assets/icons/dandi.svg?raw"; +import inspectIcon from "../assets/icons/inspect.svg?raw"; +import neurosiftIcon from "../assets/icons/neurosift-logo.svg?raw"; -import settingsIcon from "./stories/assets/settings.svg?raw"; +import settingsIcon from "../assets/icons/settings.svg?raw"; import { UploadsPage } from "./stories/pages/uploads/UploadsPage"; import { SettingsPage } from "./stories/pages/settings/SettingsPage"; diff --git a/src/electron/renderer/src/server/globals.ts b/src/electron/renderer/src/server/globals.ts index 698243dc9..132d792db 100644 --- a/src/electron/renderer/src/server/globals.ts +++ b/src/electron/renderer/src/server/globals.ts @@ -1,8 +1,8 @@ import { isElectron, app, port } from '../electron/index.js' -import serverSVG from "../stories/assets/server.svg?raw"; -import webAssetSVG from "../stories/assets/web_asset.svg?raw"; -import wifiSVG from "../stories/assets/wifi.svg?raw"; +import serverSVG from "../../assets/icons/server.svg?raw"; +import webAssetSVG from "../../assets/icons/web_asset.svg?raw"; +import wifiSVG from "../../assets/icons/wifi.svg?raw"; // Base Request URL for Python Server export const baseUrl = `http://127.0.0.1:${port}`; diff --git a/src/electron/renderer/src/stories/FileSystemSelector.js b/src/electron/renderer/src/stories/FileSystemSelector.js index 8fa45febf..1a64ce91f 100644 --- a/src/electron/renderer/src/stories/FileSystemSelector.js +++ b/src/electron/renderer/src/stories/FileSystemSelector.js @@ -4,7 +4,7 @@ import { fs, remote } from "../electron/index"; import { List } from "./List"; const { dialog } = remote; -import restartSVG from "./assets/restart.svg?raw"; +import restartSVG from "../../assets/icons/restart.svg?raw"; import { unsafeSVG } from "lit/directives/unsafe-svg.js"; function getObjectTypeReferenceString(type, multiple, { nested, native } = {}) { diff --git a/src/electron/renderer/src/stories/FullScreenToggle.ts b/src/electron/renderer/src/stories/FullScreenToggle.ts index ff1e1557f..fb01e32d9 100644 --- a/src/electron/renderer/src/stories/FullScreenToggle.ts +++ b/src/electron/renderer/src/stories/FullScreenToggle.ts @@ -1,7 +1,7 @@ import { LitElement, css, html } from "lit"; -import fullScreenIcon from './assets/fullscreen.svg?raw' -import fullScreenExitIcon from './assets/fullscreen_exit.svg?raw' +import fullScreenIcon from '../../assets/icons/fullscreen.svg?raw' +import fullScreenExitIcon from '../../assets/icons/fullscreen_exit.svg?raw' import { unsafeHTML } from "lit/directives/unsafe-html.js"; diff --git a/src/electron/renderer/src/stories/Search.js b/src/electron/renderer/src/stories/Search.js index ddf87e403..023a775f8 100644 --- a/src/electron/renderer/src/stories/Search.js +++ b/src/electron/renderer/src/stories/Search.js @@ -1,7 +1,7 @@ import { LitElement, html, css } from "lit"; import { styleMap } from "lit/directives/style-map.js"; -import searchSVG from "./assets/search.svg?raw"; +import searchSVG from "../../assets/icons/search.svg?raw"; import tippy from "tippy.js"; import { unsafeHTML } from "lit/directives/unsafe-html.js"; diff --git a/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedMetadata.js b/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedMetadata.js index ee1e60e15..18e463156 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedMetadata.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedMetadata.js @@ -23,7 +23,7 @@ import { header, tempPropertyKey } from "../../../forms/utils"; import { createGlobalFormModal } from "../../../forms/GlobalFormModal"; import { Button } from "../../../Button.js"; -import globalIcon from "../../../assets/global.svg?raw"; +import globalIcon from "../../../../../assets/icons/global.svg?raw"; const parentTableRenderConfig = { Electrodes: (metadata) => { diff --git a/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedPathExpansion.js b/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedPathExpansion.js index 922331770..0a2d26aec 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedPathExpansion.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedPathExpansion.js @@ -14,7 +14,7 @@ import { Button } from "../../../Button.js"; import { Modal } from "../../../Modal"; import { header } from "../../../forms/utils"; -import autocompleteIcon from "../../../assets/inspect.svg?raw"; +import autocompleteIcon from "../../../../../assets/icons/inspect.svg?raw"; const propOrder = ["path", "subject_id", "session_id"]; diff --git a/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedSourceData.js b/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedSourceData.js index 9fca8680c..cb6487423 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedSourceData.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedSourceData.js @@ -11,7 +11,7 @@ import { createGlobalFormModal } from "../../../forms/GlobalFormModal"; import { header } from "../../../forms/utils"; import { Button } from "../../../Button.js"; -import globalIcon from "../../../assets/global.svg?raw"; +import globalIcon from "../../../../../assets/icons/global.svg?raw"; import { baseUrl } from "../../../../server/globals"; diff --git a/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedInspectorPage.js b/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedInspectorPage.js index 73e9b12cf..b9524020a 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedInspectorPage.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedInspectorPage.js @@ -2,7 +2,7 @@ import { html } from "lit"; import { Page } from "../../Page.js"; import { unsafeSVG } from "lit/directives/unsafe-svg.js"; -import folderOpenSVG from "../../../assets/folder_open.svg?raw"; +import folderOpenSVG from "../../../../../assets/icons/folder_open.svg?raw"; import { electron } from "../../../../electron/index.js"; import { getSharedPath, removeFilePaths, truncateFilePaths } from "../../../preview/NWBFilePreview.js"; diff --git a/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedStubPreview.js b/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedStubPreview.js index 39635033c..9ce737ab1 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedStubPreview.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedStubPreview.js @@ -2,7 +2,7 @@ import { html } from "lit"; import { Page } from "../../Page.js"; import { unsafeSVG } from "lit/directives/unsafe-svg.js"; -import folderOpenSVG from "../../../assets/folder_open.svg?raw"; +import folderOpenSVG from "../../../../../assets/icons/folder_open.svg?raw"; import { electron } from "../../../../electron/index.js"; import { NWBFilePreview, getSharedPath } from "../../../preview/NWBFilePreview.js"; diff --git a/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedUpload.js b/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedUpload.js index ad3d54216..92910b69f 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedUpload.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedUpload.js @@ -10,7 +10,7 @@ import { until } from "lit/directives/until.js"; import { Button } from "../../../Button.js"; -import keyIcon from "../../../assets/key.svg?raw"; +import keyIcon from "../../../../../assets/icons/key.svg?raw"; import { validate } from "../../uploads/utils"; import { global } from "../../../../progress/index.js"; diff --git a/src/electron/renderer/src/stories/pages/guided-mode/results/GuidedResults.js b/src/electron/renderer/src/stories/pages/guided-mode/results/GuidedResults.js index 0d09797f9..a041ac937 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/results/GuidedResults.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/results/GuidedResults.js @@ -1,6 +1,6 @@ import { html } from "lit"; import { unsafeSVG } from "lit/directives/unsafe-svg.js"; -import folderOpenSVG from "../../../assets/folder_open.svg?raw"; +import folderOpenSVG from "../../../../../assets/icons/folder_open.svg?raw"; import { Page } from "../../Page.js"; import { getStubArray } from "../options/GuidedStubPreview.js"; diff --git a/src/electron/renderer/src/stories/pages/guided-mode/setup/GuidedSubjects.js b/src/electron/renderer/src/stories/pages/guided-mode/setup/GuidedSubjects.js index 2bce759ff..aa0aaf32f 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/setup/GuidedSubjects.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/setup/GuidedSubjects.js @@ -10,7 +10,7 @@ import { Button } from "../../../Button.js"; import { createGlobalFormModal } from "../../../forms/GlobalFormModal"; import { header } from "../../../forms/utils"; -import globalIcon from "../../../assets/global.svg?raw"; +import globalIcon from "../../../../../assets/icons/global.svg?raw"; export class GuidedSubjectsPage extends Page { constructor(...args) { diff --git a/src/electron/renderer/src/stories/pages/settings/SettingsPage.js b/src/electron/renderer/src/stories/pages/settings/SettingsPage.js index 136a197a3..9f72a1676 100644 --- a/src/electron/renderer/src/stories/pages/settings/SettingsPage.js +++ b/src/electron/renderer/src/stories/pages/settings/SettingsPage.js @@ -15,10 +15,10 @@ import { merge, setUndefinedIfNotDeclared } from "../utils"; import { homeDirectory, notyf, testDataFolderPath } from "../../../dependencies/globals"; import { SERVER_FILE_PATH, electron, path, port, fs } from "../../../electron/index.js"; -import saveSVG from "../../assets/save.svg?raw"; -import folderSVG from "../../assets/folder_open.svg?raw"; -import deleteSVG from "../../assets/delete.svg?raw"; -import generateSVG from "../../assets/restart.svg?raw"; +import saveSVG from "../../../../assets/icons/save.svg?raw"; +import folderSVG from "../../../../assets/icons/folder_open.svg?raw"; +import deleteSVG from "../../../../assets/icons/delete.svg?raw"; +import generateSVG from "../../../../assets/icons/restart.svg?raw"; import { header } from "../../forms/utils"; diff --git a/src/electron/renderer/src/stories/pages/uploads/UploadsPage.js b/src/electron/renderer/src/stories/pages/uploads/UploadsPage.js index 07aea9858..c0ab9e601 100644 --- a/src/electron/renderer/src/stories/pages/uploads/UploadsPage.js +++ b/src/electron/renderer/src/stories/pages/uploads/UploadsPage.js @@ -32,7 +32,7 @@ import { validateDANDIApiKey } from "../../../validation/dandi"; import * as dandi from "dandi"; -import keyIcon from "../../assets/key.svg?raw"; +import keyIcon from "../../../../assets/icons/key.svg?raw"; import { AWARD_VALIDATION_FAIL_MESSAGE, awardNumberValidator, isStaging, validate } from "./utils"; import { createFormModal } from "../../forms/GlobalFormModal"; diff --git a/src/electron/renderer/src/stories/Introduction.mdx b/stories/Introduction.mdx similarity index 100% rename from src/electron/renderer/src/stories/Introduction.mdx rename to stories/Introduction.mdx diff --git a/src/electron/renderer/src/stories/pages/Pages.stories.js b/stories/Pages.stories.js similarity index 91% rename from src/electron/renderer/src/stories/pages/Pages.stories.js rename to stories/Pages.stories.js index 24ddca68f..f72751a46 100644 --- a/src/electron/renderer/src/stories/pages/Pages.stories.js +++ b/stories/Pages.stories.js @@ -1,4 +1,4 @@ -import { dashboard } from "../../pages.js"; +import { dashboard } from "../src/electron/renderer/src/pages.js"; // const options = Object.keys(dashboard.pagesById) diff --git a/src/electron/renderer/src/stories/assets/code-brackets.svg b/stories/assets/code-brackets.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/code-brackets.svg rename to stories/assets/code-brackets.svg diff --git a/src/electron/renderer/src/stories/assets/colors.svg b/stories/assets/colors.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/colors.svg rename to stories/assets/colors.svg diff --git a/src/electron/renderer/src/stories/assets/comments.svg b/stories/assets/comments.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/comments.svg rename to stories/assets/comments.svg diff --git a/src/electron/renderer/src/stories/assets/direction.svg b/stories/assets/direction.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/direction.svg rename to stories/assets/direction.svg diff --git a/src/electron/renderer/src/stories/assets/flow.svg b/stories/assets/flow.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/flow.svg rename to stories/assets/flow.svg diff --git a/src/electron/renderer/src/stories/assets/plugin.svg b/stories/assets/plugin.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/plugin.svg rename to stories/assets/plugin.svg diff --git a/src/electron/renderer/src/stories/assets/repo.svg b/stories/assets/repo.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/repo.svg rename to stories/assets/repo.svg diff --git a/src/electron/renderer/src/stories/assets/stackalt.svg b/stories/assets/stackalt.svg similarity index 100% rename from src/electron/renderer/src/stories/assets/stackalt.svg rename to stories/assets/stackalt.svg diff --git a/src/electron/renderer/src/stories/Accordion.stories.js b/stories/components/Accordion.stories.js similarity index 90% rename from src/electron/renderer/src/stories/Accordion.stories.js rename to stories/components/Accordion.stories.js index c9dd7b05f..781198531 100644 --- a/src/electron/renderer/src/stories/Accordion.stories.js +++ b/stories/components/Accordion.stories.js @@ -1,4 +1,4 @@ -import { Accordion } from "./Accordion"; +import { Accordion } from "../../src/electron/renderer/src/stories/Accordion"; export default { title: "Components/Accordion", diff --git a/src/electron/renderer/src/stories/Button.stories.js b/stories/components/Button.stories.js similarity index 92% rename from src/electron/renderer/src/stories/Button.stories.js rename to stories/components/Button.stories.js index 08dd0185a..eece1e312 100644 --- a/src/electron/renderer/src/stories/Button.stories.js +++ b/stories/components/Button.stories.js @@ -1,4 +1,4 @@ -import { Button } from "./Button"; +import { Button } from "../../src/electron/renderer/src/stories/Button"; // More on how to set up stories at: https://storybook.js.org/docs/7.0/web-components/writing-stories/introduction export default { diff --git a/src/electron/renderer/src/stories/FileSystemSelector.stories.js b/stories/components/FileSystemSelector.stories.js similarity index 87% rename from src/electron/renderer/src/stories/FileSystemSelector.stories.js rename to stories/components/FileSystemSelector.stories.js index 75ba900eb..282598976 100644 --- a/src/electron/renderer/src/stories/FileSystemSelector.stories.js +++ b/stories/components/FileSystemSelector.stories.js @@ -1,4 +1,4 @@ -import { FilesystemSelector } from "./FileSystemSelector"; +import { FilesystemSelector } from "../../src/electron/renderer/src/stories/FileSystemSelector"; export default { title: "Components/Filesystem Selector", diff --git a/src/electron/renderer/src/stories/preview/inspector/InspectorList.stories.js b/stories/components/InspectorList.stories.js similarity index 55% rename from src/electron/renderer/src/stories/preview/inspector/InspectorList.stories.js rename to stories/components/InspectorList.stories.js index bcb331913..16a2b91da 100644 --- a/src/electron/renderer/src/stories/preview/inspector/InspectorList.stories.js +++ b/stories/components/InspectorList.stories.js @@ -1,5 +1,5 @@ -import { InspectorList } from "./InspectorList"; -import testInspectorList from "./test.json"; +import { InspectorList } from "../../src/electron/renderer/src/stories/preview/inspector/InspectorList"; +import testInspectorList from "../data/inspector_output.json"; export default { title: "Components/Inspector List", diff --git a/src/electron/renderer/src/stories/InstanceManager.stories.js b/stories/components/InstanceManager.stories.js similarity index 92% rename from src/electron/renderer/src/stories/InstanceManager.stories.js rename to stories/components/InstanceManager.stories.js index 4442ec890..098fd55be 100644 --- a/src/electron/renderer/src/stories/InstanceManager.stories.js +++ b/stories/components/InstanceManager.stories.js @@ -1,5 +1,5 @@ -import { InstanceManager } from "./InstanceManager"; -import { Modal } from "./Modal"; +import { InstanceManager } from "../../src/electron/renderer/src/stories/InstanceManager"; +import { Modal } from "../../src/electron/renderer/src/stories/Modal"; // More on how to set up stories at: https://storybook.js.org/docs/7.0/web-components/writing-stories/introduction export default { diff --git a/src/electron/renderer/src/stories/JSONSchemaForm.stories.js b/stories/components/JSONSchemaForm.stories.js similarity index 96% rename from src/electron/renderer/src/stories/JSONSchemaForm.stories.js rename to stories/components/JSONSchemaForm.stories.js index bbaa8b48b..3c038f0fa 100644 --- a/src/electron/renderer/src/stories/JSONSchemaForm.stories.js +++ b/stories/components/JSONSchemaForm.stories.js @@ -1,4 +1,4 @@ -import { JSONSchemaForm } from "./JSONSchemaForm"; +import { JSONSchemaForm } from "../../src/electron/renderer/src/stories/JSONSchemaForm"; export default { title: "Components/JSON Schema Form", diff --git a/src/electron/renderer/src/stories/List.stories.js b/stories/components/List.stories.js similarity index 91% rename from src/electron/renderer/src/stories/List.stories.js rename to stories/components/List.stories.js index 9ebb39a89..a40a097d6 100644 --- a/src/electron/renderer/src/stories/List.stories.js +++ b/stories/components/List.stories.js @@ -1,4 +1,4 @@ -import { List } from "./List"; +import { List } from "../../src/electron/renderer/src/stories/List"; export default { title: "Components/List", diff --git a/src/electron/renderer/src/stories/pages/guided-mode/Locate.stories.js b/stories/components/Locate.stories.js similarity index 90% rename from src/electron/renderer/src/stories/pages/guided-mode/Locate.stories.js rename to stories/components/Locate.stories.js index 1cd557b56..d86f73569 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/Locate.stories.js +++ b/stories/components/Locate.stories.js @@ -1,4 +1,4 @@ -import { globalState, PageTemplate } from "./storyStates"; +import { globalState, PageTemplate } from "../pages/storyStates"; export default { title: "Pages/Guided Mode/Locate", diff --git a/src/electron/renderer/src/stories/multiselect/Multiselect.stories.js b/stories/components/Multiselect.stories.js similarity index 87% rename from src/electron/renderer/src/stories/multiselect/Multiselect.stories.js rename to stories/components/Multiselect.stories.js index 46b0ab35b..083afab17 100644 --- a/src/electron/renderer/src/stories/multiselect/Multiselect.stories.js +++ b/stories/components/Multiselect.stories.js @@ -1,4 +1,4 @@ -import { MultiSelectForm } from "./MultiSelectForm.js"; +import { MultiSelectForm } from "../../src/electron/renderer/src/stories/multiselect/MultiSelectForm.js"; export default { title: "Components/Multiselect Form", diff --git a/src/electron/renderer/src/stories/OptionalSection.stories.js b/stories/components/OptionalSection.stories.js similarity index 77% rename from src/electron/renderer/src/stories/OptionalSection.stories.js rename to stories/components/OptionalSection.stories.js index 7cea5356b..f0c3751d4 100644 --- a/src/electron/renderer/src/stories/OptionalSection.stories.js +++ b/stories/components/OptionalSection.stories.js @@ -1,4 +1,4 @@ -import { OptionalSection } from "./OptionalSection"; +import { OptionalSection } from "../../src/electron/renderer/src/stories/OptionalSection"; export default { title: "Components/Optional Section", diff --git a/src/electron/renderer/src/stories/ProgressBar.stories.js b/stories/components/ProgressBar.stories.js similarity index 87% rename from src/electron/renderer/src/stories/ProgressBar.stories.js rename to stories/components/ProgressBar.stories.js index 78da06910..f5b9ab929 100644 --- a/src/electron/renderer/src/stories/ProgressBar.stories.js +++ b/stories/components/ProgressBar.stories.js @@ -1,4 +1,4 @@ -import { ProgressBar } from "./ProgressBar"; +import { ProgressBar } from "../../src/electron/renderer/src/stories/ProgressBar"; export default { title: "Components/Progress Bar", diff --git a/src/electron/renderer/src/stories/Search.stories.js b/stories/components/Search.stories.js similarity index 94% rename from src/electron/renderer/src/stories/Search.stories.js rename to stories/components/Search.stories.js index b78b16f37..a5c200017 100644 --- a/src/electron/renderer/src/stories/Search.stories.js +++ b/stories/components/Search.stories.js @@ -1,4 +1,4 @@ -import { Search } from "./Search"; +import { Search } from "../../src/electron/renderer/src/stories/Search"; // More on how to set up stories at: https://storybook.js.org/docs/7.0/web-components/writing-stories/introduction export default { diff --git a/src/electron/renderer/src/stories/status/StatusBar.stories.js b/stories/components/StatusBar.stories.js similarity index 63% rename from src/electron/renderer/src/stories/status/StatusBar.stories.js rename to stories/components/StatusBar.stories.js index 1188ca171..342325e29 100644 --- a/src/electron/renderer/src/stories/status/StatusBar.stories.js +++ b/stories/components/StatusBar.stories.js @@ -1,8 +1,8 @@ -import { StatusBar } from "./StatusBar"; +import { StatusBar } from "../../src/electron/renderer/src/stories/status/StatusBar"; import { unsafeSVG } from "lit/directives/unsafe-svg.js"; -import pythonSVG from "../assets/python.svg?raw"; -import webAssetSVG from "../assets/web_asset.svg?raw"; -import wifiSVG from "../assets/wifi.svg?raw"; +import pythonSVG from "../../src/electron/renderer/assets/icons/python.svg?raw"; +import webAssetSVG from "../../src/electron/renderer/assets/icons/web_asset.svg?raw"; +import wifiSVG from "../../src/electron/renderer/assets/icons/wifi.svg?raw"; export default { title: "Components/Status Bar", diff --git a/src/electron/renderer/src/stories/Table.stories.js b/stories/components/Table.stories.js similarity index 82% rename from src/electron/renderer/src/stories/Table.stories.js rename to stories/components/Table.stories.js index 14573a5ab..e4272dee4 100644 --- a/src/electron/renderer/src/stories/Table.stories.js +++ b/stories/components/Table.stories.js @@ -1,8 +1,8 @@ -import { Table } from "./Table.js"; +import { Table } from "../../src/electron/renderer/src/stories/Table.js"; -import getSubjectSchema from "../../../../schemas/subject.schema"; -import { SimpleTable } from "./SimpleTable.js"; -import { BasicTable } from "./BasicTable.js"; +import getSubjectSchema from "../../src/schemas/subject.schema"; +import { SimpleTable } from "../../src/electron/renderer/src/stories/SimpleTable.js"; +import { BasicTable } from "../../src/electron/renderer/src/stories/BasicTable.js"; export default { title: "Components/Table", diff --git a/src/electron/renderer/src/stories/preview/inspector/test.json b/stories/inputs/inspector_output.json similarity index 100% rename from src/electron/renderer/src/stories/preview/inspector/test.json rename to stories/inputs/inspector_output.json diff --git a/src/schemas/json/generated/AlphaOmegaRecordingInterface.json b/stories/inputs/interface_schemas/AlphaOmegaRecordingInterface.json similarity index 100% rename from src/schemas/json/generated/AlphaOmegaRecordingInterface.json rename to stories/inputs/interface_schemas/AlphaOmegaRecordingInterface.json diff --git a/src/schemas/json/generated/AudioInterface.json b/stories/inputs/interface_schemas/AudioInterface.json similarity index 100% rename from src/schemas/json/generated/AudioInterface.json rename to stories/inputs/interface_schemas/AudioInterface.json diff --git a/src/schemas/json/generated/AxonaRecordingInterface.json b/stories/inputs/interface_schemas/AxonaRecordingInterface.json similarity index 100% rename from src/schemas/json/generated/AxonaRecordingInterface.json rename to stories/inputs/interface_schemas/AxonaRecordingInterface.json diff --git a/src/schemas/json/generated/BiocamRecordingInterface.json b/stories/inputs/interface_schemas/BiocamRecordingInterface.json similarity index 100% rename from src/schemas/json/generated/BiocamRecordingInterface.json rename to stories/inputs/interface_schemas/BiocamRecordingInterface.json diff --git a/src/schemas/json/generated/BlackrockRecordingInterface.json b/stories/inputs/interface_schemas/BlackrockRecordingInterface.json similarity index 100% rename from src/schemas/json/generated/BlackrockRecordingInterface.json rename to stories/inputs/interface_schemas/BlackrockRecordingInterface.json diff --git a/src/schemas/json/generated/BlackrockSortingInterface.json b/stories/inputs/interface_schemas/BlackrockSortingInterface.json similarity index 100% rename from src/schemas/json/generated/BlackrockSortingInterface.json rename to stories/inputs/interface_schemas/BlackrockSortingInterface.json diff --git a/src/schemas/json/generated/BrukerTiffMultiPlaneConverter.json b/stories/inputs/interface_schemas/BrukerTiffMultiPlaneConverter.json similarity index 100% rename from src/schemas/json/generated/BrukerTiffMultiPlaneConverter.json rename to stories/inputs/interface_schemas/BrukerTiffMultiPlaneConverter.json diff --git a/src/schemas/json/generated/BrukerTiffMultiPlaneImagingInterface.json b/stories/inputs/interface_schemas/BrukerTiffMultiPlaneImagingInterface.json similarity index 100% rename from src/schemas/json/generated/BrukerTiffMultiPlaneImagingInterface.json rename to stories/inputs/interface_schemas/BrukerTiffMultiPlaneImagingInterface.json diff --git a/src/schemas/json/generated/BrukerTiffSinglePlaneConverter.json b/stories/inputs/interface_schemas/BrukerTiffSinglePlaneConverter.json similarity index 100% rename from src/schemas/json/generated/BrukerTiffSinglePlaneConverter.json rename to stories/inputs/interface_schemas/BrukerTiffSinglePlaneConverter.json diff --git a/src/schemas/json/generated/BrukerTiffSinglePlaneImagingInterface.json b/stories/inputs/interface_schemas/BrukerTiffSinglePlaneImagingInterface.json similarity index 100% rename from src/schemas/json/generated/BrukerTiffSinglePlaneImagingInterface.json rename to stories/inputs/interface_schemas/BrukerTiffSinglePlaneImagingInterface.json diff --git a/src/schemas/json/generated/CaimanSegmentationInterface.json b/stories/inputs/interface_schemas/CaimanSegmentationInterface.json similarity index 100% rename from src/schemas/json/generated/CaimanSegmentationInterface.json rename to stories/inputs/interface_schemas/CaimanSegmentationInterface.json diff --git a/src/schemas/json/generated/CellExplorerRecordingInterface.json b/stories/inputs/interface_schemas/CellExplorerRecordingInterface.json similarity index 100% rename from src/schemas/json/generated/CellExplorerRecordingInterface.json rename to stories/inputs/interface_schemas/CellExplorerRecordingInterface.json diff --git a/src/schemas/json/generated/CellExplorerSortingInterface.json b/stories/inputs/interface_schemas/CellExplorerSortingInterface.json similarity index 100% rename from src/schemas/json/generated/CellExplorerSortingInterface.json rename to stories/inputs/interface_schemas/CellExplorerSortingInterface.json diff --git a/src/schemas/json/generated/CnmfeSegmentationInterface.json b/stories/inputs/interface_schemas/CnmfeSegmentationInterface.json similarity index 100% rename from src/schemas/json/generated/CnmfeSegmentationInterface.json rename to stories/inputs/interface_schemas/CnmfeSegmentationInterface.json diff --git a/src/schemas/json/generated/DeepLabCutInterface.json b/stories/inputs/interface_schemas/DeepLabCutInterface.json similarity index 100% rename from src/schemas/json/generated/DeepLabCutInterface.json rename to stories/inputs/interface_schemas/DeepLabCutInterface.json diff --git a/src/schemas/json/generated/EDFRecordingInterface.json b/stories/inputs/interface_schemas/EDFRecordingInterface.json similarity index 100% rename from src/schemas/json/generated/EDFRecordingInterface.json rename to stories/inputs/interface_schemas/EDFRecordingInterface.json diff --git a/src/schemas/json/generated/ExtractSegmentationInterface.json b/stories/inputs/interface_schemas/ExtractSegmentationInterface.json similarity index 100% rename from src/schemas/json/generated/ExtractSegmentationInterface.json rename to stories/inputs/interface_schemas/ExtractSegmentationInterface.json diff --git a/src/schemas/json/generated/FicTracDataInterface.json b/stories/inputs/interface_schemas/FicTracDataInterface.json similarity index 100% rename from src/schemas/json/generated/FicTracDataInterface.json rename to stories/inputs/interface_schemas/FicTracDataInterface.json diff --git a/src/schemas/json/generated/IntanRecordingInterface.json b/stories/inputs/interface_schemas/IntanRecordingInterface.json similarity index 100% rename from src/schemas/json/generated/IntanRecordingInterface.json rename to stories/inputs/interface_schemas/IntanRecordingInterface.json diff --git a/src/schemas/json/generated/KiloSortSortingInterface.json b/stories/inputs/interface_schemas/KiloSortSortingInterface.json similarity index 100% rename from src/schemas/json/generated/KiloSortSortingInterface.json rename to stories/inputs/interface_schemas/KiloSortSortingInterface.json diff --git a/src/schemas/json/generated/MCSRawRecordingInterface.json b/stories/inputs/interface_schemas/MCSRawRecordingInterface.json similarity index 100% rename from src/schemas/json/generated/MCSRawRecordingInterface.json rename to stories/inputs/interface_schemas/MCSRawRecordingInterface.json diff --git a/src/schemas/json/generated/MEArecRecordingInterface.json b/stories/inputs/interface_schemas/MEArecRecordingInterface.json similarity index 100% rename from src/schemas/json/generated/MEArecRecordingInterface.json rename to stories/inputs/interface_schemas/MEArecRecordingInterface.json diff --git a/src/schemas/json/generated/MicroManagerTiffImagingInterface.json b/stories/inputs/interface_schemas/MicroManagerTiffImagingInterface.json similarity index 100% rename from src/schemas/json/generated/MicroManagerTiffImagingInterface.json rename to stories/inputs/interface_schemas/MicroManagerTiffImagingInterface.json diff --git a/src/schemas/json/generated/MiniscopeBehaviorInterface.json b/stories/inputs/interface_schemas/MiniscopeBehaviorInterface.json similarity index 100% rename from src/schemas/json/generated/MiniscopeBehaviorInterface.json rename to stories/inputs/interface_schemas/MiniscopeBehaviorInterface.json diff --git a/src/schemas/json/generated/MiniscopeConverter.json b/stories/inputs/interface_schemas/MiniscopeConverter.json similarity index 100% rename from src/schemas/json/generated/MiniscopeConverter.json rename to stories/inputs/interface_schemas/MiniscopeConverter.json diff --git a/src/schemas/json/generated/MiniscopeImagingInterface.json b/stories/inputs/interface_schemas/MiniscopeImagingInterface.json similarity index 100% rename from src/schemas/json/generated/MiniscopeImagingInterface.json rename to stories/inputs/interface_schemas/MiniscopeImagingInterface.json diff --git a/src/schemas/json/generated/NeuralynxRecordingInterface.json b/stories/inputs/interface_schemas/NeuralynxRecordingInterface.json similarity index 100% rename from src/schemas/json/generated/NeuralynxRecordingInterface.json rename to stories/inputs/interface_schemas/NeuralynxRecordingInterface.json diff --git a/src/schemas/json/generated/NeuroScopeLFPInterface.json b/stories/inputs/interface_schemas/NeuroScopeLFPInterface.json similarity index 100% rename from src/schemas/json/generated/NeuroScopeLFPInterface.json rename to stories/inputs/interface_schemas/NeuroScopeLFPInterface.json diff --git a/src/schemas/json/generated/NeuroScopeRecordingInterface.json b/stories/inputs/interface_schemas/NeuroScopeRecordingInterface.json similarity index 100% rename from src/schemas/json/generated/NeuroScopeRecordingInterface.json rename to stories/inputs/interface_schemas/NeuroScopeRecordingInterface.json diff --git a/src/schemas/json/generated/NeuroScopeSortingInterface.json b/stories/inputs/interface_schemas/NeuroScopeSortingInterface.json similarity index 100% rename from src/schemas/json/generated/NeuroScopeSortingInterface.json rename to stories/inputs/interface_schemas/NeuroScopeSortingInterface.json diff --git a/src/schemas/json/generated/OpenEphysRecordingInterface.json b/stories/inputs/interface_schemas/OpenEphysRecordingInterface.json similarity index 100% rename from src/schemas/json/generated/OpenEphysRecordingInterface.json rename to stories/inputs/interface_schemas/OpenEphysRecordingInterface.json diff --git a/src/schemas/json/generated/PhySortingInterface.json b/stories/inputs/interface_schemas/PhySortingInterface.json similarity index 100% rename from src/schemas/json/generated/PhySortingInterface.json rename to stories/inputs/interface_schemas/PhySortingInterface.json diff --git a/src/schemas/json/generated/PlexonRecordingInterface.json b/stories/inputs/interface_schemas/PlexonRecordingInterface.json similarity index 100% rename from src/schemas/json/generated/PlexonRecordingInterface.json rename to stories/inputs/interface_schemas/PlexonRecordingInterface.json diff --git a/src/schemas/json/generated/PlexonSortingInterface.json b/stories/inputs/interface_schemas/PlexonSortingInterface.json similarity index 100% rename from src/schemas/json/generated/PlexonSortingInterface.json rename to stories/inputs/interface_schemas/PlexonSortingInterface.json diff --git a/src/schemas/json/generated/SLEAPInterface.json b/stories/inputs/interface_schemas/SLEAPInterface.json similarity index 100% rename from src/schemas/json/generated/SLEAPInterface.json rename to stories/inputs/interface_schemas/SLEAPInterface.json diff --git a/src/schemas/json/generated/SbxImagingInterface.json b/stories/inputs/interface_schemas/SbxImagingInterface.json similarity index 100% rename from src/schemas/json/generated/SbxImagingInterface.json rename to stories/inputs/interface_schemas/SbxImagingInterface.json diff --git a/src/schemas/json/generated/ScanImageImagingInterface.json b/stories/inputs/interface_schemas/ScanImageImagingInterface.json similarity index 100% rename from src/schemas/json/generated/ScanImageImagingInterface.json rename to stories/inputs/interface_schemas/ScanImageImagingInterface.json diff --git a/src/schemas/json/generated/Spike2RecordingInterface.json b/stories/inputs/interface_schemas/Spike2RecordingInterface.json similarity index 100% rename from src/schemas/json/generated/Spike2RecordingInterface.json rename to stories/inputs/interface_schemas/Spike2RecordingInterface.json diff --git a/src/schemas/json/generated/SpikeGLXConverterPipe.json b/stories/inputs/interface_schemas/SpikeGLXConverterPipe.json similarity index 100% rename from src/schemas/json/generated/SpikeGLXConverterPipe.json rename to stories/inputs/interface_schemas/SpikeGLXConverterPipe.json diff --git a/src/schemas/json/generated/SpikeGLXNIDQInterface.json b/stories/inputs/interface_schemas/SpikeGLXNIDQInterface.json similarity index 100% rename from src/schemas/json/generated/SpikeGLXNIDQInterface.json rename to stories/inputs/interface_schemas/SpikeGLXNIDQInterface.json diff --git a/src/schemas/json/generated/SpikeGLXRecordingInterface.json b/stories/inputs/interface_schemas/SpikeGLXRecordingInterface.json similarity index 100% rename from src/schemas/json/generated/SpikeGLXRecordingInterface.json rename to stories/inputs/interface_schemas/SpikeGLXRecordingInterface.json diff --git a/src/schemas/json/generated/Suite2pSegmentationInterface.json b/stories/inputs/interface_schemas/Suite2pSegmentationInterface.json similarity index 100% rename from src/schemas/json/generated/Suite2pSegmentationInterface.json rename to stories/inputs/interface_schemas/Suite2pSegmentationInterface.json diff --git a/src/schemas/json/generated/TdtRecordingInterface.json b/stories/inputs/interface_schemas/TdtRecordingInterface.json similarity index 100% rename from src/schemas/json/generated/TdtRecordingInterface.json rename to stories/inputs/interface_schemas/TdtRecordingInterface.json diff --git a/src/schemas/json/generated/TiffImagingInterface.json b/stories/inputs/interface_schemas/TiffImagingInterface.json similarity index 100% rename from src/schemas/json/generated/TiffImagingInterface.json rename to stories/inputs/interface_schemas/TiffImagingInterface.json diff --git a/src/schemas/json/generated/VideoInterface.json b/stories/inputs/interface_schemas/VideoInterface.json similarity index 100% rename from src/schemas/json/generated/VideoInterface.json rename to stories/inputs/interface_schemas/VideoInterface.json diff --git a/src/electron/renderer/src/stories/pages/guided-mode/GuidedHome.stories.js b/stories/pages/GuidedHome.stories.js similarity index 100% rename from src/electron/renderer/src/stories/pages/guided-mode/GuidedHome.stories.js rename to stories/pages/GuidedHome.stories.js diff --git a/src/electron/renderer/src/stories/pages/guided-mode/Metadata.stories.js b/stories/pages/Metadata.stories.js similarity index 100% rename from src/electron/renderer/src/stories/pages/guided-mode/Metadata.stories.js rename to stories/pages/Metadata.stories.js diff --git a/src/electron/renderer/src/stories/pages/guided-mode/NewDataset.stories.js b/stories/pages/NewDataset.stories.js similarity index 100% rename from src/electron/renderer/src/stories/pages/guided-mode/NewDataset.stories.js rename to stories/pages/NewDataset.stories.js diff --git a/src/electron/renderer/src/stories/pages/guided-mode/Preview.stories.js b/stories/pages/Preview.stories.js similarity index 100% rename from src/electron/renderer/src/stories/pages/guided-mode/Preview.stories.js rename to stories/pages/Preview.stories.js diff --git a/src/electron/renderer/src/stories/pages/guided-mode/Review.stories.js b/stories/pages/Review.stories.js similarity index 100% rename from src/electron/renderer/src/stories/pages/guided-mode/Review.stories.js rename to stories/pages/Review.stories.js diff --git a/src/electron/renderer/src/stories/pages/guided-mode/SourceData.stories.js b/stories/pages/SourceData.stories.js similarity index 83% rename from src/electron/renderer/src/stories/pages/guided-mode/SourceData.stories.js rename to stories/pages/SourceData.stories.js index 348d1fc09..dc4daf3e3 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/SourceData.stories.js +++ b/stories/pages/SourceData.stories.js @@ -1,49 +1,49 @@ import { globalState, PageTemplate } from "./storyStates"; -import SpikeGLXRecordingInterfaceSchema from "../../../../../../schemas/json/generated/SpikeGLXRecordingInterface.json"; -import SpikeGLXNIDQInterfaceSchema from "../../../../../../schemas/json/generated/SpikeGLXNIDQInterface.json"; -import PhySortingInterfaceSchema from "../../../../../../schemas/json/generated/PhySortingInterface.json"; -import NeuroScopeRecordingInterfaceSchema from "../../../../../../schemas/json/generated/NeuroScopeRecordingInterface.json"; -import NeuroScopeLFPInterfaceSchema from "../../../../../../schemas/json/generated/NeuroScopeLFPInterface.json"; -import NeuroScopeSortingInterfaceSchema from "../../../../../../schemas/json/generated/NeuroScopeSortingInterface.json"; -import BiocamRecordingInterfaceSchema from "../../../../../../schemas/json/generated/BiocamRecordingInterface.json"; -import IntanRecordingInterfaceSchema from "../../../../../../schemas/json/generated/IntanRecordingInterface.json"; -import OpenEphysRecordingInterfaceSchema from "../../../../../../schemas/json/generated/OpenEphysRecordingInterface.json"; -import BlackrockRecordingInterfaceSchema from "../../../../../../schemas/json/generated/BlackrockRecordingInterface.json"; -import BlackrockSortingInterfaceSchema from "../../../../../../schemas/json/generated/BlackrockSortingInterface.json"; -import CellExplorerSortingInterfaceSchema from "../../../../../../schemas/json/generated/CellExplorerSortingInterface.json"; -import KiloSortSortingInterfaceSchema from "../../../../../../schemas/json/generated/KiloSortSortingInterface.json"; -import TdtRecordingInterfaceSchema from "../../../../../../schemas/json/generated/TdtRecordingInterface.json"; -import Spike2RecordingInterfaceSchema from "../../../../../../schemas/json/generated/Spike2RecordingInterface.json"; -import BrukerTiffSinglePlaneImagingInterfaceSchema from "../../../../../../schemas/json/generated/BrukerTiffSinglePlaneImagingInterface.json"; -import ExtractSegmentationInterfaceSchema from "../../../../../../schemas/json/generated/ExtractSegmentationInterface.json"; -import CnmfeSegmentationInterfaceSchema from "../../../../../../schemas/json/generated/CnmfeSegmentationInterface.json"; -import BrukerTiffMultiPlaneImagingInterfaceSchema from "../../../../../../schemas/json/generated/BrukerTiffMultiPlaneImagingInterface.json"; -import MicroManagerTiffImagingInterfaceSchema from "../../../../../../schemas/json/generated/MicroManagerTiffImagingInterface.json"; -import ScanImageImagingInterfaceSchema from "../../../../../../schemas/json/generated/ScanImageImagingInterface.json"; -import TiffImagingInterfaceSchema from "../../../../../../schemas/json/generated/TiffImagingInterface.json"; -import MiniscopeImagingInterfaceSchema from "../../../../../../schemas/json/generated/MiniscopeImagingInterface.json"; -import SbxImagingInterfaceSchema from "../../../../../../schemas/json/generated/SbxImagingInterface.json"; -import CaimanSegmentationInterfaceSchema from "../../../../../../schemas/json/generated/CaimanSegmentationInterface.json"; -import MCSRawRecordingInterfaceSchema from "../../../../../../schemas/json/generated/MCSRawRecordingInterface.json"; -import MEArecRecordingInterfaceSchema from "../../../../../../schemas/json/generated/MEArecRecordingInterface.json"; -import PlexonRecordingInterfaceSchema from "../../../../../../schemas/json/generated/PlexonRecordingInterface.json"; -import PlexonSortingInterfaceSchema from "../../../../../../schemas/json/generated/PlexonSortingInterface.json"; -import AxonaRecordingInterfaceSchema from "../../../../../../schemas/json/generated/AxonaRecordingInterface.json"; -import VideoInterfaceSchema from "../../../../../../schemas/json/generated/VideoInterface.json"; -import NeuralynxRecordingInterfaceSchema from "../../../../../../schemas/json/generated/NeuralynxRecordingInterface.json"; -import Suite2pSegmentationInterfaceSchema from "../../../../../../schemas/json/generated/Suite2pSegmentationInterface.json"; -import AlphaOmegaRecordingInterfaceSchema from "../../../../../../schemas/json/generated/AlphaOmegaRecordingInterface.json"; -import DeepLabCutInterfaceSchema from "../../../../../../schemas/json/generated/DeepLabCutInterface.json"; -import SLEAPInterfaceSchema from "../../../../../../schemas/json/generated/SLEAPInterface.json"; -import FicTracDataInterfaceSchema from "../../../../../../schemas/json/generated/FicTracDataInterface.json"; -import AudioInterfaceSchema from "../../../../../../schemas/json/generated/AudioInterface.json"; -import MiniscopeBehaviorInterfaceSchema from "../../../../../../schemas/json/generated/MiniscopeBehaviorInterface.json"; -import EDFRecordingInterfaceSchema from "../../../../../../schemas/json/generated/EDFRecordingInterface.json"; -import SpikeGLXConverterPipeSchema from "../../../../../../schemas/json/generated/SpikeGLXConverterPipe.json"; -import BrukerTiffSinglePlaneConverterSchema from "../../../../../../schemas/json/generated/BrukerTiffSinglePlaneConverter.json"; -import BrukerTiffMultiPlaneConverterSchema from "../../../../../../schemas/json/generated/BrukerTiffMultiPlaneConverter.json"; -import MiniscopeConverterSchema from "../../../../../../schemas/json/generated/MiniscopeConverter.json"; -import CellExplorerRecordingInterfaceSchema from "../../../../../../schemas/json/generated/CellExplorerRecordingInterface.json"; +import SpikeGLXRecordingInterfaceSchema from "../inputs/interface_schemas/SpikeGLXRecordingInterface.json"; +import SpikeGLXNIDQInterfaceSchema from "../inputs/interface_schemas/SpikeGLXNIDQInterface.json"; +import PhySortingInterfaceSchema from "../inputs/interface_schemas/PhySortingInterface.json"; +import NeuroScopeRecordingInterfaceSchema from "../inputs/interface_schemas/NeuroScopeRecordingInterface.json"; +import NeuroScopeLFPInterfaceSchema from "../inputs/interface_schemas/NeuroScopeLFPInterface.json"; +import NeuroScopeSortingInterfaceSchema from "../inputs/interface_schemas/NeuroScopeSortingInterface.json"; +import BiocamRecordingInterfaceSchema from "../inputs/interface_schemas/BiocamRecordingInterface.json"; +import IntanRecordingInterfaceSchema from "../inputs/interface_schemas/IntanRecordingInterface.json"; +import OpenEphysRecordingInterfaceSchema from "../inputs/interface_schemas/OpenEphysRecordingInterface.json"; +import BlackrockRecordingInterfaceSchema from "../inputs/interface_schemas/BlackrockRecordingInterface.json"; +import BlackrockSortingInterfaceSchema from "../inputs/interface_schemas/BlackrockSortingInterface.json"; +import CellExplorerSortingInterfaceSchema from "../inputs/interface_schemas/CellExplorerSortingInterface.json"; +import KiloSortSortingInterfaceSchema from "../inputs/interface_schemas/KiloSortSortingInterface.json"; +import TdtRecordingInterfaceSchema from "../inputs/interface_schemas/TdtRecordingInterface.json"; +import Spike2RecordingInterfaceSchema from "../inputs/interface_schemas/Spike2RecordingInterface.json"; +import BrukerTiffSinglePlaneImagingInterfaceSchema from "../inputs/interface_schemas/BrukerTiffSinglePlaneImagingInterface.json"; +import ExtractSegmentationInterfaceSchema from "../inputs/interface_schemas/ExtractSegmentationInterface.json"; +import CnmfeSegmentationInterfaceSchema from "../inputs/interface_schemas/CnmfeSegmentationInterface.json"; +import BrukerTiffMultiPlaneImagingInterfaceSchema from "../inputs/interface_schemas/BrukerTiffMultiPlaneImagingInterface.json"; +import MicroManagerTiffImagingInterfaceSchema from "../inputs/interface_schemas/MicroManagerTiffImagingInterface.json"; +import ScanImageImagingInterfaceSchema from "../inputs/interface_schemas/ScanImageImagingInterface.json"; +import TiffImagingInterfaceSchema from "../inputs/interface_schemas/TiffImagingInterface.json"; +import MiniscopeImagingInterfaceSchema from "../inputs/interface_schemas/MiniscopeImagingInterface.json"; +import SbxImagingInterfaceSchema from "../inputs/interface_schemas/SbxImagingInterface.json"; +import CaimanSegmentationInterfaceSchema from "../inputs/interface_schemas/CaimanSegmentationInterface.json"; +import MCSRawRecordingInterfaceSchema from "../inputs/interface_schemas/MCSRawRecordingInterface.json"; +import MEArecRecordingInterfaceSchema from "../inputs/interface_schemas/MEArecRecordingInterface.json"; +import PlexonRecordingInterfaceSchema from "../inputs/interface_schemas/PlexonRecordingInterface.json"; +import PlexonSortingInterfaceSchema from "../inputs/interface_schemas/PlexonSortingInterface.json"; +import AxonaRecordingInterfaceSchema from "../inputs/interface_schemas/AxonaRecordingInterface.json"; +import VideoInterfaceSchema from "../inputs/interface_schemas/VideoInterface.json"; +import NeuralynxRecordingInterfaceSchema from "../inputs/interface_schemas/NeuralynxRecordingInterface.json"; +import Suite2pSegmentationInterfaceSchema from "../inputs/interface_schemas/Suite2pSegmentationInterface.json"; +import AlphaOmegaRecordingInterfaceSchema from "../inputs/interface_schemas/AlphaOmegaRecordingInterface.json"; +import DeepLabCutInterfaceSchema from "../inputs/interface_schemas/DeepLabCutInterface.json"; +import SLEAPInterfaceSchema from "../inputs/interface_schemas/SLEAPInterface.json"; +import FicTracDataInterfaceSchema from "../inputs/interface_schemas/FicTracDataInterface.json"; +import AudioInterfaceSchema from "../inputs/interface_schemas/AudioInterface.json"; +import MiniscopeBehaviorInterfaceSchema from "../inputs/interface_schemas/MiniscopeBehaviorInterface.json"; +import EDFRecordingInterfaceSchema from "../inputs/interface_schemas/EDFRecordingInterface.json"; +import SpikeGLXConverterPipeSchema from "../inputs/interface_schemas/SpikeGLXConverterPipe.json"; +import BrukerTiffSinglePlaneConverterSchema from "../inputs/interface_schemas/BrukerTiffSinglePlaneConverter.json"; +import BrukerTiffMultiPlaneConverterSchema from "../inputs/interface_schemas/BrukerTiffMultiPlaneConverter.json"; +import MiniscopeConverterSchema from "../inputs/interface_schemas/MiniscopeConverter.json"; +import CellExplorerRecordingInterfaceSchema from "../inputs/interface_schemas/CellExplorerRecordingInterface.json"; export default { title: "Pages/Guided Mode/Source Data", diff --git a/src/electron/renderer/src/stories/pages/guided-mode/Structure.stories.js b/stories/pages/Structure.stories.js similarity index 100% rename from src/electron/renderer/src/stories/pages/guided-mode/Structure.stories.js rename to stories/pages/Structure.stories.js diff --git a/src/electron/renderer/src/stories/pages/guided-mode/Subjects.stories.js b/stories/pages/Subjects.stories.js similarity index 100% rename from src/electron/renderer/src/stories/pages/guided-mode/Subjects.stories.js rename to stories/pages/Subjects.stories.js diff --git a/src/electron/renderer/src/stories/pages/guided-mode/Upload.stories.js b/stories/pages/Upload.stories.js similarity index 100% rename from src/electron/renderer/src/stories/pages/guided-mode/Upload.stories.js rename to stories/pages/Upload.stories.js diff --git a/src/electron/renderer/src/stories/pages/guided-mode/storyStates.ts b/stories/pages/storyStates.ts similarity index 87% rename from src/electron/renderer/src/stories/pages/guided-mode/storyStates.ts rename to stories/pages/storyStates.ts index b8cd76034..8e518cfdf 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/storyStates.ts +++ b/stories/pages/storyStates.ts @@ -1,8 +1,8 @@ -import nwbBaseSchema from "../../../../../../schemas/base-metadata.schema.js"; +import nwbBaseSchema from "../../src/schemas/base-metadata.schema.js"; // import exephysExampleSchema from "../../../../../../schemas/json/ecephys_metadata_schema_example.json"; -import { dashboard } from "../../../pages.js"; -import { activateServer } from "../../../server/globals"; +import { dashboard } from "../../src/electron/renderer/src/pages.js"; +import { activateServer } from "../../src/electron/renderer/src/server/globals.js"; activateServer(); diff --git a/tsconfig.json b/tsconfig.json index a9f56c655..475adc385 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,6 +13,6 @@ "noUnusedParameters": true, "noImplicitReturns": true }, - "include": ["src", "src/schemas", "frontend"], + "include": ["src", "src/schemas", "frontend", "stories/components/Table.stories.js", "stories/components/Search.stories.js", "stories/components/ProgressBar.stories.js", "stories/components/OptionalSection.stories.js", "stories/components/List.stories.js", "stories/components/JSONSchemaForm.stories.js", "stories/components/InstanceManager.stories.js", "stories/components/FileSystemSelector.stories.js", "stories/components/Button.stories.js", "stories/components/Accordion.stories.js", "stories/components/InspectorList.stories.js", "stories/components/StatusBar.stories.js", "stories/components/Multiselect.stories.js", "stories/Pages.stories.js", "stories/pages/GuidedHome.stories.js", "stories/components/Locate.stories.js", "stories/pages/Metadata.stories.js", "stories/pages/NewDataset.stories.js", "stories/pages/Preview.stories.js", "stories/pages/Review.stories.js", "stories/pages/SourceData.stories.js", "stories/pages/Structure.stories.js", "stories/pages/Subjects.stories.js", "stories/pages/Upload.stories.js", "stories/pages/storyStates.ts"], "exclude": ["node_modules"] } From 0c428c79a8c92ae4dd353ae4a4a58c805a5eb931 Mon Sep 17 00:00:00 2001 From: Cody Baker Date: Mon, 27 May 2024 14:17:59 -0400 Subject: [PATCH 02/17] move various endpoints from app to individual apis --- src/pyflask/apis/__init__.py | 3 ++ src/pyflask/apis/dandi.py | 26 ++++++++++++++ src/pyflask/apis/neurosift.py | 68 +++++++++++++++++++++++++++++++++++ src/pyflask/apis/system.py | 26 ++++++++++++++ src/pyflask/app.py | 63 ++++++-------------------------- 5 files changed, 134 insertions(+), 52 deletions(-) create mode 100644 src/pyflask/apis/dandi.py create mode 100644 src/pyflask/apis/neurosift.py create mode 100644 src/pyflask/apis/system.py diff --git a/src/pyflask/apis/__init__.py b/src/pyflask/apis/__init__.py index f492dc7df..714e08c4b 100644 --- a/src/pyflask/apis/__init__.py +++ b/src/pyflask/apis/__init__.py @@ -1,3 +1,6 @@ +from .dandi import dandi_api from .data import data_api from .neuroconv import neuroconv_api +from .neurosift import neurosift_api from .startup import startup_api +from .system import system_api diff --git a/src/pyflask/apis/dandi.py b/src/pyflask/apis/dandi.py new file mode 100644 index 000000000..003852c3a --- /dev/null +++ b/src/pyflask/apis/dandi.py @@ -0,0 +1,26 @@ +"""An API for handling requests to the DANDI Python API.""" + +from typing import List, Tuple, Union + +import flask_restx + +from .utils import catch_exception_and_abort, server_error_responses + +dandi_api = flask_restx.Namespace( + name="dandi", description="Request various static listings from the DANDI Python API." +) + + +@dandi_api.route(rule="/get-recommended-species") +class SupportedSpecies(flask_restx.Resource): + + @dandi_api.doc( + description="Request the list of currently supported species (by Latin Binomial name) for DANDI. Note that any " + "explicit NCBI taxonomy link is also supported.", + responses=server_error_responses(codes=[200, 500]), + ) + @catch_exception_and_abort(api=dandi_api, code=500) + def get(self) -> Union[List[Tuple[List[str], str, str, str]], None]: + from dandi.metadata.util import species_map + + return species_map diff --git a/src/pyflask/apis/neurosift.py b/src/pyflask/apis/neurosift.py new file mode 100644 index 000000000..e43f89746 --- /dev/null +++ b/src/pyflask/apis/neurosift.py @@ -0,0 +1,68 @@ +"""An API for handling file system communication with the standalone Neurosift preview page.""" + +import collections +from typing import Union + +import flask +import flask_restx + +from .utils import ( + abort_if_not_nwb_file, + catch_exception_and_abort, + server_error_responses, +) + +neurosift_api = flask_restx.Namespace( + name="neurosift", description="Handle file system communication with the " "standalone Neurosift preview page." +) + +# A global in-memory registry of NWB files - much faster than asking if file is in a global list +# Keys are NWB files; values are booleans indicating if the base URL has been exposed for that file +neurosift_file_registry = collections.defaultdict(bool) + + +@neurosift_api.route(rule="/files/") +@neurosift_api.doc( + description="Handle adding and fetching NWB files from the global file registry.", +) +class NeurosiftFileManager(flask_restx.Resource): + + @neurosift_api.doc( + description="If the file path has been added to the registry (and therefore sent its base " + "URL), return the absolute file path. This is implicitly called by Neurosift.", + responses=server_error_responses(codes=[200, 400, 500]), + ) + @catch_exception_and_abort(api=neurosift_api, code=500) + def get(self, file_path: str) -> Union[flask.Response, None]: + abort_if_not_nwb_file(file_path=file_path, api=neurosift_api) + if neurosift_file_registry[file_path]: + code = 404 + base_message = server_error_responses(codes=[code])[code] + message = f"{base_message}: The base URL has not been exposed for this NWB file." + api.abort(code=code, message=message) + + return + + # Decode any URL encoding applied to the file path + parsed_file_path = unquote(file_path) + + # Check if the file path is relative + is_file_relative = not isabs(parsed_file_path) + if is_file_relative: + parsed_file_path = f"/{parsed_file_path}" + + return flask.send_file(path_or_file=parsed_file_path) + + @neurosift_api.doc( + description="Add the file to a global in-memory registry (refreshes on App restart) and return " + "the base URL of the newly " + "added file", + responses=server_error_responses(codes=[200, 400, 500]), + ) + @catch_exception_and_abort(api=neurosift_api, code=500) + def post(self, file_path: str) -> Union[str, None]: + abort_if_not_nwb_file(file_path=file_path, api=neurosift_api) + + neurosift_file_registry[file_path] = True + + return request.base_url diff --git a/src/pyflask/apis/system.py b/src/pyflask/apis/system.py new file mode 100644 index 000000000..d384362d9 --- /dev/null +++ b/src/pyflask/apis/system.py @@ -0,0 +1,26 @@ +"""An API for handling general system information.""" + +from typing import Dict, Union + +import flask_restx + +from .utils import catch_exception_and_abort, server_error_responses + +system_api = flask_restx.Namespace(name="system", description="Request various system specific information.") + + +@system_api.route("/cpus") +class SupportedSpecies(flask_restx.Resource): + + @system_api.doc( + description="Request the number of physical and logical cores on the system.", + responses=server_error_responses(codes=[200, 500]), + ) + @catch_exception_and_abort(api=system_api, code=500) + def get(self) -> Union[Dict[str, int], None]: + from psutil import cpu_count + + physical = cpu_count(logical=False) + logical = cpu_count() + + return dict(physical=physical, logical=logical) diff --git a/src/pyflask/app.py b/src/pyflask/app.py index 9929ce625..d0a655ff8 100644 --- a/src/pyflask/app.py +++ b/src/pyflask/app.py @@ -16,7 +16,14 @@ multiprocessing.freeze_support() -from apis import data_api, neuroconv_api, startup_api +from apis import ( + dandi_api, + data_api, + neuroconv_api, + neurosift_api, + startup_api, + system_api, +) from flask import Flask, request, send_file, send_from_directory from flask_cors import CORS from flask_restx import Api, Resource @@ -53,62 +60,14 @@ api.add_namespace(startup_api) api.add_namespace(neuroconv_api) api.add_namespace(data_api) +api.add_namespace(system_api) +api.add_namespace(dandi_api) +api.add_namespace(neurosift_api) api.init_app(app) registered = {} -@app.route("/files") -def get_all_files(): - return list(registered.keys()) - - -@app.route("/files/", methods=["GET", "POST"]) -def handle_file_request(path): - if request.method == "GET": - if registered[path]: - path = unquote(path) - if not isabs(path): - path = f"/{path}" - return send_file(path) - else: - app.abort(404, "Resource is not accessible.") - - else: - if ".nwb" in path: - registered[path] = True - return request.base_url - else: - app.abort(400, str("Path does not point to an NWB file.")) - - -@app.route("/conversions/") -def send_conversions(path): - return send_from_directory(CONVERSION_SAVE_FOLDER_PATH, path) - - -@app.route("/preview/") -def send_preview(path): - return send_from_directory(STUB_SAVE_FOLDER_PATH, path) - - -@app.route("/cpus") -def get_cpu_count(): - from psutil import cpu_count - - physical = cpu_count(logical=False) - logical = cpu_count() - - return dict(physical=physical, logical=logical) - - -@app.route("/get-recommended-species") -def get_species(): - from dandi.metadata.util import species_map - - return species_map - - @api.route("/log") class Log(Resource): @api.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) From 4a153d407811d103308b173e2b0a8a456d5dc35c Mon Sep 17 00:00:00 2001 From: Cody Baker Date: Mon, 27 May 2024 14:28:04 -0400 Subject: [PATCH 03/17] adjust frontend calls --- prettier.config.js | 28 +- src/electron/renderer/src/server/globals.ts | 4 +- .../src/stories/pages/preview/PreviewPage.js | 93 ++--- .../src/stories/preview/NWBFilePreview.js | 357 ++++++++++-------- .../renderer/src/stories/preview/Neurosift.js | 157 ++++---- 5 files changed, 337 insertions(+), 302 deletions(-) diff --git a/prettier.config.js b/prettier.config.js index 6b82af06a..e3490fddf 100644 --- a/prettier.config.js +++ b/prettier.config.js @@ -1,16 +1,16 @@ module.exports = { - arrowParens: "always", - bracketSameLine: false, - bracketSpacing: true, - embeddedLanguageFormatting: "auto", - endOfLine: "auto", - htmlWhitespaceSensitivity: "css", - printWidth: 120, // to match black - quoteProps: "as-needed", - semi: true, - singleQuote: false, - tabWidth: 4, // to match Python - trailingComma: "es5", - useTabs: false, - vueIndentScriptAndStyle: false, + arrowParens: "always", + bracketSameLine: false, + bracketSpacing: true, + embeddedLanguageFormatting: "auto", + endOfLine: "crlf", + htmlWhitespaceSensitivity: "css", + printWidth: 120, // to match black + quoteProps: "as-needed", + semi: true, + singleQuote: false, + tabWidth: 4, // to match Python + trailingComma: "es5", + useTabs: false, + vueIndentScriptAndStyle: false, }; diff --git a/src/electron/renderer/src/server/globals.ts b/src/electron/renderer/src/server/globals.ts index 698243dc9..af69d9af9 100644 --- a/src/electron/renderer/src/server/globals.ts +++ b/src/electron/renderer/src/server/globals.ts @@ -56,7 +56,7 @@ export const activateServer = () => { export const serverGlobals = { species: new Promise((res, rej) => { onServerOpen(() => { - fetch(new URL("get-recommended-species", baseUrl)) + fetch(new URL("dandi/get-recommended-species", baseUrl)) .then((res) => res.json()) .then((species) => { res(species) @@ -67,7 +67,7 @@ export const serverGlobals = { }), cpus: new Promise((res, rej) => { onServerOpen(() => { - fetch(new URL("cpus", baseUrl)) + fetch(new URL("system/cpus", baseUrl)) .then((res) => res.json()) .then((cpus) => { res(cpus) diff --git a/src/electron/renderer/src/stories/pages/preview/PreviewPage.js b/src/electron/renderer/src/stories/pages/preview/PreviewPage.js index a8e6a320a..e0b009c98 100644 --- a/src/electron/renderer/src/stories/pages/preview/PreviewPage.js +++ b/src/electron/renderer/src/stories/pages/preview/PreviewPage.js @@ -6,51 +6,56 @@ import { Neurosift } from "../../preview/Neurosift.js"; import { baseUrl } from "../../../server/globals"; export class PreviewPage extends Page { - header = { - title: "NWB File Exploration", - subtitle: "Visualize your NWB file using Neurosift.", - }; - - constructor(...args) { - super(...args); - this.style.height = "100%"; // Fix main section + header = { + title: "NWB File Exploration", + subtitle: "Visualize your NWB file using Neurosift.", + }; + + constructor(...args) { + super(...args); + this.style.height = "100%"; // Fix main section + } + + updatePath = async (path) => { + if (path) { + const result = await fetch(`${baseUrl}/neurosift/files/${path}`, { + method: "POST", + }).then((res) => res.text()); + if (result) this.neurosift.url = result; + } else this.neurosift.url = undefined; + }; + + neurosift = new Neurosift(); + + input = new JSONSchemaInput({ + path: ["file_path"], + schema: { + type: "string", + format: "file", + description: + "Please provide a file path that you'd like to visualize using Neurosift. The GUIDE will serve this file and access the appropriate URL automatically.", + }, + onUpdate: this.updatePath, + onThrow, + }); + + render() { + const urlFilePath = new URL(document.location).searchParams.get("file"); + + if (urlFilePath) { + this.updatePath(urlFilePath); + this.input.value = urlFilePath; } - updatePath = async (path) => { - if (path) { - const result = await fetch(`${baseUrl}/files/${path}`, { method: "POST" }).then((res) => res.text()); - if (result) this.neurosift.url = result; - } else this.neurosift.url = undefined; - }; - - neurosift = new Neurosift(); - - input = new JSONSchemaInput({ - path: ["file_path"], - schema: { - type: "string", - format: "file", - description: - "Please provide a file path that you'd like to visualize using Neurosift. The GUIDE will serve this file and access the appropriate URL automatically.", - }, - onUpdate: this.updatePath, - onThrow, - }); - - render() { - const urlFilePath = new URL(document.location).searchParams.get("file"); - - if (urlFilePath) { - this.updatePath(urlFilePath); - this.input.value = urlFilePath; - } - - return html` -
- ${this.input} ${this.neurosift} -
- `; - } + return html` +
+ ${this.input} ${this.neurosift} +
+ `; + } } -customElements.get("nwbguide-preview-page") || customElements.define("nwbguide-preview-page", PreviewPage); +customElements.get("nwbguide-preview-page") || + customElements.define("nwbguide-preview-page", PreviewPage); diff --git a/src/electron/renderer/src/stories/preview/NWBFilePreview.js b/src/electron/renderer/src/stories/preview/NWBFilePreview.js index 4bc8b7b71..fa7568ab1 100644 --- a/src/electron/renderer/src/stories/preview/NWBFilePreview.js +++ b/src/electron/renderer/src/stories/preview/NWBFilePreview.js @@ -1,6 +1,6 @@ import { LitElement, css, html } from "lit"; import { InspectorList } from "./inspector/InspectorList"; -import { Neurosift, getURLFromFilePath } from "./Neurosift"; +import { Neurosift } from "./Neurosift"; import { unsafeHTML } from "lit/directives/unsafe-html.js"; import { run } from "../pages/guided-mode/options/utils"; import { until } from "lit/directives/until.js"; @@ -9,183 +9,214 @@ import { path } from "../../electron"; import { FullScreenToggle } from "../FullScreenToggle"; export function getSharedPath(array) { - array = array.map((str) => str.replace(/\\/g, "/")); // Convert to Mac-style path - const mapped = array.map((str) => str.split("/")); - let shared = mapped.shift(); - mapped.forEach((arr, i) => { - for (let j in arr) { - if (arr[j] !== shared[j]) { - shared = shared.slice(0, j); - break; - } - } - }); + array = array.map((str) => str.replace(/\\/g, "/")); // Convert to Mac-style path + const mapped = array.map((str) => str.split("/")); + let shared = mapped.shift(); + mapped.forEach((arr, i) => { + for (let j in arr) { + if (arr[j] !== shared[j]) { + shared = shared.slice(0, j); + break; + } + } + }); - return shared ? path.normalize(shared.join("/")) : ""; // Convert back to OS-specific path + return shared ? path.normalize(shared.join("/")) : ""; // Convert back to OS-specific path } export function truncateFilePaths(items, basepath) { - return items.map((item) => { - item = { ...item }; - item.file_path = item.file_path - .replace(`${basepath}/`, "") // Mac - .replace(`${basepath}\\`, ""); // Windows - return item; - }); + return items.map((item) => { + item = { ...item }; + item.file_path = item.file_path + .replace(`${basepath}/`, "") // Mac + .replace(`${basepath}\\`, ""); // Windows + return item; + }); } export const removeFilePaths = (items) => { - return items.map((item) => { - const copy = { ...item }; - delete copy.file_path; - return copy; - }); + return items.map((item) => { + const copy = { ...item }; + delete copy.file_path; + return copy; + }); }; class NWBPreviewInstance extends LitElement { - constructor({ file }, project) { - super(); - this.file = file; - this.project = project; - - window.addEventListener("online", () => this.requestUpdate()); - window.addEventListener("offline", () => this.requestUpdate()); - } - - render() { - const isOnline = navigator.onLine; - - return isOnline - ? new Neurosift({ url: getURLFromFilePath(this.file, this.project), fullscreen: false }) - : until( - (async () => { - const htmlRep = await run("html", { nwbfile_path: this.file }, { swal: false }); - return unsafeHTML(htmlRep); - })(), - html`Loading HTML representation...` - ); - } + constructor({ file }, project) { + super(); + this.file = file; + this.project = project; + + window.addEventListener("online", () => this.requestUpdate()); + window.addEventListener("offline", () => this.requestUpdate()); + } + + render() { + const isOnline = navigator.onLine; + + if (!isOnline) + return until( + (async () => { + const htmlRep = await run( + "html", + { nwbfile_path: this.file }, + { swal: false }, + ); + return unsafeHTML(htmlRep); + })(), + html`Loading HTML representation...`, + ); + + const neurosift = new Neurosift({ fullscreen: false }); + + // Enable access to the explicit file path + fetch(`${baseUrl}/files/${this.file}`, { method: "POST" }) + .then((res) => res.text()) + .then((result) => { + // Set Neurosift to access the returned URL + if (result) neurosift.url = result; + }); + + return neurosift; + } } -customElements.get("nwb-preview-instance") || customElements.define("nwb-preview-instance", NWBPreviewInstance); +customElements.get("nwb-preview-instance") || + customElements.define("nwb-preview-instance", NWBPreviewInstance); export class NWBFilePreview extends LitElement { - static get styles() { - return css` - :host { - display: block; - width: 100%; - height: 100%; - background: white; - position: relative; - } - - iframe { - width: 100%; - height: 100%; - border: 0; - } - - #inspect { - display: flex; - flex-direction: column; - border-left: 1px solid gray; - box-shadow: -5px 0 5px -5px rgba(0, 0, 0, 0.5); - z-index: 1; - } - `; - } - - constructor({ files = {}, project, inspect = false }) { - super(); - this.project = project; - this.files = files; - this.inspect = inspect; - } - - createInstance = ({ subject, session, info }) => { - return { - subject, - session, - display: () => new NWBPreviewInstance(info, this.project), - }; + static get styles() { + return css` + :host { + display: block; + width: 100%; + height: 100%; + background: white; + position: relative; + } + + iframe { + width: 100%; + height: 100%; + border: 0; + } + + #inspect { + display: flex; + flex-direction: column; + border-left: 1px solid gray; + box-shadow: -5px 0 5px -5px rgba(0, 0, 0, 0.5); + z-index: 1; + } + `; + } + + constructor({ files = {}, project, inspect = false }) { + super(); + this.project = project; + this.files = files; + this.inspect = inspect; + } + + createInstance = ({ subject, session, info }) => { + return { + subject, + session, + display: () => new NWBPreviewInstance(info, this.project), }; + }; + + render() { + const fileArr = Object.entries(this.files) + .map(([subject, v]) => + Object.entries(v).map(([session, info]) => { + return { subject, session, info }; + }), + ) + .flat(); + + const onlyFirstFile = fileArr.length <= 1; + + return html` ${new FullScreenToggle({ target: this })} +
+
+ ${(() => { + if (onlyFirstFile) + return new NWBPreviewInstance(fileArr[0].info, this.project); + else { + const _instances = fileArr.map(this.createInstance); + + const instances = _instances.reduce( + (acc, { subject, session, display }) => { + if (!acc[`sub-${subject}`]) acc[`sub-${subject}`] = {}; + acc[`sub-${subject}`][`ses-${session}`] = display; + return acc; + }, + {}, + ); - render() { - const fileArr = Object.entries(this.files) - .map(([subject, v]) => - Object.entries(v).map(([session, info]) => { - return { subject, session, info }; - }) - ) - .flat(); - - const onlyFirstFile = fileArr.length <= 1; - - return html` ${new FullScreenToggle({ target: this })} -
-
- ${(() => { - if (onlyFirstFile) return new NWBPreviewInstance(fileArr[0].info, this.project); - else { - const _instances = fileArr.map(this.createInstance); - - const instances = _instances.reduce((acc, { subject, session, display }) => { - if (!acc[`sub-${subject}`]) acc[`sub-${subject}`] = {}; - acc[`sub-${subject}`][`ses-${session}`] = display; - return acc; - }, {}); - - return new InstanceManager({ instances }); - } - })()} -
- ${this.inspect - ? html`
-

Inspector Report

- ${until( - (async () => { - const options = {}; // NOTE: Currently options are handled on the Python end until exposed to the user - - const title = "Inspecting your file"; - - const report = onlyFirstFile - ? await run( - "inspect_file", - { nwbfile_path: fileArr[0].info.file, ...options }, - { title } - ) // Inspect the first file - : await run("inspect_folder", { path, ...options }, { title: title + "s" }); // Inspect the folder - - const result = onlyFirstFile - ? { - ...report, - messages: removeFilePaths(report.messages), - } - : { - ...report, - messages: truncateFilePaths( - report.messages, - getSharedPath(fileArr.map(({ info }) => info.file)) - ), - }; - - const items = result.messages; - - const list = new InspectorList({ - items: items, - listStyles: { minWidth: "300px", maxWidth: "350px" }, - emptyMessage: "No issues found.", - }); - list.style.padding = "10px"; - return list; - })(), - html`Loading inspector report...` - )} -
` - : ""} -
`; - } + return new InstanceManager({ instances }); + } + })()} +
+ ${this.inspect + ? html`
+

+ Inspector Report +

+ ${until( + (async () => { + const options = {}; // NOTE: Currently options are handled on the Python end until exposed to the user + + const title = "Inspecting your file"; + + const report = onlyFirstFile + ? await run( + "inspect_file", + { nwbfile_path: fileArr[0].info.file, ...options }, + { title }, + ) // Inspect the first file + : await run( + "inspect_folder", + { path, ...options }, + { title: title + "s" }, + ); // Inspect the folder + + const result = onlyFirstFile + ? { + ...report, + messages: removeFilePaths(report.messages), + } + : { + ...report, + messages: truncateFilePaths( + report.messages, + getSharedPath(fileArr.map(({ info }) => info.file)), + ), + }; + + const items = result.messages; + + const list = new InspectorList({ + items: items, + listStyles: { minWidth: "300px", maxWidth: "350px" }, + emptyMessage: "No issues found.", + }); + list.style.padding = "10px"; + return list; + })(), + html`Loading inspector report...`, + )} +
` + : ""} +
`; + } } -customElements.get("nwb-file-preview") || customElements.define("nwb-file-preview", NWBFilePreview); +customElements.get("nwb-file-preview") || + customElements.define("nwb-file-preview", NWBFilePreview); diff --git a/src/electron/renderer/src/stories/preview/Neurosift.js b/src/electron/renderer/src/stories/preview/Neurosift.js index 8def8c8dd..15bc4beb0 100644 --- a/src/electron/renderer/src/stories/preview/Neurosift.js +++ b/src/electron/renderer/src/stories/preview/Neurosift.js @@ -4,94 +4,93 @@ import { Loader } from "../Loader"; import { FullScreenToggle } from "../FullScreenToggle"; import { baseUrl } from "../../server/globals"; -export function getURLFromFilePath(file, projectName) { - const regexp = new RegExp(`.+(${projectName}.+)`); - return `${baseUrl}/preview/${file.match(regexp)[1]}`; -} - export class Neurosift extends LitElement { - static get styles() { - return css` - :host { - background: white; - width: 100%; - height: 100%; - display: grid; - grid-template-rows: 100%; - grid-template-columns: 100%; - position: relative; - --loader-color: hsl(200, 80%, 50%); - } + static get styles() { + return css` + :host { + background: white; + width: 100%; + height: 100%; + display: grid; + grid-template-rows: 100%; + grid-template-columns: 100%; + position: relative; + --loader-color: hsl(200, 80%, 50%); + } - iframe, - .loader-container { - width: 100%; - height: 100%; - } + iframe, + .loader-container { + width: 100%; + height: 100%; + } - .loader-container { - display: flex; - align-items: center; - justify-content: center; - position: absolute; - top: 0; - left: 0; - } + .loader-container { + display: flex; + align-items: center; + justify-content: center; + position: absolute; + top: 0; + left: 0; + } - .fullscreen-toggle { - display: flex; - position: absolute; - top: 10px; - right: 10px; - padding: 10px; - color: white; - background-color: gainsboro; - border: 1px solid gray; - border-radius: 10px; - cursor: pointer; - } + .fullscreen-toggle { + display: flex; + position: absolute; + top: 10px; + right: 10px; + padding: 10px; + color: white; + background-color: gainsboro; + border: 1px solid gray; + border-radius: 10px; + cursor: pointer; + } - span { - font-size: 14px; - } + span { + font-size: 14px; + } - small { - padding-left: 10px; - } + small { + padding-left: 10px; + } - iframe { - border: 0; - } - `; - } + iframe { + border: 0; + } + `; + } - static get properties() { - return { - url: { type: String, reflect: true }, - }; - } + static get properties() { + return { + url: { type: String, reflect: true }, + }; + } - constructor({ url, fullscreen = true } = {}) { - super(); - this.url = url; - this.fullscreen = fullscreen; - } + constructor({ url, fullscreen = true } = {}) { + super(); + this.url = url; + this.fullscreen = fullscreen; + } - render() { - return this.url - ? html`
- ${new Loader({ message: `Loading Neurosift view...
${this.url}` })} -
- ${this.fullscreen ? new FullScreenToggle({ target: this }) : ""} - ` - : ``; - } + render() { + return this.url + ? html`
+ ${new Loader({ + message: `Loading Neurosift view...
${this.url}`, + })} +
+ ${this.fullscreen ? new FullScreenToggle({ target: this }) : ""} + ` + : ``; + } } -customElements.get("neurosift-iframe") || customElements.define("neurosift-iframe", Neurosift); +customElements.get("neurosift-iframe") || + customElements.define("neurosift-iframe", Neurosift); From 3b2fc5aaa3b952f294742a35cb0d95a82ae1597f Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 27 May 2024 18:30:12 +0000 Subject: [PATCH 04/17] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .storybook/manager.js | 52 +- .storybook/preview.js | 36 +- docs/_static/css/custom.css | 66 +- electron.vite.config.js | 84 +- notarize.js | 70 +- prettier.config.js | 32 +- src/electron/main/application-menu.js | 454 +- src/electron/preload/preload.js | 24 +- src/electron/renderer/assets/css/demo.css | 3204 +- .../renderer/assets/css/fontawesome.css | 10576 +-- src/electron/renderer/assets/css/global.css | 370 +- src/electron/renderer/assets/css/guided.css | 2932 +- .../renderer/assets/css/individualtab.css | 3698 +- src/electron/renderer/assets/css/main.css | 3836 +- .../renderer/assets/css/main_tabs.css | 1070 +- src/electron/renderer/assets/css/nativize.css | 138 +- src/electron/renderer/assets/css/nav.css | 958 +- src/electron/renderer/assets/css/print.css | 74 +- src/electron/renderer/assets/css/section.css | 68 +- src/electron/renderer/assets/css/spur.css | 23782 +++--- .../renderer/assets/css/tablepath.css | 22 +- .../renderer/assets/css/variables.css | 94 +- .../assets/lotties/contact-us-lotties.js | 12726 +-- .../assets/lotties/documentation-lotties.js | 6920 +- src/electron/renderer/assets/lotties/index.js | 19880 ++--- .../assets/lotties/overview-lotties.js | 64426 ++++++++-------- .../renderer/src/dependencies/globals.js | 294 +- .../renderer/src/dependencies/simple.js | 62 +- src/electron/renderer/src/electron/check.js | 6 +- src/electron/renderer/src/electron/index.js | 102 +- src/electron/renderer/src/globals.js | 24 +- src/electron/renderer/src/pages.js | 390 +- src/electron/renderer/src/progress/index.js | 444 +- .../renderer/src/progress/operations.js | 46 +- src/electron/renderer/src/progress/update.js | 128 +- .../renderer/src/stories/Accordion.js | 542 +- .../renderer/src/stories/Accordion.stories.js | 84 +- .../renderer/src/stories/BasicTable.js | 1104 +- src/electron/renderer/src/stories/Button.js | 244 +- .../renderer/src/stories/Button.stories.js | 98 +- src/electron/renderer/src/stories/Chevron.js | 142 +- .../renderer/src/stories/CodeBlock.js | 70 +- .../renderer/src/stories/DandiResults.js | 226 +- .../renderer/src/stories/Dashboard.js | 868 +- .../renderer/src/stories/DateTimeSelector.js | 132 +- .../src/stories/FileSystemSelector.js | 610 +- .../src/stories/FileSystemSelector.stories.js | 70 +- src/electron/renderer/src/stories/Footer.js | 48 +- src/electron/renderer/src/stories/InfoBox.js | 264 +- .../renderer/src/stories/InstanceManager.js | 970 +- .../src/stories/InstanceManager.stories.js | 162 +- .../renderer/src/stories/JSONSchemaForm.js | 2938 +- .../src/stories/JSONSchemaForm.stories.js | 256 +- .../renderer/src/stories/JSONSchemaInput.js | 2558 +- .../renderer/src/stories/List.stories.js | 64 +- src/electron/renderer/src/stories/Main.js | 436 +- .../renderer/src/stories/NavigationSidebar.js | 326 +- .../renderer/src/stories/OptionalSection.js | 246 +- .../src/stories/OptionalSection.stories.js | 30 +- .../src/stories/ProgressBar.stories.js | 60 +- src/electron/renderer/src/stories/Search.js | 1048 +- .../renderer/src/stories/Search.stories.js | 92 +- .../renderer/src/stories/SimpleTable.js | 2064 +- src/electron/renderer/src/stories/Table.js | 1484 +- .../renderer/src/stories/Table.stories.js | 136 +- src/electron/renderer/src/stories/globals.js | 24 +- src/electron/renderer/src/stories/hot.js | 220 +- .../stories/multiselect/MultiSelectForm.js | 316 +- .../multiselect/Multiselect.stories.js | 68 +- .../renderer/src/stories/pages/FormPage.js | 184 +- .../renderer/src/stories/pages/Page.js | 552 +- .../src/stories/pages/Pages.stories.js | 72 +- .../renderer/src/stories/pages/Unsafe.js | 28 +- .../src/stories/pages/contact-us/Contact.js | 98 +- .../pages/documentation/Documentation.js | 226 +- .../pages/getting-started/GettingStarted.js | 174 +- .../renderer/src/stories/pages/globals.js | 2 +- .../stories/pages/guided-mode/GuidedFooter.js | 136 +- .../stories/pages/guided-mode/GuidedHeader.js | 110 +- .../stories/pages/guided-mode/GuidedHome.js | 460 +- .../pages/guided-mode/GuidedHome.stories.js | 28 +- .../stories/pages/guided-mode/GuidedStart.js | 236 +- .../pages/guided-mode/Locate.stories.js | 58 +- .../pages/guided-mode/Metadata.stories.js | 28 +- .../pages/guided-mode/NewDataset.stories.js | 28 +- .../pages/guided-mode/Preview.stories.js | 28 +- .../stories/pages/guided-mode/ProgressCard.js | 242 +- .../pages/guided-mode/Review.stories.js | 28 +- .../pages/guided-mode/SourceData.stories.js | 852 +- .../pages/guided-mode/Structure.stories.js | 28 +- .../pages/guided-mode/Subjects.stories.js | 28 +- .../pages/guided-mode/Upload.stories.js | 28 +- .../pages/guided-mode/data/GuidedMetadata.js | 1200 +- .../guided-mode/data/GuidedPathExpansion.js | 898 +- .../guided-mode/data/GuidedSourceData.js | 768 +- .../pages/guided-mode/data/GuidedStructure.js | 384 +- .../pages/guided-mode/data/ManagedPage.js | 42 +- .../stories/pages/guided-mode/data/utils.js | 252 +- .../options/GuidedInspectorPage.js | 534 +- .../guided-mode/options/GuidedStubPreview.js | 114 +- .../pages/guided-mode/options/GuidedUpload.js | 408 +- .../pages/guided-mode/options/utils.js | 212 +- .../guided-mode/results/GuidedDandiResults.js | 94 +- .../guided-mode/results/GuidedResults.js | 118 +- .../guided-mode/setup/GuidedNewDatasetInfo.js | 252 +- .../pages/guided-mode/setup/GuidedSubjects.js | 410 +- .../pages/guided-mode/setup/Preform.js | 410 +- .../src/stories/pages/inspect/InspectPage.js | 334 +- .../src/stories/pages/inspect/utils.js | 22 +- .../src/stories/pages/preview/PreviewPage.js | 119 +- .../stories/pages/settings/SettingsPage.js | 690 +- .../src/stories/pages/uploads/UploadsPage.js | 890 +- .../renderer/src/stories/pages/utils.js | 154 +- .../src/stories/preview/NWBFilePreview.js | 424 +- .../renderer/src/stories/preview/Neurosift.js | 190 +- .../preview/inspector/InspectorList.js | 478 +- .../inspector/InspectorList.stories.js | 26 +- src/electron/renderer/src/stories/sidebar.js | 488 +- .../src/stories/status/StatusBar.stories.js | 64 +- .../renderer/src/stories/utils/progress.js | 230 +- .../src/stories/utils/useGlobalStyles.js | 32 +- src/electron/renderer/src/validation/index.js | 242 +- src/electron/renderer/utils/url.js | 26 +- tests/testPyinstallerExecutable.js | 116 +- vite.config.js | 24 +- 125 files changed, 94681 insertions(+), 94706 deletions(-) diff --git a/.storybook/manager.js b/.storybook/manager.js index 6310039cd..e3f22b83b 100644 --- a/.storybook/manager.js +++ b/.storybook/manager.js @@ -1,26 +1,26 @@ -// .storybook/manager.js - -import { addons } from "@storybook/addons"; - -addons.setConfig({ - isFullscreen: false, - showNav: true, - showPanel: true, - panelPosition: "bottom", - enableShortcuts: false, - showToolbar: true, - theme: undefined, - selectedPanel: undefined, - initialActive: "sidebar", - sidebar: { - showRoots: false, - collapsedRoots: ["other"], - }, - toolbar: { - title: { hidden: false }, - zoom: { hidden: false }, - eject: { hidden: false }, - copy: { hidden: false }, - fullscreen: { hidden: false }, - }, -}); +// .storybook/manager.js + +import { addons } from "@storybook/addons"; + +addons.setConfig({ + isFullscreen: false, + showNav: true, + showPanel: true, + panelPosition: "bottom", + enableShortcuts: false, + showToolbar: true, + theme: undefined, + selectedPanel: undefined, + initialActive: "sidebar", + sidebar: { + showRoots: false, + collapsedRoots: ["other"], + }, + toolbar: { + title: { hidden: false }, + zoom: { hidden: false }, + eject: { hidden: false }, + copy: { hidden: false }, + fullscreen: { hidden: false }, + }, +}); diff --git a/.storybook/preview.js b/.storybook/preview.js index 22102b8ac..64be3d1f0 100644 --- a/.storybook/preview.js +++ b/.storybook/preview.js @@ -1,18 +1,18 @@ -/** @type { import('@storybook/web-components').Preview } */ -const preview = { - parameters: { - chromatic: { disableSnapshot: true }, - backgrounds: { - default: "light", - }, - actions: { argTypesRegex: "^on[A-Z].*" }, - controls: { - matchers: { - color: /(background|color)$/i, - date: /Date$/, - }, - }, - }, -}; - -export default preview; +/** @type { import('@storybook/web-components').Preview } */ +const preview = { + parameters: { + chromatic: { disableSnapshot: true }, + backgrounds: { + default: "light", + }, + actions: { argTypesRegex: "^on[A-Z].*" }, + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/, + }, + }, + }, +}; + +export default preview; diff --git a/docs/_static/css/custom.css b/docs/_static/css/custom.css index 4e72cecdb..f0baefd23 100644 --- a/docs/_static/css/custom.css +++ b/docs/_static/css/custom.css @@ -1,33 +1,33 @@ -/* Improve spacing */ -.version-switcher__container.dropdown { - margin-left: 10px; -} - -button.btn.version-switcher__button { - margin-bottom: 0px; -} - -/* Show on hover */ -.version-switcher__container.dropdown:hover .dropdown-menu { - display: block; - left: 0; - margin-top: var(--bs-dropdown-spacer); - top: 100%; -} - -.dropdown-menu.show { - display: none; -} - -/* Remove underline and borders */ -button.btn.version-switcher__button:hover { - text-decoration: none; -} - -.version-switcher__menu a.list-group-item { - border: none !important; -} - -.version-switcher__menu a.list-group-item:hover { - text-decoration: none !important; -} +/* Improve spacing */ +.version-switcher__container.dropdown { + margin-left: 10px; +} + +button.btn.version-switcher__button { + margin-bottom: 0px; +} + +/* Show on hover */ +.version-switcher__container.dropdown:hover .dropdown-menu { + display: block; + left: 0; + margin-top: var(--bs-dropdown-spacer); + top: 100%; +} + +.dropdown-menu.show { + display: none; +} + +/* Remove underline and borders */ +button.btn.version-switcher__button:hover { + text-decoration: none; +} + +.version-switcher__menu a.list-group-item { + border: none !important; +} + +.version-switcher__menu a.list-group-item:hover { + text-decoration: none !important; +} diff --git a/electron.vite.config.js b/electron.vite.config.js index 7a37df2e7..21a8b4b8f 100644 --- a/electron.vite.config.js +++ b/electron.vite.config.js @@ -1,42 +1,42 @@ -import { defineConfig } from "electron-vite"; - -import ViteYaml from "@modyfi/vite-plugin-yaml"; - -import { resolve } from "path"; - -const htmlRoot = "src/electron/renderer"; - -export default defineConfig({ - main: { - build: { - rollupOptions: { - input: { - index: resolve(__dirname, "src/electron/main/main.ts"), - }, - }, - }, - }, - preload: { - build: { - rollupOptions: { - input: { - index: resolve(__dirname, "src/electron/preload/preload.js"), - }, - }, - }, - }, - renderer: { - root: `./${htmlRoot}`, - plugins: [ViteYaml()], - build: { - rollupOptions: { - input: { - index: resolve(__dirname, htmlRoot, "index.html"), - }, - output: { - dir: resolve(__dirname, "build", "renderer"), - }, - }, - }, - }, -}); +import { defineConfig } from "electron-vite"; + +import ViteYaml from "@modyfi/vite-plugin-yaml"; + +import { resolve } from "path"; + +const htmlRoot = "src/electron/renderer"; + +export default defineConfig({ + main: { + build: { + rollupOptions: { + input: { + index: resolve(__dirname, "src/electron/main/main.ts"), + }, + }, + }, + }, + preload: { + build: { + rollupOptions: { + input: { + index: resolve(__dirname, "src/electron/preload/preload.js"), + }, + }, + }, + }, + renderer: { + root: `./${htmlRoot}`, + plugins: [ViteYaml()], + build: { + rollupOptions: { + input: { + index: resolve(__dirname, htmlRoot, "index.html"), + }, + output: { + dir: resolve(__dirname, "build", "renderer"), + }, + }, + }, + }, +}); diff --git a/notarize.js b/notarize.js index df6d47862..04932667d 100644 --- a/notarize.js +++ b/notarize.js @@ -1,35 +1,35 @@ -const fs = require("fs"); -const path = require("path"); -require("dotenv").config(); -var electron_notarize = require("@electron/notarize"); - -module.exports = async function (params) { - // Only notarize the app on Mac OS only. - if (process.platform !== "darwin") { - console.log("No notarization needed for current platform. This process is only intended for macOS."); - return; - } - - // Same appId in electron-builder. - let appId = "com.catalystneuro.nwbguide"; - - let appPath = path.join(params.appOutDir, `${params.packager.appInfo.productFilename}.app`); - if (!fs.existsSync(appPath)) { - throw new Error(`Cannot find application at: ${appPath}`); - } - - console.log(`Notarizing ${appId} found at ${appPath}`); - - try { - await electron_notarize.notarize({ - teamId: process.env.teamId, - appPath: appPath, - appleId: process.env.appleId, - appleIdPassword: process.env.appleIdPassword, - }); - } catch (error) { - console.error(error); - } - - console.log(`Done notarizing ${appId}`); -}; +const fs = require("fs"); +const path = require("path"); +require("dotenv").config(); +var electron_notarize = require("@electron/notarize"); + +module.exports = async function (params) { + // Only notarize the app on Mac OS only. + if (process.platform !== "darwin") { + console.log("No notarization needed for current platform. This process is only intended for macOS."); + return; + } + + // Same appId in electron-builder. + let appId = "com.catalystneuro.nwbguide"; + + let appPath = path.join(params.appOutDir, `${params.packager.appInfo.productFilename}.app`); + if (!fs.existsSync(appPath)) { + throw new Error(`Cannot find application at: ${appPath}`); + } + + console.log(`Notarizing ${appId} found at ${appPath}`); + + try { + await electron_notarize.notarize({ + teamId: process.env.teamId, + appPath: appPath, + appleId: process.env.appleId, + appleIdPassword: process.env.appleIdPassword, + }); + } catch (error) { + console.error(error); + } + + console.log(`Done notarizing ${appId}`); +}; diff --git a/prettier.config.js b/prettier.config.js index e3490fddf..7346f7949 100644 --- a/prettier.config.js +++ b/prettier.config.js @@ -1,16 +1,16 @@ -module.exports = { - arrowParens: "always", - bracketSameLine: false, - bracketSpacing: true, - embeddedLanguageFormatting: "auto", - endOfLine: "crlf", - htmlWhitespaceSensitivity: "css", - printWidth: 120, // to match black - quoteProps: "as-needed", - semi: true, - singleQuote: false, - tabWidth: 4, // to match Python - trailingComma: "es5", - useTabs: false, - vueIndentScriptAndStyle: false, -}; +module.exports = { + arrowParens: "always", + bracketSameLine: false, + bracketSpacing: true, + embeddedLanguageFormatting: "auto", + endOfLine: "crlf", + htmlWhitespaceSensitivity: "css", + printWidth: 120, // to match black + quoteProps: "as-needed", + semi: true, + singleQuote: false, + tabWidth: 4, // to match Python + trailingComma: "es5", + useTabs: false, + vueIndentScriptAndStyle: false, +}; diff --git a/src/electron/main/application-menu.js b/src/electron/main/application-menu.js index 24f1f27cc..3bf6f00cd 100644 --- a/src/electron/main/application-menu.js +++ b/src/electron/main/application-menu.js @@ -1,227 +1,227 @@ -import { BrowserWindow, Menu, app } from "electron"; - -let template = [ - { - label: "Edit", - submenu: [ - { - label: "Undo", - accelerator: "CmdOrCtrl+Z", - role: "undo", - }, - { - label: "Redo", - accelerator: "Shift+CmdOrCtrl+Z", - role: "redo", - }, - { - type: "separator", - }, - { - label: "Cut", - accelerator: "CmdOrCtrl+X", - role: "cut", - }, - { - label: "Copy", - accelerator: "CmdOrCtrl+C", - role: "copy", - }, - { - label: "Paste", - accelerator: "CmdOrCtrl+V", - role: "paste", - }, - { - label: "Select All", - accelerator: "CmdOrCtrl+A", - role: "selectall", - }, - ], - }, - { - label: "View", - submenu: [ - { - label: "Reload", - accelerator: "CmdOrCtrl+R", - click: (item, focusedWindow) => { - if (focusedWindow) { - // on reload, start fresh and close any old - // open secondary windows - if (focusedWindow.id === 1) { - BrowserWindow.getAllWindows().forEach((win) => { - if (win.id > 1) win.close(); - }); - } - focusedWindow.reload(); - } - }, - }, - { - label: "Toggle Full Screen", - accelerator: (() => { - if (process.platform === "darwin") { - return "Ctrl+Command+F"; - } else { - return "F11"; - } - })(), - click: (item, focusedWindow) => { - if (focusedWindow) { - focusedWindow.setFullScreen(!focusedWindow.isFullScreen()); - } - }, - }, - { - label: "Toggle Developer Tools", - accelerator: (() => { - if (process.platform === "darwin") { - return "Alt+Command+I"; - } else { - return "Ctrl+Shift+I"; - } - })(), - click: (item, focusedWindow) => { - if (focusedWindow) { - focusedWindow.toggleDevTools(); - } - }, - }, - { - type: "separator", - }, - ], - }, - { - label: "Window", - role: "window", - submenu: [ - { - label: "Minimize", - accelerator: "CmdOrCtrl+M", - role: "minimize", - }, - { - label: "Close", - accelerator: "CmdOrCtrl+W", - role: "close", - }, - { - type: "separator", - }, - ], - }, -]; - -function addUpdateMenuItems(items, position) { - if (process.mas) return; - - const version = app.getVersion(); - let updateItems = [ - { - label: `Version ${version}`, - enabled: false, - }, - ]; - - items.splice.apply(items, [position, 0].concat(updateItems)); -} - -function findReopenMenuItem() { - const menu = Menu.getApplicationMenu(); - if (!menu) return; - - let reopenMenuItem; - menu.items.forEach((item) => { - if (item.submenu) { - item.submenu.items.forEach((item) => { - if (item.key === "reopenMenuItem") { - reopenMenuItem = item; - } - }); - } - }); - return reopenMenuItem; -} - -if (process.platform === "darwin") { - const name = app.getName(); - template.unshift({ - label: name, - submenu: [ - { - label: `About ${name}`, - role: "about", - }, - { - type: "separator", - }, - { - label: "Services", - role: "services", - submenu: [], - }, - { - type: "separator", - }, - { - label: `Hide ${name}`, - accelerator: "Command+H", - role: "hide", - }, - { - label: "Hide Others", - accelerator: "Command+Alt+H", - role: "hideothers", - }, - { - label: "Show All", - role: "unhide", - }, - { - type: "separator", - }, - { - label: "Quit", - accelerator: "Command+Q", - click: () => { - app.quit(); - }, - }, - ], - }); - - // Window menu. - template[3].submenu.push( - { - type: "separator", - }, - { - label: "Bring All to Front", - role: "front", - } - ); - - addUpdateMenuItems(template[0].submenu, 1); -} - -if (process.platform === "win32") { - const helpMenu = template[template.length - 1].submenu; - addUpdateMenuItems(helpMenu, 0); -} - -app.on("ready", () => { - const menu = Menu.buildFromTemplate(template); - Menu.setApplicationMenu(menu); -}); - -app.on("browser-window-created", () => { - let reopenMenuItem = findReopenMenuItem(); - if (reopenMenuItem) reopenMenuItem.enabled = false; -}); - -app.on("window-all-closed", () => { - let reopenMenuItem = findReopenMenuItem(); - if (reopenMenuItem) reopenMenuItem.enabled = true; -}); +import { BrowserWindow, Menu, app } from "electron"; + +let template = [ + { + label: "Edit", + submenu: [ + { + label: "Undo", + accelerator: "CmdOrCtrl+Z", + role: "undo", + }, + { + label: "Redo", + accelerator: "Shift+CmdOrCtrl+Z", + role: "redo", + }, + { + type: "separator", + }, + { + label: "Cut", + accelerator: "CmdOrCtrl+X", + role: "cut", + }, + { + label: "Copy", + accelerator: "CmdOrCtrl+C", + role: "copy", + }, + { + label: "Paste", + accelerator: "CmdOrCtrl+V", + role: "paste", + }, + { + label: "Select All", + accelerator: "CmdOrCtrl+A", + role: "selectall", + }, + ], + }, + { + label: "View", + submenu: [ + { + label: "Reload", + accelerator: "CmdOrCtrl+R", + click: (item, focusedWindow) => { + if (focusedWindow) { + // on reload, start fresh and close any old + // open secondary windows + if (focusedWindow.id === 1) { + BrowserWindow.getAllWindows().forEach((win) => { + if (win.id > 1) win.close(); + }); + } + focusedWindow.reload(); + } + }, + }, + { + label: "Toggle Full Screen", + accelerator: (() => { + if (process.platform === "darwin") { + return "Ctrl+Command+F"; + } else { + return "F11"; + } + })(), + click: (item, focusedWindow) => { + if (focusedWindow) { + focusedWindow.setFullScreen(!focusedWindow.isFullScreen()); + } + }, + }, + { + label: "Toggle Developer Tools", + accelerator: (() => { + if (process.platform === "darwin") { + return "Alt+Command+I"; + } else { + return "Ctrl+Shift+I"; + } + })(), + click: (item, focusedWindow) => { + if (focusedWindow) { + focusedWindow.toggleDevTools(); + } + }, + }, + { + type: "separator", + }, + ], + }, + { + label: "Window", + role: "window", + submenu: [ + { + label: "Minimize", + accelerator: "CmdOrCtrl+M", + role: "minimize", + }, + { + label: "Close", + accelerator: "CmdOrCtrl+W", + role: "close", + }, + { + type: "separator", + }, + ], + }, +]; + +function addUpdateMenuItems(items, position) { + if (process.mas) return; + + const version = app.getVersion(); + let updateItems = [ + { + label: `Version ${version}`, + enabled: false, + }, + ]; + + items.splice.apply(items, [position, 0].concat(updateItems)); +} + +function findReopenMenuItem() { + const menu = Menu.getApplicationMenu(); + if (!menu) return; + + let reopenMenuItem; + menu.items.forEach((item) => { + if (item.submenu) { + item.submenu.items.forEach((item) => { + if (item.key === "reopenMenuItem") { + reopenMenuItem = item; + } + }); + } + }); + return reopenMenuItem; +} + +if (process.platform === "darwin") { + const name = app.getName(); + template.unshift({ + label: name, + submenu: [ + { + label: `About ${name}`, + role: "about", + }, + { + type: "separator", + }, + { + label: "Services", + role: "services", + submenu: [], + }, + { + type: "separator", + }, + { + label: `Hide ${name}`, + accelerator: "Command+H", + role: "hide", + }, + { + label: "Hide Others", + accelerator: "Command+Alt+H", + role: "hideothers", + }, + { + label: "Show All", + role: "unhide", + }, + { + type: "separator", + }, + { + label: "Quit", + accelerator: "Command+Q", + click: () => { + app.quit(); + }, + }, + ], + }); + + // Window menu. + template[3].submenu.push( + { + type: "separator", + }, + { + label: "Bring All to Front", + role: "front", + } + ); + + addUpdateMenuItems(template[0].submenu, 1); +} + +if (process.platform === "win32") { + const helpMenu = template[template.length - 1].submenu; + addUpdateMenuItems(helpMenu, 0); +} + +app.on("ready", () => { + const menu = Menu.buildFromTemplate(template); + Menu.setApplicationMenu(menu); +}); + +app.on("browser-window-created", () => { + let reopenMenuItem = findReopenMenuItem(); + if (reopenMenuItem) reopenMenuItem.enabled = false; +}); + +app.on("window-all-closed", () => { + let reopenMenuItem = findReopenMenuItem(); + if (reopenMenuItem) reopenMenuItem.enabled = true; +}); diff --git a/src/electron/preload/preload.js b/src/electron/preload/preload.js index f50612b71..6b31656c3 100644 --- a/src/electron/preload/preload.js +++ b/src/electron/preload/preload.js @@ -1,12 +1,12 @@ -const electron = require("electron"); - -// Expose ipcRenderer -if (process.contextIsolated) { - try { - electron.contextBridge.exposeInMainWorld("electron", electron); - } catch (error) { - console.error(error); - } -} else { - globalThis.electron = electron; -} +const electron = require("electron"); + +// Expose ipcRenderer +if (process.contextIsolated) { + try { + electron.contextBridge.exposeInMainWorld("electron", electron); + } catch (error) { + console.error(error); + } +} else { + globalThis.electron = electron; +} diff --git a/src/electron/renderer/assets/css/demo.css b/src/electron/renderer/assets/css/demo.css index f959c0a4d..ac3228ca9 100755 --- a/src/electron/renderer/assets/css/demo.css +++ b/src/electron/renderer/assets/css/demo.css @@ -1,1602 +1,1602 @@ -/* Demo */ - -button { - cursor: pointer !important; -} - -body.waiting * { - cursor: progress; -} - -.demo:first-of-type { - margin-top: 2rem; -} - -.demo:last-of-type { - margin-bottom: 2rem; -} -@media (min-width: 940px) { - .demo:last-of-type { - margin-bottom: 4rem; - } -} - -.demo-wrapper { - position: relative; - max-width: 95%; - margin: 0 auto; -} - -/* Toggle Button ----------------------------- */ - -.demo-toggle-button { - position: relative; - display: block; - margin: 0.5em; - padding: 0.5em 1.5em; - line-height: 1.5; - font: inherit; - font-weight: 600; - font-size: 1.3em; - text-align: left; - border: none; - color: inherit; - background-color: transparent; - transition: border-color 0.12s; - outline: none; - cursor: pointer; - /*border: 2px solid black;*/ -} - -.demo-toggle-button:before, -.demo-toggle-button:after { - content: ""; - position: absolute; - left: 0; - width: 2px; - height: 50%; - background-color: hsl(0, 0%, 88%); - transition: transform 0.2s cubic-bezier(0.4, 0.1, 0, 1); -} - -.demo-toggle-button:before { - top: 0; - transform-origin: bottom center; - transform: translateX(0.7em) rotate(-30deg) scale(0.75); -} - -.demo-toggle-button:after { - bottom: 0; - transform-origin: top center; - transform: translateX(0.7em) rotate(30deg) scale(0.75); -} - -.is-open .demo-toggle-button:before, -.is-open .demo-toggle-button:after { - transform: rotate(0deg); -} - -.demo-toggle-button:focus:before, -.demo-toggle-button:focus:after { - background-color: currentColor; -} - -/* Meta info */ - -.demo-meta { - margin-top: 0.2em; - font-size: 12px; - font-weight: 300; - text-transform: uppercase; - color: var(--color-subtle); -} - -.demo-meta-divider { - margin: 0 0.5em; -} - -/* Demo Box ----------------------------- */ - -.demo-box { - display: none; - position: relative; - padding: 2em; - margin-top: 1em; - margin-bottom: 2em; - border-radius: 6px; - /*border: 1px solid var(--color-border);*/ - border: 1px solid hsla(190, 60%, 36%, 1); - background-color: var(--color-bg); - /*background-color: transparent;*/ -} - -.demo-box:before { - content: ""; - position: absolute; - top: -11px; - width: 20px; - height: 20px; - background-color: inherit; - border-top: inherit; - border-right: inherit; - border-top-right-radius: 3px; - transform: rotate(-45deg); -} - -.is-open .demo-box { - display: block; - animation: demo-box-fade-in 0.2s cubic-bezier(0, 0.2, 0.2, 0.96); -} -@keyframes demo-box-fade-in { - 0% { - opacity: 0; - transform: translateY(-20px); - } - 100% { - opacity: 1; - transform: translateY(0); - } -} - -.demo-box > p:first-child { - margin-top: 0; -} - -.demo-box h5 { - font-size: 1em; - margin-bottom: 0.6em; - color: black; -} - -.demo-box p { - padding: 5px; -} - -/* Demo Controls ----------------------------- */ - -.demo-controls { - display: flex; - align-items: center; - margin: 10px; -} - -.div-dd-info { - display: flex; - flex-direction: row; - align-items: center; - justify-content: flex-start; - margin: 10px 0; - background-color: white; -} - -.div-dd-info.subjects { - margin: 0; -} - -.ui.accordion .content.active { - display: contents; -} - -.ui.styled.accordion { - width: 90% !important; - margin: 0 auto; - max-width: 850px; -} - -.sub.accordion { - box-shadow: none !important; -} - -#title-optional-age { - background: #fff !important; - padding-top: 0 !important; - padding-bottom: 20px !important; - font-size: 14px !important; -} - -.ui.input { - width: 100%; -} - -.ui.selection.dropdown { - height: auto !important; - width: 100% !important; - border-bottom: 1px solid rgba(34, 36, 38, 0.15) !important; - border-left: none !important; - border-right: none !important; - border-top: none !important; - border-radius: 0 !important; -} - -.demo-controls-head { - display: flex; - align-items: left; - margin: 10px; - width: 18%; - float: right; - font-size: 14px; - margin: 10px 0; - /* padding-right: 10px; */ - padding: 4px 6px; - text-align: right; - vertical-align: middle; - color: #a0a0a0; - font: bold; - font-weight: 500; -} - -.demo-controls-head.mandatory { - width: fit-content; - padding: 0; - margin: 0; -} - -.row.mandatory { - line-height: 1; -} - -.demo-controls-body { - display: flex; - width: 75%; - float: right; - height: fit-content; -} - -.demo-controls-end { - display: flex; - width: 30px; - height: 30px; -} - -.tooltipnew.demo-controls-end.subjects { - display: none; -} - -.demo-button-next-step { - align-self: flex-start; - margin-right: 1em; - border: 2px solid; - border-radius: 4px; - font: inherit; - font-size: 1.2em; - padding: 0.4em 1.2em; - color: inherit; - background-color: transparent; - cursor: pointer; -} - -.demo-button { - border: 2px solid; - border-radius: 4px; - font: inherit; - font-size: 1.1em; - padding: 0.4em 1.2em; - color: inherit; - background-color: transparent; - width: 180px; - cursor: pointer; -} - -.demo-button:focus { - outline: none; - background-color: white; -} - -.demo-button:active { - border-color: var(--color-border); - transform: scale(1.1); -} - -.demo-button:hover { - background-color: hsla(190, 60%, 36%, 1); - color: white; - border-color: var(--color-accent); -} - -.demo-button-table { - align-self: flex-start; - margin-right: 0.5em; - margin-left: 0.5em; - margin-top: 0.5em; - margin-bottom: 0.5em; - border: 1px solid; - border-radius: 4px; - font: inherit; - font-size: 0.8em; - padding: 0.1em 1.1em; - color: grey; - background-color: transparent; - width: 80px; - cursor: pointer; -} - -.demo-button-table:hover { - background-color: hsla(0, 0%, 0%, 0.1); -} - -.demo-button-table.drag { - border: 1px dashed; -} - -.demo-button-table.drag:hover { - background-color: transparent; -} - -.demo-button-prev-next { - align-self: flex-start; - padding: 4px 4px 4px 4px; - border: 2px solid; - border-radius: 4px; - font: inherit; - font-size: 1.1em; - color: inherit; - background-color: transparent; - width: 110px; - cursor: pointer; - text-align: center; -} - -.demo-button-prev-next:hover { - background-color: var(--color-light-green); - color: white; - outline: none; - /* border-color: var(--color-accent); */ -} - -.demo-button-prev-next:active { - outline: none; - /* border-color: var(--color-border); */ - transform: scale(1.1); - - /* background-color: white; */ - /* color: hsla(190,60%,36%,1) */ -} - -.demo-input { - flex: 1; - border: 2px solid var(--color-border); - border-radius: 4px; - font: inherit; - font-size: 1.2em; - padding: 0.4em 0.8em; - color: inherit; - background-color: transparent; -} - -.demo-input:focus { - outline: none; - border-color: hsl(0, 0%, 70%); - background-color: white; -} - -.demo-response { - flex: 1; - word-break: break-word; - font: inherit; - padding: 8px 12px; - border: 1px solid; - border-radius: 4px; -} - -.demo-response-upload { - width: 70%; - padding: 8px 12px; - border: 1px solid; - border-radius: 4px; - font: inherit; -} - -.smooth-appear { - opacity: 1; - transition: opacity 0.5s ease-in-out; -} - -.disappear { - opacity: 0; -} -.demo-button.smooth-disappear:focus { - outline: inherit; - border-color: inherit; - background-color: inherit; -} - -button.download-metadata:hover { - background-color: hsla(192, 69%, 23%); -} - -.milestone-upload-text { - width: 200px; - height: 34px; - float: left; - text-align: center; - outline: none; - box-shadow: none; - border: none; - border-color: var(--color-light-green); - background-clip: border-box; - cursor: pointer; -} - -.button-milestone-upload { - width: 60px; - height: 34px; - float: right; - border-radius: 0; - padding: 0 0 0 0; - margin: 0 0 0 0; - background-color: var(--color-light-green); - color: white; - box-sizing: none; - cursor: pointer; - background-clip: none; - border: none; -} - -.button-milestone-upload:active { - transform: scale(1.1); -} - -.download-image { - border: 0; - float: left; - margin-right: 15px; - width: 20px; - height: 20px; -} - -/* Current interactive UI's main content */ -.dash-app { - /* padding-bottom: 10px !important; */ -} - -.dash-title { - font-family: "Montserrat", sans-serif; - margin-bottom: 0 !important; - color: #222c3c; - opacity: 0.9; - font-style: bold; - font-size: 17px; - border-bottom: 1px solid #000; - padding: 0; - margin: 0; - text-align: left; -} - -.dash-content { - display: flex; - background: var(--color-bg-white); - padding-top: 0 !important; - padding-bottom: 10px !important; - z-index: 5000; - padding-right: 15px !important; - padding-left: 5px !important; - height: 100%; -} - -.dash-content.show { - display: flex; - visibility: visible; -} - -.dash-content.main { - flex-direction: column; - justify-content: center; -} - -/* ProTip ----------------------------- */ -.download { - background: #f5f5f5; - color: var(--color-bg-white); - display: table-cell; - margin: 0; - text-align: center; - vertical-align: middle; -} - -.demo-protip { - margin-top: 2rem; - padding: 1.5rem 2rem 2rem 2rem; - border: 1px solid hsla(0, 0%, 0%, 0.06); - border-radius: 6px; - background: var(--color-accent) linear-gradient(hsla(0, 0%, 100%, 0.85), hsla(0, 0%, 100%, 0.85)); -} - -.demo-protip h2 { - margin: 0 0 0.5rem 0; -} - -.demo-protip strong { - font-weight: 600; -} - -.labelradio { - color: #303030; -} - -input[type="radio"].with-style:checked ~ label, -input[type="checkbox"].with-style:checked ~ label { - font-size: 1.1em; - font-weight: bold; - color: inherit; - margin-top: -1px; - vertical-align: middle; -} - -.labelradio-manifest { - color: #303030; -} - -.datasetsaveoption { - display: none; -} - -.filepath { - display: block; - margin: 0; - padding: 0.5em 1.5em; -} - -textarea.outputprint { - width: 100%; - max-width: 100%; - min-width: 100%; - font: inherit; - max-height: 40px; - resize: vertical; -} - -/* Dropdowns */ -select.my-dropdown { - width: 60%; - padding: 8px 12px; - border: 1px solid #dbdbdb; - border-radius: 5px; - background-color: var(--color-bg-white); - font: inherit; - height: 38px; -} - -table { - width: 100%; - border-spacing: 0; - border: 1px solid hsla(0, 0%, 0%, 0.08); - border-width: 0 1px 1px 0; -} - -th { - background-color: hsla(0, 0%, 50%, 0.06); -} - -/* th:hover { - background-color: lightblue; -} */ - -th, -td { - text-align: center; - border: 1px solid hsla(0, 0%, 0%, 0.08); - border-width: 1px 0 0 1px; - padding: 10px; -} - -th.table-header { - text-indent: 40%; - text-align: left; -} - -table.pathtable { - margin: auto; - width: 100%; - max-width: 100%; - min-width: 100%; - font: inherit; - word-break: break-word; - border-collapse: collapse; - border: 1px solid var(--color-bg-white); - border-style: hidden; -} - -table.pathtable tr td:first-child { - width: 40%; - max-width: 40%; - min-width: 40%; -} - -table.pathtable tr th:nth-child(2) { - width: 50%; -} - -table.pathtable tr td:nth-child(2) { - width: 40%; - max-width: 40%; - min-width: 40%; -} - -table.pathtable td { - text-align: center; -} - -input[type="button"].save { - display: none; -} - -input[type="text"].inputpath { - margin-right: 10px; - width: 40%; -} - -table.pathtable tr.open { - display: none; -} - -/* Metadata table */ -table.table-save-metadata { - margin: auto; - width: 70%; - max-width: 100%; - min-width: 100%; - font: inherit; - word-break: break-word; - border-collapse: collapse; - border: 1px solid var(--color-bg-white); - border-style: hidden; - text-align: left; -} - -.table-header-metadata { - /* text-indent: 10%; */ - text-align: left; - cursor: pointer; - font-size: 15px; - width: 70%; -} - -/* YouTube video frames */ -.video-container { - position: relative; - padding-bottom: 56.25%; - padding-top: 30px; - height: 0; - overflow: hidden; -} - -.video-container iframe, -.video-container object, -.video-container embed { - margin-left: 5em; - margin-top: 1em; - position: absolute; - top: 0; - left: 0; - width: 80%; - height: 80%; -} -/* -.te-editor.te-tab-active { - width: 100% !important; -} - -.te-md-splitter { - display: none !important -} */ - -.tooltipnew { - position: relative; - display: inline-block; - float: right; - font-size: 1em; - font-style: italic; - /* font-weight: bold; */ - color: black; - padding: 8px 12px; - z-index: 1; -} - -.tooltipnew.contributor { - float: none; - font-style: normal; - padding: 3px; - padding-bottom: 0px; -} - -.tooltipnew.contributor img { - height: 14px; - width: 14px; -} - -.tooltiptext.contributor { - right: 80%; - max-width: 250px; - overflow-y: auto; - overflow-x: hidden; - max-height: 200px; - font-size: 14px; - font-style: italic; -} -.tooltipnew .tooltiptext { - visibility: hidden; - width: 400px; - background-color: black; - color: var(--color-bg-white); - text-align: left; - border-radius: 6px; - padding: 5px 7px; - position: absolute; - z-index: 1700; - top: -5px; - right: 110%; - font-weight: bold; -} - -.tooltipnew .tooltiptext::after { - content: ""; - position: absolute; - top: 50%; - left: 100%; - margin-top: -5px; - border-width: 5px; - border-style: solid; - border-color: transparent transparent transparent black; -} -.tooltipnew:hover .tooltiptext { - visibility: visible; - top: 50%; - transform: translateY(-50%); -} - -/* Progress bar */ -#div-curate-meter { - border: 2px solid #000; - width: 100%; -} -#div-curate-progress-bar { - background: #333; - height: 25px; - width: 0%; -} -/* Progress bar */ -#div-meter { - border: 2px solid #000; - width: 100%; -} -#div-progress-bar { - background: #333; - height: 25px; - width: 0%; -} - -#status-bar-curate-progress { - position: absolute; - bottom: 0px; - width: 100%; - color: black; - padding: 15px; -} - -.nav-status-bar::-webkit-progress-value { - transition: width 1s; -} - -.nav-status-bar[value] { - width: 100%; - height: 10px; - -webkit-appearance: none; - appearance: none; -} - -.nav-status-bar[value]::-webkit-progress-bar { - background-color: #eee; - border-radius: 2px; - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25) inset; -} - -.nav-status-bar[value]::-webkit-progress-value { - background-image: - -webkit-linear-gradient( - -45deg, - transparent 33%, - rgba(0, 0, 0, 0.1) 33%, - rgba(0, 0, 0, 0.1) 66%, - transparent 66% - ), - -webkit-linear-gradient(left, hsl(339, 90%, 30%), hsl(190, 60%, 36%)); - border-radius: 2px; - background-size: - 35px 25px, - 100% 100%, - 100% 100%; -} - -.progresstrack::-webkit-progress-value { - transition: width 1s; -} - -progress.progresstrack[value] { - width: 100%; - height: 25px; - -webkit-appearance: none; - appearance: none; -} - -progress.progresstrack[value]::-webkit-progress-bar { - background-color: #eee; - border-radius: 2px; - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25) inset; -} - -progress.progresstrack[value]::-webkit-progress-value { - background-image: - -webkit-linear-gradient( - -45deg, - transparent 33%, - rgba(0, 0, 0, 0.1) 33%, - rgba(0, 0, 0, 0.1) 66%, - transparent 66% - ), - -webkit-linear-gradient(left, hsl(339, 90%, 30%), hsl(190, 60%, 36%)); - border-radius: 2px; - background-size: - 35px 25px, - 100% 100%, - 100% 100%; -} - -/*https://codepen.io/holdencreative/pen/vEVbwv*/ -.progressdiv { - position: relative; - height: 15px; - display: none; - width: 25%; - background-color: hsla(190, 60%, 36%, 30%); - border-radius: 2px; - background-clip: padding-box; - margin: 0 auto; - overflow: hidden; -} - -.progressdiv .indeterminatebar { - background-color: var(--color-accent); -} - -.progressdiv .indeterminatebar:before { - content: ""; - position: absolute; - background-color: var(--color-accent); - top: 0; - left: 0; - bottom: 0; - will-change: left, right; - -webkit-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; - animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; -} - -.progressdiv .indeterminatebar:after { - content: ""; - position: absolute; - background-color: inherit; - top: 0; - left: 0; - bottom: 0; - will-change: left, right; - -webkit-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; - animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; - -webkit-animation-delay: 1.15s; - animation-delay: 1.15s; -} - -@-webkit-keyframes indeterminate { - 0% { - left: -35%; - right: 100%; - } - 60% { - left: 100%; - right: -90%; - } - 100% { - left: 100%; - right: -90%; - } -} -@keyframes indeterminate { - 0% { - left: -35%; - right: 100%; - } - 60% { - left: 100%; - right: -90%; - } - 100% { - left: 100%; - right: -90%; - } -} -@-webkit-keyframes indeterminate-short { - 0% { - left: -200%; - right: 100%; - } - 60% { - left: 107%; - right: -8%; - } - 100% { - left: 107%; - right: -8%; - } -} -@keyframes indeterminate-short { - 0% { - left: -200%; - right: 100%; - } - 60% { - left: 107%; - right: -8%; - } - 100% { - left: 107%; - right: -8%; - } -} - -.message-icon { - width: 18px; - height: 29px; - margin-left: 3px; -} - -#editor-container { - height: 375px; - background-color: white; - color: black; -} - -.te-preview { - min-width: 270px !important; -} - -.te-preview .tui-editor-contents { - word-wrap: break-word !important; -} - -#canvas { - height: 600px; - width: 600px; - background-color: var(--color-bg-white); - cursor: default; - border: 1px solid black; -} - -#current-banner-img { - max-width: 100%; -} - -.banner-image { - background-color: gray; - background-image: repeating-linear-gradient( - 45deg, - transparent, - transparent 35px, - rgba(255, 255, 255, 0.5) 35px, - rgba(255, 255, 255, 0.5) 70px - ); - float: right; - width: 100%; -} - -.img-container { - /* Never limit the container height here */ - max-width: 90%; - width: 90%; - margin: 0 auto; -} - -.img-container img { - display: block; - /* This is important */ - max-width: 100%; - background-color: white; -} - -#cleared { - clear: both; -} - -/* Cropped Image */ -.container-cropped-image { - display: flex; - font-weight: bold; - /* width: 270px; */ - height: 35px; - float: left; - color: black; - border-radius: 6px; -} - -.crop-image-text { - line-height: 35px; -} - -#form-banner-height { - line-height: 35px; -} - -.banner-image-size { - float: left; - height: 35px; - display: -ms-flexbox; -} -.banner-image-size.input { - height: 34px; - float: right; - background-clip: padding-box; -} - -.preview { - overflow: hidden; - width: 300px; - height: 300px; - /* padding-bottom: 30%;*/ -} - -#div-img-container-holder, -#guided-div-img-container-holder { - color: black; - text-align: center; - font-size: 20px; - font-weight: bold; - vertical-align: middle; - text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.4); - padding: 5% 5%; - height: 250px; -} - -#div-banner-img-preview-holder { - color: black; - text-align: center; - font-size: 20px; - font-weight: bold; - vertical-align: middle; - text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.5); -} - -label.input-banner-img { - padding-left: 10px; - color: black; - float: left; -} - -/* Submission file Preparation */ -.my-dropdown-metadata { - float: right; - background-clip: padding-box; - width: 100%; - /* width:60%; */ - padding: 6px 8px; - margin-bottom: 10px; - border: 1px solid black; - border-radius: 5px; - background-color: var(--color-bg-white); - font: inherit; -} - -.my-dropdown-metadata.ds:focus { - border-color: black; - border-radius: 5px; - background-color: #fffafa; - /* box-shadow: 0 0 1px 3px rgba(59, 153, 252, .7); */ - /* box-shadow: 0 0 0 3px -moz-mac-focusring; */ - /* color: #222; */ - outline: none; -} - -.tagify { - width: 100%; - border: 1px solid rgba(34, 36, 38, 0.15) !important; - /* border-left: 2px solid var(--color-light-green) !important; */ - border-radius: 5px !important; - background-color: white !important; - --tag--max-width: 250px !important; -} - -.tagify.tagify--focus { - outline-color: rgb(229, 151, 0) !important; - /* outline: none !important; */ - background-color: rgb(255, 250, 250) !important; -} - -/* Submission file container */ -.form-container { - float: left; - font-size: 14px; - /* padding-right: 10px; */ - padding: 4px 6px; - width: 150px; - text-align: left; - vertical-align: middle; - color: #a0a0a0; - font: bold; - font-weight: 500; -} - -.form-container-input { - float: right; - font-weight: 400; - /* background-clip: padding-box; */ - line-height: 2; - width: 100%; - border: 1px solid #c0c0c0; - margin-bottom: 10px; - border-radius: 5px; - transition: var(--color-light-green) 0.25s ease-out; - padding: 4px 6px; -} - -input::-webkit-calendar-picker-indicator { - display: none; -} - -.form-container-input-bf:focus { - background-color: #fffafa; - /* border-left: 2px solid #c0c0c0; */ - border-radius: 0; -} - -.form-container-input-bf:disabled { - background-color: #e5e5e5 !important; -} - -.form-container-textarea { - float: right; - font-weight: 400; - font: inherit; - width: 100%; - border: 1px solid #c0c0c0; - /* border-left: 2px solid var(--color-light-green); */ - /* margin-bottom: 10px; */ - border-radius: 5px; - transition: var(--color-light-green) 0.25s ease-out; - padding: 4px 6px; - min-height: 60px; - /* max-height:60px; */ - resize: vertical; -} - -.form-container-textarea:focus { - background-color: #fffafa; - border-left: 2px solid #c0c0c0; - border-radius: 0; -} - -/* Text areas for error messages - Validator */ -.span-validate-local { - font-weight: 400; - font: inherit; - border-radius: 5px; - transition: var(--color-light-green) 0.25s ease-out; - height: auto; - display: none; -} - -.errors { - color: red; -} - -.passes { - color: green; -} - -.warnings { - color: orange; -} - -/* BF Add account */ -.form-container-input-bf { - float: right; - font-weight: 400; - background-clip: padding-box; - line-height: 1.5; - width: 100%; - /* margin-bottom: 10px; */ - border: 1px solid #c0c0c0; - border-left: 2px solid var(--color-light-green); - border-radius: 5px; - transition: var(--color-light-green) 0.25s ease-out; - padding: 4px 6px; -} - -.form-container-input-bf disabled { - background: #f5f5f5; -} - -/* Dataset Description file container */ -.form-container-ds { - float: left; - font-size: 14px; - margin: 10px 0; - /* padding-right: 10px; */ - padding: 4px 6px; - width: 180px; - text-align: left; - vertical-align: middle; - color: #a0a0a0; - font: bold; - font-weight: 500; -} - -.multisteps-form__progress { - display: none; - grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); - margin-bottom: 30px; -} - -.multisteps-form__progress-btn { - transition-property: all; - transition-duration: 0.15s; - transition-timing-function: linear; - transition-delay: 0s; - position: relative; - padding-top: 20px; - color: var(--color-light-green); - text-indent: -9999px; - border: none; - background-color: transparent; - outline: none !important; - cursor: pointer; -} - -@media (min-width: 500px) { - .multisteps-form__progress-btn { - text-indent: 0; - } -} -.multisteps-form__progress-btn:before { - position: absolute; - top: 0; - left: 50%; - display: block; - width: 15px; - height: 15px; - content: ""; - -webkit-transform: translateX(-50%); - transform: translateX(-50%); - transition: - all 0.15s linear 0s, - -webkit-transform 0.15s cubic-bezier(0.05, 1.09, 0.16, 1.4) 0s; - transition: - all 0.15s linear 0s, - transform 0.15s cubic-bezier(0.05, 1.09, 0.16, 1.4) 0s; - transition: - all 0.15s linear 0s, - transform 0.15s cubic-bezier(0.05, 1.09, 0.16, 1.4) 0s, - -webkit-transform 0.15s cubic-bezier(0.05, 1.09, 0.16, 1.4) 0s; - border: 2px solid currentColor; - border-radius: 50%; - background-color: var(--color-bg-white); - box-sizing: border-box; - z-index: 3; -} -.multisteps-form__progress-btn:after { - position: absolute; - top: 5px; - left: calc(-50% - 13px / 2); - transition-property: all; - transition-duration: 0.15s; - transition-timing-function: linear; - transition-delay: 0s; - display: block; - width: 100%; - height: 2px; - content: ""; - background-color: currentColor; - z-index: 1; - color: var; - color: inherit; -} -.multisteps-form__progress-btn:first-child:after { - display: none; -} -.multisteps-form__progress-btn.js-active1 { - color: var(--color-light-green); -} -.multisteps-form__progress-btn.js-active2 { - color: var(--color-light-green); -} - -.multisteps-form__progress-btn.js-active1:before { - -webkit-transform: translateX(-50%) scale(1.2); - transform: translateX(-50%) scale(1.5); - background-color: var(--color-light-green); -} -.multisteps-form__progress-btn.js-active2:before { - -webkit-transform: translateX(-50%) scale(1.2); - transform: translateX(-50%) scale(1.5); - background-color: var(--color-light-green); -} - -/* Hide all steps by default: */ -.ds-tabs { - display: none; -} - -/* Make circles that indicate the steps of the form: */ -.ds-step { - height: 12px; - width: 12px; - margin: 0 2px; - background-color: blue; - border: none; - border-radius: 50%; - display: inline-block; - opacity: 0.5; -} - -/* Mark the active step: */ -.ds-step.active { - opacity: 1; -} - -/* Mark the steps that are finished and valid: */ -.ds-step.finish { - background-color: var(--color-light-green); -} - -.switch-field { - display: flex; - margin-bottom: 36px; - overflow: hidden; -} - -.input-switch { - padding-top: 10px; - display: none; - overflow: hidden; - position: absolute; -} - -.label-switch { - width: 200px; - display: block; - float: left; - padding: 8px 4px; - padding-bottom: 20px; - margin-right: 20px; - margin-left: 10px; - line-height: 1; - text-align: center; - border-bottom: 2px solid #dcdcdc; - border-top-left-radius: 5px; - border-top-right-radius: 5px; - font-weight: bold; - font-size: 16px; - color: #696969; -} - -.label-switch:hover { - cursor: pointer; - color: var(--color-light-green); -} - -#addAccount:checked ~ #div-add-account, -#selectAccount:checked ~ #div-select-account { - display: block; -} - -#createDataset:checked ~ #div-create-dataset, -#renameDataset:checked ~ #div-rename-dataset { - display: block; -} - -.input-switch:checked + label { - border-bottom: 2px solid var(--color-light-green); - text-decoration: none; - color: var(--color-light-green); - font-size: 16px; - border-radius: 0; -} - -.switch { - position: relative; - display: inline-block; - width: 52px; - height: 28px; -} - -.switch input { - opacity: 0; - width: 0; - height: 0; -} - -.slider { - position: absolute; - cursor: pointer; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: #ccc; - -webkit-transition: 0.4s; - transition: 0.4s; -} - -.slider:before { - position: absolute; - content: ""; - height: 17px; - width: 17px; - left: 2px; - bottom: 2px; - background-color: white; - -webkit-transition: 0.4s; - transition: 0.4s; -} - -input:checked + .slider { - background-color: var(--color-light-green); -} - -input:focus + .slider { - box-shadow: 0 0 1px #0bc260; -} - -input:checked + .slider:before { - transform: translateX(25px); -} - -/* Rounded sliders */ -.slider.round { - border-radius: 25px; -} - -.slider.round.manifest { - width: 60px; - height: 30px; -} - -.slider.round.manifest:before { - width: 26px; - height: 26px; -} - -input:checked + .slider.round.manifest:before { - transform: translateX(30px); -} - -.slider.round:before { - border-radius: 50%; -} - -/* Validate list styling */ -.validatelist { - list-style: none; -} - -.validatelist li { - padding-bottom: 15px; - position: relative; -} - -.validatelist li :before { - position: absolute; - left: -30px; -} - -.validatelist li.bulletpass :before { - content: "\2705"; -} - -.validatelist li.bulletwarning :before { - content: "\26A0"; - font-size: 20px; -} - -.validatelist li.bulleterror :before { - content: "\274C"; -} - -/* CONTEXT MENU */ -/* .menu { - background-color: var(--color-bg-white); - color: #333; - list-style: none; - position: absolute; - padding: 6px 0; - text-align: left; - border-radius: 5px; - cursor: pointer; - word-wrap: break-word; - margin-bottom: 0; - margin-top: 0; - margin-right: 4px; - z-index: 1000; - border: 1px solid rgba(0,0,0,.15); - -} - -.menu.reg-folder { - min-width: 110px; - height: auto; -} - -.menu.reg-folder li { - padding: 3px 10px; - background-color: var(--color-bg-white); - font-size: 13px; - font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; -} - -.menu.file { - min-width: 180px; - height: auto; -} */ - -/* .menu.file li { - padding: 3px 10px; - background-color: var(--color-bg-white); - color: black; - font-size: 13px; - font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; -} - -.menu.file li:hover{ - background-color: #F0F0F0 ; -} - -.menu.reg-folder li:hover{ - background-color: #F0F0F0 ; -} - -.menu.high-level-folder li:hover{ - background-color: #F0F0F0; - -} */ - -/* .menu.high-level-folder.off { - display: none; - top: -200%; - left: -200%; - /* margin-bottom: 0; */ -/* } - -.menu.high-level-folder { - width: 110px; - height: auto; -} */ - -/* .menu.high-level-folder li { - padding: 3px 10px; - background-color: var(--color-bg-white); - font-size: 13px; - font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; - -} */ - -/* .menu.high-level-folder li:hover{ - background-color: #fffff; -} */ - -/* .menu.reg-folder.off{ - display: none; - top: -200%; - left: -200%; -} - -.menu.file.off{ - display: none; - top: -210%; - left: -210%; -} - -.menu.file li { - min-width: 180px; - background-color: var(--color-bg-white) -} */ - -.sub-text { - color: #898989 !important; - font-size: 12px; - margin-top: 10px; -} +/* Demo */ + +button { + cursor: pointer !important; +} + +body.waiting * { + cursor: progress; +} + +.demo:first-of-type { + margin-top: 2rem; +} + +.demo:last-of-type { + margin-bottom: 2rem; +} +@media (min-width: 940px) { + .demo:last-of-type { + margin-bottom: 4rem; + } +} + +.demo-wrapper { + position: relative; + max-width: 95%; + margin: 0 auto; +} + +/* Toggle Button ----------------------------- */ + +.demo-toggle-button { + position: relative; + display: block; + margin: 0.5em; + padding: 0.5em 1.5em; + line-height: 1.5; + font: inherit; + font-weight: 600; + font-size: 1.3em; + text-align: left; + border: none; + color: inherit; + background-color: transparent; + transition: border-color 0.12s; + outline: none; + cursor: pointer; + /*border: 2px solid black;*/ +} + +.demo-toggle-button:before, +.demo-toggle-button:after { + content: ""; + position: absolute; + left: 0; + width: 2px; + height: 50%; + background-color: hsl(0, 0%, 88%); + transition: transform 0.2s cubic-bezier(0.4, 0.1, 0, 1); +} + +.demo-toggle-button:before { + top: 0; + transform-origin: bottom center; + transform: translateX(0.7em) rotate(-30deg) scale(0.75); +} + +.demo-toggle-button:after { + bottom: 0; + transform-origin: top center; + transform: translateX(0.7em) rotate(30deg) scale(0.75); +} + +.is-open .demo-toggle-button:before, +.is-open .demo-toggle-button:after { + transform: rotate(0deg); +} + +.demo-toggle-button:focus:before, +.demo-toggle-button:focus:after { + background-color: currentColor; +} + +/* Meta info */ + +.demo-meta { + margin-top: 0.2em; + font-size: 12px; + font-weight: 300; + text-transform: uppercase; + color: var(--color-subtle); +} + +.demo-meta-divider { + margin: 0 0.5em; +} + +/* Demo Box ----------------------------- */ + +.demo-box { + display: none; + position: relative; + padding: 2em; + margin-top: 1em; + margin-bottom: 2em; + border-radius: 6px; + /*border: 1px solid var(--color-border);*/ + border: 1px solid hsla(190, 60%, 36%, 1); + background-color: var(--color-bg); + /*background-color: transparent;*/ +} + +.demo-box:before { + content: ""; + position: absolute; + top: -11px; + width: 20px; + height: 20px; + background-color: inherit; + border-top: inherit; + border-right: inherit; + border-top-right-radius: 3px; + transform: rotate(-45deg); +} + +.is-open .demo-box { + display: block; + animation: demo-box-fade-in 0.2s cubic-bezier(0, 0.2, 0.2, 0.96); +} +@keyframes demo-box-fade-in { + 0% { + opacity: 0; + transform: translateY(-20px); + } + 100% { + opacity: 1; + transform: translateY(0); + } +} + +.demo-box > p:first-child { + margin-top: 0; +} + +.demo-box h5 { + font-size: 1em; + margin-bottom: 0.6em; + color: black; +} + +.demo-box p { + padding: 5px; +} + +/* Demo Controls ----------------------------- */ + +.demo-controls { + display: flex; + align-items: center; + margin: 10px; +} + +.div-dd-info { + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; + margin: 10px 0; + background-color: white; +} + +.div-dd-info.subjects { + margin: 0; +} + +.ui.accordion .content.active { + display: contents; +} + +.ui.styled.accordion { + width: 90% !important; + margin: 0 auto; + max-width: 850px; +} + +.sub.accordion { + box-shadow: none !important; +} + +#title-optional-age { + background: #fff !important; + padding-top: 0 !important; + padding-bottom: 20px !important; + font-size: 14px !important; +} + +.ui.input { + width: 100%; +} + +.ui.selection.dropdown { + height: auto !important; + width: 100% !important; + border-bottom: 1px solid rgba(34, 36, 38, 0.15) !important; + border-left: none !important; + border-right: none !important; + border-top: none !important; + border-radius: 0 !important; +} + +.demo-controls-head { + display: flex; + align-items: left; + margin: 10px; + width: 18%; + float: right; + font-size: 14px; + margin: 10px 0; + /* padding-right: 10px; */ + padding: 4px 6px; + text-align: right; + vertical-align: middle; + color: #a0a0a0; + font: bold; + font-weight: 500; +} + +.demo-controls-head.mandatory { + width: fit-content; + padding: 0; + margin: 0; +} + +.row.mandatory { + line-height: 1; +} + +.demo-controls-body { + display: flex; + width: 75%; + float: right; + height: fit-content; +} + +.demo-controls-end { + display: flex; + width: 30px; + height: 30px; +} + +.tooltipnew.demo-controls-end.subjects { + display: none; +} + +.demo-button-next-step { + align-self: flex-start; + margin-right: 1em; + border: 2px solid; + border-radius: 4px; + font: inherit; + font-size: 1.2em; + padding: 0.4em 1.2em; + color: inherit; + background-color: transparent; + cursor: pointer; +} + +.demo-button { + border: 2px solid; + border-radius: 4px; + font: inherit; + font-size: 1.1em; + padding: 0.4em 1.2em; + color: inherit; + background-color: transparent; + width: 180px; + cursor: pointer; +} + +.demo-button:focus { + outline: none; + background-color: white; +} + +.demo-button:active { + border-color: var(--color-border); + transform: scale(1.1); +} + +.demo-button:hover { + background-color: hsla(190, 60%, 36%, 1); + color: white; + border-color: var(--color-accent); +} + +.demo-button-table { + align-self: flex-start; + margin-right: 0.5em; + margin-left: 0.5em; + margin-top: 0.5em; + margin-bottom: 0.5em; + border: 1px solid; + border-radius: 4px; + font: inherit; + font-size: 0.8em; + padding: 0.1em 1.1em; + color: grey; + background-color: transparent; + width: 80px; + cursor: pointer; +} + +.demo-button-table:hover { + background-color: hsla(0, 0%, 0%, 0.1); +} + +.demo-button-table.drag { + border: 1px dashed; +} + +.demo-button-table.drag:hover { + background-color: transparent; +} + +.demo-button-prev-next { + align-self: flex-start; + padding: 4px 4px 4px 4px; + border: 2px solid; + border-radius: 4px; + font: inherit; + font-size: 1.1em; + color: inherit; + background-color: transparent; + width: 110px; + cursor: pointer; + text-align: center; +} + +.demo-button-prev-next:hover { + background-color: var(--color-light-green); + color: white; + outline: none; + /* border-color: var(--color-accent); */ +} + +.demo-button-prev-next:active { + outline: none; + /* border-color: var(--color-border); */ + transform: scale(1.1); + + /* background-color: white; */ + /* color: hsla(190,60%,36%,1) */ +} + +.demo-input { + flex: 1; + border: 2px solid var(--color-border); + border-radius: 4px; + font: inherit; + font-size: 1.2em; + padding: 0.4em 0.8em; + color: inherit; + background-color: transparent; +} + +.demo-input:focus { + outline: none; + border-color: hsl(0, 0%, 70%); + background-color: white; +} + +.demo-response { + flex: 1; + word-break: break-word; + font: inherit; + padding: 8px 12px; + border: 1px solid; + border-radius: 4px; +} + +.demo-response-upload { + width: 70%; + padding: 8px 12px; + border: 1px solid; + border-radius: 4px; + font: inherit; +} + +.smooth-appear { + opacity: 1; + transition: opacity 0.5s ease-in-out; +} + +.disappear { + opacity: 0; +} +.demo-button.smooth-disappear:focus { + outline: inherit; + border-color: inherit; + background-color: inherit; +} + +button.download-metadata:hover { + background-color: hsla(192, 69%, 23%); +} + +.milestone-upload-text { + width: 200px; + height: 34px; + float: left; + text-align: center; + outline: none; + box-shadow: none; + border: none; + border-color: var(--color-light-green); + background-clip: border-box; + cursor: pointer; +} + +.button-milestone-upload { + width: 60px; + height: 34px; + float: right; + border-radius: 0; + padding: 0 0 0 0; + margin: 0 0 0 0; + background-color: var(--color-light-green); + color: white; + box-sizing: none; + cursor: pointer; + background-clip: none; + border: none; +} + +.button-milestone-upload:active { + transform: scale(1.1); +} + +.download-image { + border: 0; + float: left; + margin-right: 15px; + width: 20px; + height: 20px; +} + +/* Current interactive UI's main content */ +.dash-app { + /* padding-bottom: 10px !important; */ +} + +.dash-title { + font-family: "Montserrat", sans-serif; + margin-bottom: 0 !important; + color: #222c3c; + opacity: 0.9; + font-style: bold; + font-size: 17px; + border-bottom: 1px solid #000; + padding: 0; + margin: 0; + text-align: left; +} + +.dash-content { + display: flex; + background: var(--color-bg-white); + padding-top: 0 !important; + padding-bottom: 10px !important; + z-index: 5000; + padding-right: 15px !important; + padding-left: 5px !important; + height: 100%; +} + +.dash-content.show { + display: flex; + visibility: visible; +} + +.dash-content.main { + flex-direction: column; + justify-content: center; +} + +/* ProTip ----------------------------- */ +.download { + background: #f5f5f5; + color: var(--color-bg-white); + display: table-cell; + margin: 0; + text-align: center; + vertical-align: middle; +} + +.demo-protip { + margin-top: 2rem; + padding: 1.5rem 2rem 2rem 2rem; + border: 1px solid hsla(0, 0%, 0%, 0.06); + border-radius: 6px; + background: var(--color-accent) linear-gradient(hsla(0, 0%, 100%, 0.85), hsla(0, 0%, 100%, 0.85)); +} + +.demo-protip h2 { + margin: 0 0 0.5rem 0; +} + +.demo-protip strong { + font-weight: 600; +} + +.labelradio { + color: #303030; +} + +input[type="radio"].with-style:checked ~ label, +input[type="checkbox"].with-style:checked ~ label { + font-size: 1.1em; + font-weight: bold; + color: inherit; + margin-top: -1px; + vertical-align: middle; +} + +.labelradio-manifest { + color: #303030; +} + +.datasetsaveoption { + display: none; +} + +.filepath { + display: block; + margin: 0; + padding: 0.5em 1.5em; +} + +textarea.outputprint { + width: 100%; + max-width: 100%; + min-width: 100%; + font: inherit; + max-height: 40px; + resize: vertical; +} + +/* Dropdowns */ +select.my-dropdown { + width: 60%; + padding: 8px 12px; + border: 1px solid #dbdbdb; + border-radius: 5px; + background-color: var(--color-bg-white); + font: inherit; + height: 38px; +} + +table { + width: 100%; + border-spacing: 0; + border: 1px solid hsla(0, 0%, 0%, 0.08); + border-width: 0 1px 1px 0; +} + +th { + background-color: hsla(0, 0%, 50%, 0.06); +} + +/* th:hover { + background-color: lightblue; +} */ + +th, +td { + text-align: center; + border: 1px solid hsla(0, 0%, 0%, 0.08); + border-width: 1px 0 0 1px; + padding: 10px; +} + +th.table-header { + text-indent: 40%; + text-align: left; +} + +table.pathtable { + margin: auto; + width: 100%; + max-width: 100%; + min-width: 100%; + font: inherit; + word-break: break-word; + border-collapse: collapse; + border: 1px solid var(--color-bg-white); + border-style: hidden; +} + +table.pathtable tr td:first-child { + width: 40%; + max-width: 40%; + min-width: 40%; +} + +table.pathtable tr th:nth-child(2) { + width: 50%; +} + +table.pathtable tr td:nth-child(2) { + width: 40%; + max-width: 40%; + min-width: 40%; +} + +table.pathtable td { + text-align: center; +} + +input[type="button"].save { + display: none; +} + +input[type="text"].inputpath { + margin-right: 10px; + width: 40%; +} + +table.pathtable tr.open { + display: none; +} + +/* Metadata table */ +table.table-save-metadata { + margin: auto; + width: 70%; + max-width: 100%; + min-width: 100%; + font: inherit; + word-break: break-word; + border-collapse: collapse; + border: 1px solid var(--color-bg-white); + border-style: hidden; + text-align: left; +} + +.table-header-metadata { + /* text-indent: 10%; */ + text-align: left; + cursor: pointer; + font-size: 15px; + width: 70%; +} + +/* YouTube video frames */ +.video-container { + position: relative; + padding-bottom: 56.25%; + padding-top: 30px; + height: 0; + overflow: hidden; +} + +.video-container iframe, +.video-container object, +.video-container embed { + margin-left: 5em; + margin-top: 1em; + position: absolute; + top: 0; + left: 0; + width: 80%; + height: 80%; +} +/* +.te-editor.te-tab-active { + width: 100% !important; +} + +.te-md-splitter { + display: none !important +} */ + +.tooltipnew { + position: relative; + display: inline-block; + float: right; + font-size: 1em; + font-style: italic; + /* font-weight: bold; */ + color: black; + padding: 8px 12px; + z-index: 1; +} + +.tooltipnew.contributor { + float: none; + font-style: normal; + padding: 3px; + padding-bottom: 0px; +} + +.tooltipnew.contributor img { + height: 14px; + width: 14px; +} + +.tooltiptext.contributor { + right: 80%; + max-width: 250px; + overflow-y: auto; + overflow-x: hidden; + max-height: 200px; + font-size: 14px; + font-style: italic; +} +.tooltipnew .tooltiptext { + visibility: hidden; + width: 400px; + background-color: black; + color: var(--color-bg-white); + text-align: left; + border-radius: 6px; + padding: 5px 7px; + position: absolute; + z-index: 1700; + top: -5px; + right: 110%; + font-weight: bold; +} + +.tooltipnew .tooltiptext::after { + content: ""; + position: absolute; + top: 50%; + left: 100%; + margin-top: -5px; + border-width: 5px; + border-style: solid; + border-color: transparent transparent transparent black; +} +.tooltipnew:hover .tooltiptext { + visibility: visible; + top: 50%; + transform: translateY(-50%); +} + +/* Progress bar */ +#div-curate-meter { + border: 2px solid #000; + width: 100%; +} +#div-curate-progress-bar { + background: #333; + height: 25px; + width: 0%; +} +/* Progress bar */ +#div-meter { + border: 2px solid #000; + width: 100%; +} +#div-progress-bar { + background: #333; + height: 25px; + width: 0%; +} + +#status-bar-curate-progress { + position: absolute; + bottom: 0px; + width: 100%; + color: black; + padding: 15px; +} + +.nav-status-bar::-webkit-progress-value { + transition: width 1s; +} + +.nav-status-bar[value] { + width: 100%; + height: 10px; + -webkit-appearance: none; + appearance: none; +} + +.nav-status-bar[value]::-webkit-progress-bar { + background-color: #eee; + border-radius: 2px; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25) inset; +} + +.nav-status-bar[value]::-webkit-progress-value { + background-image: + -webkit-linear-gradient( + -45deg, + transparent 33%, + rgba(0, 0, 0, 0.1) 33%, + rgba(0, 0, 0, 0.1) 66%, + transparent 66% + ), + -webkit-linear-gradient(left, hsl(339, 90%, 30%), hsl(190, 60%, 36%)); + border-radius: 2px; + background-size: + 35px 25px, + 100% 100%, + 100% 100%; +} + +.progresstrack::-webkit-progress-value { + transition: width 1s; +} + +progress.progresstrack[value] { + width: 100%; + height: 25px; + -webkit-appearance: none; + appearance: none; +} + +progress.progresstrack[value]::-webkit-progress-bar { + background-color: #eee; + border-radius: 2px; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25) inset; +} + +progress.progresstrack[value]::-webkit-progress-value { + background-image: + -webkit-linear-gradient( + -45deg, + transparent 33%, + rgba(0, 0, 0, 0.1) 33%, + rgba(0, 0, 0, 0.1) 66%, + transparent 66% + ), + -webkit-linear-gradient(left, hsl(339, 90%, 30%), hsl(190, 60%, 36%)); + border-radius: 2px; + background-size: + 35px 25px, + 100% 100%, + 100% 100%; +} + +/*https://codepen.io/holdencreative/pen/vEVbwv*/ +.progressdiv { + position: relative; + height: 15px; + display: none; + width: 25%; + background-color: hsla(190, 60%, 36%, 30%); + border-radius: 2px; + background-clip: padding-box; + margin: 0 auto; + overflow: hidden; +} + +.progressdiv .indeterminatebar { + background-color: var(--color-accent); +} + +.progressdiv .indeterminatebar:before { + content: ""; + position: absolute; + background-color: var(--color-accent); + top: 0; + left: 0; + bottom: 0; + will-change: left, right; + -webkit-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; +} + +.progressdiv .indeterminatebar:after { + content: ""; + position: absolute; + background-color: inherit; + top: 0; + left: 0; + bottom: 0; + will-change: left, right; + -webkit-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + -webkit-animation-delay: 1.15s; + animation-delay: 1.15s; +} + +@-webkit-keyframes indeterminate { + 0% { + left: -35%; + right: 100%; + } + 60% { + left: 100%; + right: -90%; + } + 100% { + left: 100%; + right: -90%; + } +} +@keyframes indeterminate { + 0% { + left: -35%; + right: 100%; + } + 60% { + left: 100%; + right: -90%; + } + 100% { + left: 100%; + right: -90%; + } +} +@-webkit-keyframes indeterminate-short { + 0% { + left: -200%; + right: 100%; + } + 60% { + left: 107%; + right: -8%; + } + 100% { + left: 107%; + right: -8%; + } +} +@keyframes indeterminate-short { + 0% { + left: -200%; + right: 100%; + } + 60% { + left: 107%; + right: -8%; + } + 100% { + left: 107%; + right: -8%; + } +} + +.message-icon { + width: 18px; + height: 29px; + margin-left: 3px; +} + +#editor-container { + height: 375px; + background-color: white; + color: black; +} + +.te-preview { + min-width: 270px !important; +} + +.te-preview .tui-editor-contents { + word-wrap: break-word !important; +} + +#canvas { + height: 600px; + width: 600px; + background-color: var(--color-bg-white); + cursor: default; + border: 1px solid black; +} + +#current-banner-img { + max-width: 100%; +} + +.banner-image { + background-color: gray; + background-image: repeating-linear-gradient( + 45deg, + transparent, + transparent 35px, + rgba(255, 255, 255, 0.5) 35px, + rgba(255, 255, 255, 0.5) 70px + ); + float: right; + width: 100%; +} + +.img-container { + /* Never limit the container height here */ + max-width: 90%; + width: 90%; + margin: 0 auto; +} + +.img-container img { + display: block; + /* This is important */ + max-width: 100%; + background-color: white; +} + +#cleared { + clear: both; +} + +/* Cropped Image */ +.container-cropped-image { + display: flex; + font-weight: bold; + /* width: 270px; */ + height: 35px; + float: left; + color: black; + border-radius: 6px; +} + +.crop-image-text { + line-height: 35px; +} + +#form-banner-height { + line-height: 35px; +} + +.banner-image-size { + float: left; + height: 35px; + display: -ms-flexbox; +} +.banner-image-size.input { + height: 34px; + float: right; + background-clip: padding-box; +} + +.preview { + overflow: hidden; + width: 300px; + height: 300px; + /* padding-bottom: 30%;*/ +} + +#div-img-container-holder, +#guided-div-img-container-holder { + color: black; + text-align: center; + font-size: 20px; + font-weight: bold; + vertical-align: middle; + text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.4); + padding: 5% 5%; + height: 250px; +} + +#div-banner-img-preview-holder { + color: black; + text-align: center; + font-size: 20px; + font-weight: bold; + vertical-align: middle; + text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.5); +} + +label.input-banner-img { + padding-left: 10px; + color: black; + float: left; +} + +/* Submission file Preparation */ +.my-dropdown-metadata { + float: right; + background-clip: padding-box; + width: 100%; + /* width:60%; */ + padding: 6px 8px; + margin-bottom: 10px; + border: 1px solid black; + border-radius: 5px; + background-color: var(--color-bg-white); + font: inherit; +} + +.my-dropdown-metadata.ds:focus { + border-color: black; + border-radius: 5px; + background-color: #fffafa; + /* box-shadow: 0 0 1px 3px rgba(59, 153, 252, .7); */ + /* box-shadow: 0 0 0 3px -moz-mac-focusring; */ + /* color: #222; */ + outline: none; +} + +.tagify { + width: 100%; + border: 1px solid rgba(34, 36, 38, 0.15) !important; + /* border-left: 2px solid var(--color-light-green) !important; */ + border-radius: 5px !important; + background-color: white !important; + --tag--max-width: 250px !important; +} + +.tagify.tagify--focus { + outline-color: rgb(229, 151, 0) !important; + /* outline: none !important; */ + background-color: rgb(255, 250, 250) !important; +} + +/* Submission file container */ +.form-container { + float: left; + font-size: 14px; + /* padding-right: 10px; */ + padding: 4px 6px; + width: 150px; + text-align: left; + vertical-align: middle; + color: #a0a0a0; + font: bold; + font-weight: 500; +} + +.form-container-input { + float: right; + font-weight: 400; + /* background-clip: padding-box; */ + line-height: 2; + width: 100%; + border: 1px solid #c0c0c0; + margin-bottom: 10px; + border-radius: 5px; + transition: var(--color-light-green) 0.25s ease-out; + padding: 4px 6px; +} + +input::-webkit-calendar-picker-indicator { + display: none; +} + +.form-container-input-bf:focus { + background-color: #fffafa; + /* border-left: 2px solid #c0c0c0; */ + border-radius: 0; +} + +.form-container-input-bf:disabled { + background-color: #e5e5e5 !important; +} + +.form-container-textarea { + float: right; + font-weight: 400; + font: inherit; + width: 100%; + border: 1px solid #c0c0c0; + /* border-left: 2px solid var(--color-light-green); */ + /* margin-bottom: 10px; */ + border-radius: 5px; + transition: var(--color-light-green) 0.25s ease-out; + padding: 4px 6px; + min-height: 60px; + /* max-height:60px; */ + resize: vertical; +} + +.form-container-textarea:focus { + background-color: #fffafa; + border-left: 2px solid #c0c0c0; + border-radius: 0; +} + +/* Text areas for error messages - Validator */ +.span-validate-local { + font-weight: 400; + font: inherit; + border-radius: 5px; + transition: var(--color-light-green) 0.25s ease-out; + height: auto; + display: none; +} + +.errors { + color: red; +} + +.passes { + color: green; +} + +.warnings { + color: orange; +} + +/* BF Add account */ +.form-container-input-bf { + float: right; + font-weight: 400; + background-clip: padding-box; + line-height: 1.5; + width: 100%; + /* margin-bottom: 10px; */ + border: 1px solid #c0c0c0; + border-left: 2px solid var(--color-light-green); + border-radius: 5px; + transition: var(--color-light-green) 0.25s ease-out; + padding: 4px 6px; +} + +.form-container-input-bf disabled { + background: #f5f5f5; +} + +/* Dataset Description file container */ +.form-container-ds { + float: left; + font-size: 14px; + margin: 10px 0; + /* padding-right: 10px; */ + padding: 4px 6px; + width: 180px; + text-align: left; + vertical-align: middle; + color: #a0a0a0; + font: bold; + font-weight: 500; +} + +.multisteps-form__progress { + display: none; + grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); + margin-bottom: 30px; +} + +.multisteps-form__progress-btn { + transition-property: all; + transition-duration: 0.15s; + transition-timing-function: linear; + transition-delay: 0s; + position: relative; + padding-top: 20px; + color: var(--color-light-green); + text-indent: -9999px; + border: none; + background-color: transparent; + outline: none !important; + cursor: pointer; +} + +@media (min-width: 500px) { + .multisteps-form__progress-btn { + text-indent: 0; + } +} +.multisteps-form__progress-btn:before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 15px; + height: 15px; + content: ""; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + transition: + all 0.15s linear 0s, + -webkit-transform 0.15s cubic-bezier(0.05, 1.09, 0.16, 1.4) 0s; + transition: + all 0.15s linear 0s, + transform 0.15s cubic-bezier(0.05, 1.09, 0.16, 1.4) 0s; + transition: + all 0.15s linear 0s, + transform 0.15s cubic-bezier(0.05, 1.09, 0.16, 1.4) 0s, + -webkit-transform 0.15s cubic-bezier(0.05, 1.09, 0.16, 1.4) 0s; + border: 2px solid currentColor; + border-radius: 50%; + background-color: var(--color-bg-white); + box-sizing: border-box; + z-index: 3; +} +.multisteps-form__progress-btn:after { + position: absolute; + top: 5px; + left: calc(-50% - 13px / 2); + transition-property: all; + transition-duration: 0.15s; + transition-timing-function: linear; + transition-delay: 0s; + display: block; + width: 100%; + height: 2px; + content: ""; + background-color: currentColor; + z-index: 1; + color: var; + color: inherit; +} +.multisteps-form__progress-btn:first-child:after { + display: none; +} +.multisteps-form__progress-btn.js-active1 { + color: var(--color-light-green); +} +.multisteps-form__progress-btn.js-active2 { + color: var(--color-light-green); +} + +.multisteps-form__progress-btn.js-active1:before { + -webkit-transform: translateX(-50%) scale(1.2); + transform: translateX(-50%) scale(1.5); + background-color: var(--color-light-green); +} +.multisteps-form__progress-btn.js-active2:before { + -webkit-transform: translateX(-50%) scale(1.2); + transform: translateX(-50%) scale(1.5); + background-color: var(--color-light-green); +} + +/* Hide all steps by default: */ +.ds-tabs { + display: none; +} + +/* Make circles that indicate the steps of the form: */ +.ds-step { + height: 12px; + width: 12px; + margin: 0 2px; + background-color: blue; + border: none; + border-radius: 50%; + display: inline-block; + opacity: 0.5; +} + +/* Mark the active step: */ +.ds-step.active { + opacity: 1; +} + +/* Mark the steps that are finished and valid: */ +.ds-step.finish { + background-color: var(--color-light-green); +} + +.switch-field { + display: flex; + margin-bottom: 36px; + overflow: hidden; +} + +.input-switch { + padding-top: 10px; + display: none; + overflow: hidden; + position: absolute; +} + +.label-switch { + width: 200px; + display: block; + float: left; + padding: 8px 4px; + padding-bottom: 20px; + margin-right: 20px; + margin-left: 10px; + line-height: 1; + text-align: center; + border-bottom: 2px solid #dcdcdc; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + font-weight: bold; + font-size: 16px; + color: #696969; +} + +.label-switch:hover { + cursor: pointer; + color: var(--color-light-green); +} + +#addAccount:checked ~ #div-add-account, +#selectAccount:checked ~ #div-select-account { + display: block; +} + +#createDataset:checked ~ #div-create-dataset, +#renameDataset:checked ~ #div-rename-dataset { + display: block; +} + +.input-switch:checked + label { + border-bottom: 2px solid var(--color-light-green); + text-decoration: none; + color: var(--color-light-green); + font-size: 16px; + border-radius: 0; +} + +.switch { + position: relative; + display: inline-block; + width: 52px; + height: 28px; +} + +.switch input { + opacity: 0; + width: 0; + height: 0; +} + +.slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #ccc; + -webkit-transition: 0.4s; + transition: 0.4s; +} + +.slider:before { + position: absolute; + content: ""; + height: 17px; + width: 17px; + left: 2px; + bottom: 2px; + background-color: white; + -webkit-transition: 0.4s; + transition: 0.4s; +} + +input:checked + .slider { + background-color: var(--color-light-green); +} + +input:focus + .slider { + box-shadow: 0 0 1px #0bc260; +} + +input:checked + .slider:before { + transform: translateX(25px); +} + +/* Rounded sliders */ +.slider.round { + border-radius: 25px; +} + +.slider.round.manifest { + width: 60px; + height: 30px; +} + +.slider.round.manifest:before { + width: 26px; + height: 26px; +} + +input:checked + .slider.round.manifest:before { + transform: translateX(30px); +} + +.slider.round:before { + border-radius: 50%; +} + +/* Validate list styling */ +.validatelist { + list-style: none; +} + +.validatelist li { + padding-bottom: 15px; + position: relative; +} + +.validatelist li :before { + position: absolute; + left: -30px; +} + +.validatelist li.bulletpass :before { + content: "\2705"; +} + +.validatelist li.bulletwarning :before { + content: "\26A0"; + font-size: 20px; +} + +.validatelist li.bulleterror :before { + content: "\274C"; +} + +/* CONTEXT MENU */ +/* .menu { + background-color: var(--color-bg-white); + color: #333; + list-style: none; + position: absolute; + padding: 6px 0; + text-align: left; + border-radius: 5px; + cursor: pointer; + word-wrap: break-word; + margin-bottom: 0; + margin-top: 0; + margin-right: 4px; + z-index: 1000; + border: 1px solid rgba(0,0,0,.15); + +} + +.menu.reg-folder { + min-width: 110px; + height: auto; +} + +.menu.reg-folder li { + padding: 3px 10px; + background-color: var(--color-bg-white); + font-size: 13px; + font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; +} + +.menu.file { + min-width: 180px; + height: auto; +} */ + +/* .menu.file li { + padding: 3px 10px; + background-color: var(--color-bg-white); + color: black; + font-size: 13px; + font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; +} + +.menu.file li:hover{ + background-color: #F0F0F0 ; +} + +.menu.reg-folder li:hover{ + background-color: #F0F0F0 ; +} + +.menu.high-level-folder li:hover{ + background-color: #F0F0F0; + +} */ + +/* .menu.high-level-folder.off { + display: none; + top: -200%; + left: -200%; + /* margin-bottom: 0; */ +/* } + +.menu.high-level-folder { + width: 110px; + height: auto; +} */ + +/* .menu.high-level-folder li { + padding: 3px 10px; + background-color: var(--color-bg-white); + font-size: 13px; + font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; + +} */ + +/* .menu.high-level-folder li:hover{ + background-color: #fffff; +} */ + +/* .menu.reg-folder.off{ + display: none; + top: -200%; + left: -200%; +} + +.menu.file.off{ + display: none; + top: -210%; + left: -210%; +} + +.menu.file li { + min-width: 180px; + background-color: var(--color-bg-white) +} */ + +.sub-text { + color: #898989 !important; + font-size: 12px; + margin-top: 10px; +} diff --git a/src/electron/renderer/assets/css/fontawesome.css b/src/electron/renderer/assets/css/fontawesome.css index e9d09e4bd..528f6b3b9 100644 --- a/src/electron/renderer/assets/css/fontawesome.css +++ b/src/electron/renderer/assets/css/fontawesome.css @@ -1,5288 +1,5288 @@ -/*! - * Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com - * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - */ -.fa, -.fas, -.far, -.fal, -.fab { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - line-height: 1; -} - -.fa-lg { - font-size: 1.33333em; - line-height: 0.75em; - vertical-align: -0.0667em; -} - -.fa-xs { - font-size: 0.75em; -} - -.fa-sm { - font-size: 0.875em; -} - -.fa-1x { - font-size: 1em; -} - -.fa-2x { - font-size: 2em; -} - -.fa-3x { - font-size: 3em; -} - -.fa-4x { - font-size: 4em; -} - -.fa-5x { - font-size: 5em; -} - -.fa-6x { - font-size: 6em; -} - -.fa-7x { - font-size: 7em; -} - -.fa-8x { - font-size: 8em; -} - -.fa-9x { - font-size: 9em; -} - -.fa-10x { - font-size: 10em; -} - -.fa-fw { - text-align: center; - width: 1.25em; -} - -.fa-ul { - list-style-type: none; - margin-left: 2.5em; - padding-left: 0; -} -.fa-ul > li { - position: relative; -} - -.fa-li { - left: -2em; - position: absolute; - text-align: center; - width: 2em; - line-height: inherit; -} - -.fa-border { - border: solid 0.08em #eee; - border-radius: 0.1em; - padding: 0.2em 0.25em 0.15em; -} - -.fa-pull-left { - float: left; -} - -.fa-pull-right { - float: right; -} - -.fa.fa-pull-left, -.fas.fa-pull-left, -.far.fa-pull-left, -.fal.fa-pull-left, -.fab.fa-pull-left { - margin-right: 0.3em; -} - -.fa.fa-pull-right, -.fas.fa-pull-right, -.far.fa-pull-right, -.fal.fa-pull-right, -.fab.fa-pull-right { - margin-left: 0.3em; -} - -.fa-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} - -.fa-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} - -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} - -.fa-rotate-90 { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; - -webkit-transform: rotate(90deg); - transform: rotate(90deg); -} - -.fa-rotate-180 { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; - -webkit-transform: rotate(180deg); - transform: rotate(180deg); -} - -.fa-rotate-270 { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; - -webkit-transform: rotate(270deg); - transform: rotate(270deg); -} - -.fa-flip-horizontal { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; - -webkit-transform: scale(-1, 1); - transform: scale(-1, 1); -} - -.fa-flip-vertical { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; - -webkit-transform: scale(1, -1); - transform: scale(1, -1); -} - -.fa-flip-horizontal.fa-flip-vertical { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; - -webkit-transform: scale(-1, -1); - transform: scale(-1, -1); -} - -:root .fa-rotate-90, -:root .fa-rotate-180, -:root .fa-rotate-270, -:root .fa-flip-horizontal, -:root .fa-flip-vertical { - -webkit-filter: none; - filter: none; -} - -.fa-stack { - display: inline-block; - height: 2em; - line-height: 2em; - position: relative; - vertical-align: middle; - width: 2.5em; -} - -.fa-stack-1x, -.fa-stack-2x { - left: 0; - position: absolute; - text-align: center; - width: 100%; -} - -.fa-stack-1x { - line-height: inherit; -} - -.fa-stack-2x { - font-size: 2em; -} - -.fa-inverse { - color: #fff; -} - -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen -readers do not read off random characters that represent icons */ -.fa-500px:before { - content: "\f26e"; -} - -.fa-accessible-icon:before { - content: "\f368"; -} - -.fa-accusoft:before { - content: "\f369"; -} - -.fa-acquisitions-incorporated:before { - content: "\f6af"; -} - -.fa-ad:before { - content: "\f641"; -} - -.fa-address-book:before { - content: "\f2b9"; -} - -.fa-address-card:before { - content: "\f2bb"; -} - -.fa-adjust:before { - content: "\f042"; -} - -.fa-adn:before { - content: "\f170"; -} - -.fa-adversal:before { - content: "\f36a"; -} - -.fa-affiliatetheme:before { - content: "\f36b"; -} - -.fa-air-freshener:before { - content: "\f5d0"; -} - -.fa-algolia:before { - content: "\f36c"; -} - -.fa-align-center:before { - content: "\f037"; -} - -.fa-align-justify:before { - content: "\f039"; -} - -.fa-align-left:before { - content: "\f036"; -} - -.fa-align-right:before { - content: "\f038"; -} - -.fa-alipay:before { - content: "\f642"; -} - -.fa-allergies:before { - content: "\f461"; -} - -.fa-amazon:before { - content: "\f270"; -} - -.fa-amazon-pay:before { - content: "\f42c"; -} - -.fa-ambulance:before { - content: "\f0f9"; -} - -.fa-american-sign-language-interpreting:before { - content: "\f2a3"; -} - -.fa-amilia:before { - content: "\f36d"; -} - -.fa-anchor:before { - content: "\f13d"; -} - -.fa-android:before { - content: "\f17b"; -} - -.fa-angellist:before { - content: "\f209"; -} - -.fa-angle-double-down:before { - content: "\f103"; -} - -.fa-angle-double-left:before { - content: "\f100"; -} - -.fa-angle-double-right:before { - content: "\f101"; -} - -.fa-angle-double-up:before { - content: "\f102"; -} - -.fa-angle-down:before { - content: "\f107"; -} - -.fa-angle-left:before { - content: "\f104"; -} - -.fa-angle-right:before { - content: "\f105"; -} - -.fa-angle-up:before { - content: "\f106"; -} - -.fa-angry:before { - content: "\f556"; -} - -.fa-angrycreative:before { - content: "\f36e"; -} - -.fa-angular:before { - content: "\f420"; -} - -.fa-ankh:before { - content: "\f644"; -} - -.fa-app-store:before { - content: "\f36f"; -} - -.fa-app-store-ios:before { - content: "\f370"; -} - -.fa-apper:before { - content: "\f371"; -} - -.fa-apple:before { - content: "\f179"; -} - -.fa-apple-alt:before { - content: "\f5d1"; -} - -.fa-apple-pay:before { - content: "\f415"; -} - -.fa-archive:before { - content: "\f187"; -} - -.fa-archway:before { - content: "\f557"; -} - -.fa-arrow-alt-circle-down:before { - content: "\f358"; -} - -.fa-arrow-alt-circle-left:before { - content: "\f359"; -} - -.fa-arrow-alt-circle-right:before { - content: "\f35a"; -} - -.fa-arrow-alt-circle-up:before { - content: "\f35b"; -} - -.fa-arrow-circle-down:before { - content: "\f0ab"; -} - -.fa-arrow-circle-left:before { - content: "\f0a8"; -} - -.fa-arrow-circle-right:before { - content: "\f0a9"; -} - -.fa-arrow-circle-up:before { - content: "\f0aa"; -} - -.fa-arrow-down:before { - content: "\f063"; -} - -.fa-arrow-left:before { - content: "\f060"; -} - -.fa-arrow-right:before { - content: "\f061"; -} - -.fa-arrow-up:before { - content: "\f062"; -} - -.fa-arrows-alt:before { - content: "\f0b2"; -} - -.fa-arrows-alt-h:before { - content: "\f337"; -} - -.fa-arrows-alt-v:before { - content: "\f338"; -} - -.fa-assistive-listening-systems:before { - content: "\f2a2"; -} - -.fa-asterisk:before { - content: "\f069"; -} - -.fa-asymmetrik:before { - content: "\f372"; -} - -.fa-at:before { - content: "\f1fa"; -} - -.fa-atlas:before { - content: "\f558"; -} - -.fa-atom:before { - content: "\f5d2"; -} - -.fa-audible:before { - content: "\f373"; -} - -.fa-audio-description:before { - content: "\f29e"; -} - -.fa-autoprefixer:before { - content: "\f41c"; -} - -.fa-avianex:before { - content: "\f374"; -} - -.fa-aviato:before { - content: "\f421"; -} - -.fa-award:before { - content: "\f559"; -} - -.fa-aws:before { - content: "\f375"; -} - -.fa-backspace:before { - content: "\f55a"; -} - -.fa-backward:before { - content: "\f04a"; -} - -.fa-balance-scale:before { - content: "\f24e"; -} - -.fa-ban:before { - content: "\f05e"; -} - -.fa-band-aid:before { - content: "\f462"; -} - -.fa-bandcamp:before { - content: "\f2d5"; -} - -.fa-barcode:before { - content: "\f02a"; -} - -.fa-bars:before { - content: "\f0c9"; -} - -.fa-baseball-ball:before { - content: "\f433"; -} - -.fa-basketball-ball:before { - content: "\f434"; -} - -.fa-bath:before { - content: "\f2cd"; -} - -.fa-battery-empty:before { - content: "\f244"; -} - -.fa-battery-full:before { - content: "\f240"; -} - -.fa-battery-half:before { - content: "\f242"; -} - -.fa-battery-quarter:before { - content: "\f243"; -} - -.fa-battery-three-quarters:before { - content: "\f241"; -} - -.fa-bed:before { - content: "\f236"; -} - -.fa-beer:before { - content: "\f0fc"; -} - -.fa-behance:before { - content: "\f1b4"; -} - -.fa-behance-square:before { - content: "\f1b5"; -} - -.fa-bell:before { - content: "\f0f3"; -} - -.fa-bell-slash:before { - content: "\f1f6"; -} - -.fa-bezier-curve:before { - content: "\f55b"; -} - -.fa-bible:before { - content: "\f647"; -} - -.fa-bicycle:before { - content: "\f206"; -} - -.fa-bimobject:before { - content: "\f378"; -} - -.fa-binoculars:before { - content: "\f1e5"; -} - -.fa-birthday-cake:before { - content: "\f1fd"; -} - -.fa-bitbucket:before { - content: "\f171"; -} - -.fa-bitcoin:before { - content: "\f379"; -} - -.fa-bity:before { - content: "\f37a"; -} - -.fa-black-tie:before { - content: "\f27e"; -} - -.fa-blackberry:before { - content: "\f37b"; -} - -.fa-blender:before { - content: "\f517"; -} - -.fa-blender-phone:before { - content: "\f6b6"; -} - -.fa-blind:before { - content: "\f29d"; -} - -.fa-blogger:before { - content: "\f37c"; -} - -.fa-blogger-b:before { - content: "\f37d"; -} - -.fa-bluetooth:before { - content: "\f293"; -} - -.fa-bluetooth-b:before { - content: "\f294"; -} - -.fa-bold:before { - content: "\f032"; -} - -.fa-bolt:before { - content: "\f0e7"; -} - -.fa-bomb:before { - content: "\f1e2"; -} - -.fa-bone:before { - content: "\f5d7"; -} - -.fa-bong:before { - content: "\f55c"; -} - -.fa-book:before { - content: "\f02d"; -} - -.fa-book-dead:before { - content: "\f6b7"; -} - -.fa-book-open:before { - content: "\f518"; -} - -.fa-book-reader:before { - content: "\f5da"; -} - -.fa-bookmark:before { - content: "\f02e"; -} - -.fa-bowling-ball:before { - content: "\f436"; -} - -.fa-box:before { - content: "\f466"; -} - -.fa-box-open:before { - content: "\f49e"; -} - -.fa-boxes:before { - content: "\f468"; -} - -.fa-braille:before { - content: "\f2a1"; -} - -.fa-brain:before { - content: "\f5dc"; -} - -.fa-briefcase:before { - content: "\f0b1"; -} - -.fa-briefcase-medical:before { - content: "\f469"; -} - -.fa-broadcast-tower:before { - content: "\f519"; -} - -.fa-broom:before { - content: "\f51a"; -} - -.fa-brush:before { - content: "\f55d"; -} - -.fa-btc:before { - content: "\f15a"; -} - -.fa-bug:before { - content: "\f188"; -} - -.fa-building:before { - content: "\f1ad"; -} - -.fa-bullhorn:before { - content: "\f0a1"; -} - -.fa-bullseye:before { - content: "\f140"; -} - -.fa-burn:before { - content: "\f46a"; -} - -.fa-buromobelexperte:before { - content: "\f37f"; -} - -.fa-bus:before { - content: "\f207"; -} - -.fa-bus-alt:before { - content: "\f55e"; -} - -.fa-business-time:before { - content: "\f64a"; -} - -.fa-buysellads:before { - content: "\f20d"; -} - -.fa-calculator:before { - content: "\f1ec"; -} - -.fa-calendar:before { - content: "\f133"; -} - -.fa-calendar-alt:before { - content: "\f073"; -} - -.fa-calendar-check:before { - content: "\f274"; -} - -.fa-calendar-minus:before { - content: "\f272"; -} - -.fa-calendar-plus:before { - content: "\f271"; -} - -.fa-calendar-times:before { - content: "\f273"; -} - -.fa-camera:before { - content: "\f030"; -} - -.fa-camera-retro:before { - content: "\f083"; -} - -.fa-campground:before { - content: "\f6bb"; -} - -.fa-cannabis:before { - content: "\f55f"; -} - -.fa-capsules:before { - content: "\f46b"; -} - -.fa-car:before { - content: "\f1b9"; -} - -.fa-car-alt:before { - content: "\f5de"; -} - -.fa-car-battery:before { - content: "\f5df"; -} - -.fa-car-crash:before { - content: "\f5e1"; -} - -.fa-car-side:before { - content: "\f5e4"; -} - -.fa-caret-down:before { - content: "\f0d7"; -} - -.fa-caret-left:before { - content: "\f0d9"; -} - -.fa-caret-right:before { - content: "\f0da"; -} - -.fa-caret-square-down:before { - content: "\f150"; -} - -.fa-caret-square-left:before { - content: "\f191"; -} - -.fa-caret-square-right:before { - content: "\f152"; -} - -.fa-caret-square-up:before { - content: "\f151"; -} - -.fa-caret-up:before { - content: "\f0d8"; -} - -.fa-cart-arrow-down:before { - content: "\f218"; -} - -.fa-cart-plus:before { - content: "\f217"; -} - -.fa-cat:before { - content: "\f6be"; -} - -.fa-cc-amazon-pay:before { - content: "\f42d"; -} - -.fa-cc-amex:before { - content: "\f1f3"; -} - -.fa-cc-apple-pay:before { - content: "\f416"; -} - -.fa-cc-diners-club:before { - content: "\f24c"; -} - -.fa-cc-discover:before { - content: "\f1f2"; -} - -.fa-cc-jcb:before { - content: "\f24b"; -} - -.fa-cc-mastercard:before { - content: "\f1f1"; -} - -.fa-cc-paypal:before { - content: "\f1f4"; -} - -.fa-cc-stripe:before { - content: "\f1f5"; -} - -.fa-cc-visa:before { - content: "\f1f0"; -} - -.fa-centercode:before { - content: "\f380"; -} - -.fa-certificate:before { - content: "\f0a3"; -} - -.fa-chair:before { - content: "\f6c0"; -} - -.fa-chalkboard:before { - content: "\f51b"; -} - -.fa-chalkboard-teacher:before { - content: "\f51c"; -} - -.fa-charging-station:before { - content: "\f5e7"; -} - -.fa-chart-area:before { - content: "\f1fe"; -} - -.fa-chart-bar:before { - content: "\f080"; -} - -.fa-chart-line:before { - content: "\f201"; -} - -.fa-chart-pie:before { - content: "\f200"; -} - -.fa-check:before { - content: "\f00c"; -} - -.fa-check-circle:before { - content: "\f058"; -} - -.fa-check-double:before { - content: "\f560"; -} - -.fa-check-square:before { - content: "\f14a"; -} - -.fa-chess:before { - content: "\f439"; -} - -.fa-chess-bishop:before { - content: "\f43a"; -} - -.fa-chess-board:before { - content: "\f43c"; -} - -.fa-chess-king:before { - content: "\f43f"; -} - -.fa-chess-knight:before { - content: "\f441"; -} - -.fa-chess-pawn:before { - content: "\f443"; -} - -.fa-chess-queen:before { - content: "\f445"; -} - -.fa-chess-rook:before { - content: "\f447"; -} - -.fa-chevron-circle-down:before { - content: "\f13a"; -} - -.fa-chevron-circle-left:before { - content: "\f137"; -} - -.fa-chevron-circle-right:before { - content: "\f138"; -} - -.fa-chevron-circle-up:before { - content: "\f139"; -} - -.fa-chevron-down:before { - content: "\f078"; -} - -.fa-chevron-left:before { - content: "\f053"; -} - -.fa-chevron-right:before { - content: "\f054"; -} - -.fa-chevron-up:before { - content: "\f077"; -} - -.fa-child:before { - content: "\f1ae"; -} - -.fa-chrome:before { - content: "\f268"; -} - -.fa-church:before { - content: "\f51d"; -} - -.fa-circle:before { - content: "\f111"; -} - -.fa-circle-notch:before { - content: "\f1ce"; -} - -.fa-city:before { - content: "\f64f"; -} - -.fa-clipboard:before { - content: "\f328"; -} - -.fa-clipboard-check:before { - content: "\f46c"; -} - -.fa-clipboard-list:before { - content: "\f46d"; -} - -.fa-clock:before { - content: "\f017"; -} - -.fa-clone:before { - content: "\f24d"; -} - -.fa-closed-captioning:before { - content: "\f20a"; -} - -.fa-cloud:before { - content: "\f0c2"; -} - -.fa-cloud-download-alt:before { - content: "\f381"; -} - -.fa-cloud-meatball:before { - content: "\f73b"; -} - -.fa-cloud-moon:before { - content: "\f6c3"; -} - -.fa-cloud-moon-rain:before { - content: "\f73c"; -} - -.fa-cloud-rain:before { - content: "\f73d"; -} - -.fa-cloud-showers-heavy:before { - content: "\f740"; -} - -.fa-cloud-sun:before { - content: "\f6c4"; -} - -.fa-cloud-sun-rain:before { - content: "\f743"; -} - -.fa-cloud-upload-alt:before { - content: "\f382"; -} - -.fa-cloudscale:before { - content: "\f383"; -} - -.fa-cloudsmith:before { - content: "\f384"; -} - -.fa-cloudversify:before { - content: "\f385"; -} - -.fa-cocktail:before { - content: "\f561"; -} - -.fa-code:before { - content: "\f121"; -} - -.fa-code-branch:before { - content: "\f126"; -} - -.fa-codepen:before { - content: "\f1cb"; -} - -.fa-codiepie:before { - content: "\f284"; -} - -.fa-coffee:before { - content: "\f0f4"; -} - -.fa-cog:before { - content: "\f013"; -} - -.fa-cogs:before { - content: "\f085"; -} - -.fa-coins:before { - content: "\f51e"; -} - -.fa-columns:before { - content: "\f0db"; -} - -.fa-comment:before { - content: "\f075"; -} - -.fa-comment-alt:before { - content: "\f27a"; -} - -.fa-comment-dollar:before { - content: "\f651"; -} - -.fa-comment-dots:before { - content: "\f4ad"; -} - -.fa-comment-slash:before { - content: "\f4b3"; -} - -.fa-comments:before { - content: "\f086"; -} - -.fa-comments-dollar:before { - content: "\f653"; -} - -.fa-compact-disc:before { - content: "\f51f"; -} - -.fa-compass:before { - content: "\f14e"; -} - -.fa-compress:before { - content: "\f066"; -} - -.fa-concierge-bell:before { - content: "\f562"; -} - -.fa-connectdevelop:before { - content: "\f20e"; -} - -.fa-contao:before { - content: "\f26d"; -} - -.fa-cookie:before { - content: "\f563"; -} - -.fa-cookie-bite:before { - content: "\f564"; -} - -.fa-copy:before { - content: "\f0c5"; -} - -.fa-copyright:before { - content: "\f1f9"; -} - -.fa-couch:before { - content: "\f4b8"; -} - -.fa-cpanel:before { - content: "\f388"; -} - -.fa-creative-commons:before { - content: "\f25e"; -} - -.fa-creative-commons-by:before { - content: "\f4e7"; -} - -.fa-creative-commons-nc:before { - content: "\f4e8"; -} - -.fa-creative-commons-nc-eu:before { - content: "\f4e9"; -} - -.fa-creative-commons-nc-jp:before { - content: "\f4ea"; -} - -.fa-creative-commons-nd:before { - content: "\f4eb"; -} - -.fa-creative-commons-pd:before { - content: "\f4ec"; -} - -.fa-creative-commons-pd-alt:before { - content: "\f4ed"; -} - -.fa-creative-commons-remix:before { - content: "\f4ee"; -} - -.fa-creative-commons-sa:before { - content: "\f4ef"; -} - -.fa-creative-commons-sampling:before { - content: "\f4f0"; -} - -.fa-creative-commons-sampling-plus:before { - content: "\f4f1"; -} - -.fa-creative-commons-share:before { - content: "\f4f2"; -} - -.fa-creative-commons-zero:before { - content: "\f4f3"; -} - -.fa-credit-card:before { - content: "\f09d"; -} - -.fa-critical-role:before { - content: "\f6c9"; -} - -.fa-crop:before { - content: "\f125"; -} - -.fa-crop-alt:before { - content: "\f565"; -} - -.fa-cross:before { - content: "\f654"; -} - -.fa-crosshairs:before { - content: "\f05b"; -} - -.fa-crow:before { - content: "\f520"; -} - -.fa-crown:before { - content: "\f521"; -} - -.fa-css3:before { - content: "\f13c"; -} - -.fa-css3-alt:before { - content: "\f38b"; -} - -.fa-cube:before { - content: "\f1b2"; -} - -.fa-cubes:before { - content: "\f1b3"; -} - -.fa-cut:before { - content: "\f0c4"; -} - -.fa-cuttlefish:before { - content: "\f38c"; -} - -.fa-d-and-d:before { - content: "\f38d"; -} - -.fa-d-and-d-beyond:before { - content: "\f6ca"; -} - -.fa-dashcube:before { - content: "\f210"; -} - -.fa-database:before { - content: "\f1c0"; -} - -.fa-deaf:before { - content: "\f2a4"; -} - -.fa-delicious:before { - content: "\f1a5"; -} - -.fa-democrat:before { - content: "\f747"; -} - -.fa-deploydog:before { - content: "\f38e"; -} - -.fa-deskpro:before { - content: "\f38f"; -} - -.fa-desktop:before { - content: "\f108"; -} - -.fa-dev:before { - content: "\f6cc"; -} - -.fa-deviantart:before { - content: "\f1bd"; -} - -.fa-dharmachakra:before { - content: "\f655"; -} - -.fa-diagnoses:before { - content: "\f470"; -} - -.fa-dice:before { - content: "\f522"; -} - -.fa-dice-d20:before { - content: "\f6cf"; -} - -.fa-dice-d6:before { - content: "\f6d1"; -} - -.fa-dice-five:before { - content: "\f523"; -} - -.fa-dice-four:before { - content: "\f524"; -} - -.fa-dice-one:before { - content: "\f525"; -} - -.fa-dice-six:before { - content: "\f526"; -} - -.fa-dice-three:before { - content: "\f527"; -} - -.fa-dice-two:before { - content: "\f528"; -} - -.fa-digg:before { - content: "\f1a6"; -} - -.fa-digital-ocean:before { - content: "\f391"; -} - -.fa-digital-tachograph:before { - content: "\f566"; -} - -.fa-directions:before { - content: "\f5eb"; -} - -.fa-discord:before { - content: "\f392"; -} - -.fa-discourse:before { - content: "\f393"; -} - -.fa-divide:before { - content: "\f529"; -} - -.fa-dizzy:before { - content: "\f567"; -} - -.fa-dna:before { - content: "\f471"; -} - -.fa-dochub:before { - content: "\f394"; -} - -.fa-docker:before { - content: "\f395"; -} - -.fa-dog:before { - content: "\f6d3"; -} - -.fa-dollar-sign:before { - content: "\f155"; -} - -.fa-dolly:before { - content: "\f472"; -} - -.fa-dolly-flatbed:before { - content: "\f474"; -} - -.fa-donate:before { - content: "\f4b9"; -} - -.fa-door-closed:before { - content: "\f52a"; -} - -.fa-door-open:before { - content: "\f52b"; -} - -.fa-dot-circle:before { - content: "\f192"; -} - -.fa-dove:before { - content: "\f4ba"; -} - -.fa-download:before { - content: "\f019"; -} - -.fa-draft2digital:before { - content: "\f396"; -} - -.fa-drafting-compass:before { - content: "\f568"; -} - -.fa-dragon:before { - content: "\f6d5"; -} - -.fa-draw-polygon:before { - content: "\f5ee"; -} - -.fa-dribbble:before { - content: "\f17d"; -} - -.fa-dribbble-square:before { - content: "\f397"; -} - -.fa-dropbox:before { - content: "\f16b"; -} - -.fa-drum:before { - content: "\f569"; -} - -.fa-drum-steelpan:before { - content: "\f56a"; -} - -.fa-drumstick-bite:before { - content: "\f6d7"; -} - -.fa-drupal:before { - content: "\f1a9"; -} - -.fa-dumbbell:before { - content: "\f44b"; -} - -.fa-dungeon:before { - content: "\f6d9"; -} - -.fa-dyalog:before { - content: "\f399"; -} - -.fa-earlybirds:before { - content: "\f39a"; -} - -.fa-ebay:before { - content: "\f4f4"; -} - -.fa-edge:before { - content: "\f282"; -} - -.fa-edit:before { - content: "\f044"; -} - -.fa-eject:before { - content: "\f052"; -} - -.fa-elementor:before { - content: "\f430"; -} - -.fa-ellipsis-h:before { - content: "\f141"; -} - -.fa-ellipsis-v:before { - content: "\f142"; -} - -.fa-ello:before { - content: "\f5f1"; -} - -.fa-ember:before { - content: "\f423"; -} - -.fa-empire:before { - content: "\f1d1"; -} - -.fa-envelope:before { - content: "\f0e0"; -} - -.fa-envelope-open:before { - content: "\f2b6"; -} - -.fa-envelope-open-text:before { - content: "\f658"; -} - -.fa-envelope-square:before { - content: "\f199"; -} - -.fa-envira:before { - content: "\f299"; -} - -.fa-equals:before { - content: "\f52c"; -} - -.fa-eraser:before { - content: "\f12d"; -} - -.fa-erlang:before { - content: "\f39d"; -} - -.fa-ethereum:before { - content: "\f42e"; -} - -.fa-etsy:before { - content: "\f2d7"; -} - -.fa-euro-sign:before { - content: "\f153"; -} - -.fa-exchange-alt:before { - content: "\f362"; -} - -.fa-exclamation:before { - content: "\f12a"; -} - -.fa-exclamation-circle:before { - content: "\f06a"; -} - -.fa-exclamation-triangle:before { - content: "\f071"; -} - -.fa-expand:before { - content: "\f065"; -} - -.fa-expand-arrows-alt:before { - content: "\f31e"; -} - -.fa-expeditedssl:before { - content: "\f23e"; -} - -.fa-external-link-alt:before { - content: "\f35d"; -} - -.fa-external-link-square-alt:before { - content: "\f360"; -} - -.fa-eye:before { - content: "\f06e"; -} - -.fa-eye-dropper:before { - content: "\f1fb"; -} - -.fa-eye-slash:before { - content: "\f070"; -} - -.fa-facebook:before { - content: "\f09a"; -} - -.fa-facebook-f:before { - content: "\f39e"; -} - -.fa-facebook-messenger:before { - content: "\f39f"; -} - -.fa-facebook-square:before { - content: "\f082"; -} - -.fa-fantasy-flight-games:before { - content: "\f6dc"; -} - -.fa-fast-backward:before { - content: "\f049"; -} - -.fa-fast-forward:before { - content: "\f050"; -} - -.fa-fax:before { - content: "\f1ac"; -} - -.fa-feather:before { - content: "\f52d"; -} - -.fa-feather-alt:before { - content: "\f56b"; -} - -.fa-female:before { - content: "\f182"; -} - -.fa-fighter-jet:before { - content: "\f0fb"; -} - -.fa-file:before { - content: "\f15b"; -} - -.fa-file-alt:before { - content: "\f15c"; -} - -.fa-file-archive:before { - content: "\f1c6"; -} - -.fa-file-audio:before { - content: "\f1c7"; -} - -.fa-file-code:before { - content: "\f1c9"; -} - -.fa-file-contract:before { - content: "\f56c"; -} - -.fa-file-csv:before { - content: "\f6dd"; -} - -.fa-file-download:before { - content: "\f56d"; -} - -.fa-file-excel:before { - content: "\f1c3"; -} - -.fa-file-export:before { - content: "\f56e"; -} - -.fa-file-image:before { - content: "\f1c5"; -} - -.fa-file-import:before { - content: "\f56f"; -} - -.fa-file-invoice:before { - content: "\f570"; -} - -.fa-file-invoice-dollar:before { - content: "\f571"; -} - -.fa-file-medical:before { - content: "\f477"; -} - -.fa-file-medical-alt:before { - content: "\f478"; -} - -.fa-file-pdf:before { - content: "\f1c1"; -} - -.fa-file-powerpoint:before { - content: "\f1c4"; -} - -.fa-file-prescription:before { - content: "\f572"; -} - -.fa-file-signature:before { - content: "\f573"; -} - -.fa-file-upload:before { - content: "\f574"; -} - -.fa-file-video:before { - content: "\f1c8"; -} - -.fa-file-word:before { - content: "\f1c2"; -} - -.fa-fill:before { - content: "\f575"; -} - -.fa-fill-drip:before { - content: "\f576"; -} - -.fa-film:before { - content: "\f008"; -} - -.fa-filter:before { - content: "\f0b0"; -} - -.fa-fingerprint:before { - content: "\f577"; -} - -.fa-fire:before { - content: "\f06d"; -} - -.fa-fire-extinguisher:before { - content: "\f134"; -} - -.fa-firefox:before { - content: "\f269"; -} - -.fa-first-aid:before { - content: "\f479"; -} - -.fa-first-order:before { - content: "\f2b0"; -} - -.fa-first-order-alt:before { - content: "\f50a"; -} - -.fa-firstdraft:before { - content: "\f3a1"; -} - -.fa-fish:before { - content: "\f578"; -} - -.fa-fist-raised:before { - content: "\f6de"; -} - -.fa-flag:before { - content: "\f024"; -} - -.fa-flag-checkered:before { - content: "\f11e"; -} - -.fa-flag-usa:before { - content: "\f74d"; -} - -.fa-flask:before { - content: "\f0c3"; -} - -.fa-flickr:before { - content: "\f16e"; -} - -.fa-flipboard:before { - content: "\f44d"; -} - -.fa-flushed:before { - content: "\f579"; -} - -.fa-fly:before { - content: "\f417"; -} - -.fa-folder:before { - content: "\f07b"; -} - -.fa-folder-minus:before { - content: "\f65d"; -} - -.fa-folder-open:before { - content: "\f07c"; -} - -.fa-folder-plus:before { - content: "\f65e"; -} - -.fa-font:before { - content: "\f031"; -} - -.fa-font-awesome:before { - content: "\f2b4"; -} - -.fa-font-awesome-alt:before { - content: "\f35c"; -} - -.fa-font-awesome-flag:before { - content: "\f425"; -} - -.fa-font-awesome-logo-full:before { - content: "\f4e6"; -} - -.fa-fonticons:before { - content: "\f280"; -} - -.fa-fonticons-fi:before { - content: "\f3a2"; -} - -.fa-football-ball:before { - content: "\f44e"; -} - -.fa-fort-awesome:before { - content: "\f286"; -} - -.fa-fort-awesome-alt:before { - content: "\f3a3"; -} - -.fa-forumbee:before { - content: "\f211"; -} - -.fa-forward:before { - content: "\f04e"; -} - -.fa-foursquare:before { - content: "\f180"; -} - -.fa-free-code-camp:before { - content: "\f2c5"; -} - -.fa-freebsd:before { - content: "\f3a4"; -} - -.fa-frog:before { - content: "\f52e"; -} - -.fa-frown:before { - content: "\f119"; -} - -.fa-frown-open:before { - content: "\f57a"; -} - -.fa-fulcrum:before { - content: "\f50b"; -} - -.fa-funnel-dollar:before { - content: "\f662"; -} - -.fa-futbol:before { - content: "\f1e3"; -} - -.fa-galactic-republic:before { - content: "\f50c"; -} - -.fa-galactic-senate:before { - content: "\f50d"; -} - -.fa-gamepad:before { - content: "\f11b"; -} - -.fa-gas-pump:before { - content: "\f52f"; -} - -.fa-gavel:before { - content: "\f0e3"; -} - -.fa-gem:before { - content: "\f3a5"; -} - -.fa-genderless:before { - content: "\f22d"; -} - -.fa-get-pocket:before { - content: "\f265"; -} - -.fa-gg:before { - content: "\f260"; -} - -.fa-gg-circle:before { - content: "\f261"; -} - -.fa-ghost:before { - content: "\f6e2"; -} - -.fa-gift:before { - content: "\f06b"; -} - -.fa-git:before { - content: "\f1d3"; -} - -.fa-git-square:before { - content: "\f1d2"; -} - -.fa-github:before { - content: "\f09b"; -} - -.fa-github-alt:before { - content: "\f113"; -} - -.fa-github-square:before { - content: "\f092"; -} - -.fa-gitkraken:before { - content: "\f3a6"; -} - -.fa-gitlab:before { - content: "\f296"; -} - -.fa-gitter:before { - content: "\f426"; -} - -.fa-glass-martini:before { - content: "\f000"; -} - -.fa-glass-martini-alt:before { - content: "\f57b"; -} - -.fa-glasses:before { - content: "\f530"; -} - -.fa-glide:before { - content: "\f2a5"; -} - -.fa-glide-g:before { - content: "\f2a6"; -} - -.fa-globe:before { - content: "\f0ac"; -} - -.fa-globe-africa:before { - content: "\f57c"; -} - -.fa-globe-americas:before { - content: "\f57d"; -} - -.fa-globe-asia:before { - content: "\f57e"; -} - -.fa-gofore:before { - content: "\f3a7"; -} - -.fa-golf-ball:before { - content: "\f450"; -} - -.fa-goodreads:before { - content: "\f3a8"; -} - -.fa-goodreads-g:before { - content: "\f3a9"; -} - -.fa-google:before { - content: "\f1a0"; -} - -.fa-google-drive:before { - content: "\f3aa"; -} - -.fa-google-play:before { - content: "\f3ab"; -} - -.fa-google-plus:before { - content: "\f2b3"; -} - -.fa-google-plus-g:before { - content: "\f0d5"; -} - -.fa-google-plus-square:before { - content: "\f0d4"; -} - -.fa-google-wallet:before { - content: "\f1ee"; -} - -.fa-gopuram:before { - content: "\f664"; -} - -.fa-graduation-cap:before { - content: "\f19d"; -} - -.fa-gratipay:before { - content: "\f184"; -} - -.fa-grav:before { - content: "\f2d6"; -} - -.fa-greater-than:before { - content: "\f531"; -} - -.fa-greater-than-equal:before { - content: "\f532"; -} - -.fa-grimace:before { - content: "\f57f"; -} - -.fa-grin:before { - content: "\f580"; -} - -.fa-grin-alt:before { - content: "\f581"; -} - -.fa-grin-beam:before { - content: "\f582"; -} - -.fa-grin-beam-sweat:before { - content: "\f583"; -} - -.fa-grin-hearts:before { - content: "\f584"; -} - -.fa-grin-squint:before { - content: "\f585"; -} - -.fa-grin-squint-tears:before { - content: "\f586"; -} - -.fa-grin-stars:before { - content: "\f587"; -} - -.fa-grin-tears:before { - content: "\f588"; -} - -.fa-grin-tongue:before { - content: "\f589"; -} - -.fa-grin-tongue-squint:before { - content: "\f58a"; -} - -.fa-grin-tongue-wink:before { - content: "\f58b"; -} - -.fa-grin-wink:before { - content: "\f58c"; -} - -.fa-grip-horizontal:before { - content: "\f58d"; -} - -.fa-grip-vertical:before { - content: "\f58e"; -} - -.fa-gripfire:before { - content: "\f3ac"; -} - -.fa-grunt:before { - content: "\f3ad"; -} - -.fa-gulp:before { - content: "\f3ae"; -} - -.fa-h-square:before { - content: "\f0fd"; -} - -.fa-hacker-news:before { - content: "\f1d4"; -} - -.fa-hacker-news-square:before { - content: "\f3af"; -} - -.fa-hackerrank:before { - content: "\f5f7"; -} - -.fa-hammer:before { - content: "\f6e3"; -} - -.fa-hamsa:before { - content: "\f665"; -} - -.fa-hand-holding:before { - content: "\f4bd"; -} - -.fa-hand-holding-heart:before { - content: "\f4be"; -} - -.fa-hand-holding-usd:before { - content: "\f4c0"; -} - -.fa-hand-lizard:before { - content: "\f258"; -} - -.fa-hand-paper:before { - content: "\f256"; -} - -.fa-hand-peace:before { - content: "\f25b"; -} - -.fa-hand-point-down:before { - content: "\f0a7"; -} - -.fa-hand-point-left:before { - content: "\f0a5"; -} - -.fa-hand-point-right:before { - content: "\f0a4"; -} - -.fa-hand-point-up:before { - content: "\f0a6"; -} - -.fa-hand-pointer:before { - content: "\f25a"; -} - -.fa-hand-rock:before { - content: "\f255"; -} - -.fa-hand-scissors:before { - content: "\f257"; -} - -.fa-hand-spock:before { - content: "\f259"; -} - -.fa-hands:before { - content: "\f4c2"; -} - -.fa-hands-helping:before { - content: "\f4c4"; -} - -.fa-handshake:before { - content: "\f2b5"; -} - -.fa-hanukiah:before { - content: "\f6e6"; -} - -.fa-hashtag:before { - content: "\f292"; -} - -.fa-hat-wizard:before { - content: "\f6e8"; -} - -.fa-haykal:before { - content: "\f666"; -} - -.fa-hdd:before { - content: "\f0a0"; -} - -.fa-heading:before { - content: "\f1dc"; -} - -.fa-headphones:before { - content: "\f025"; -} - -.fa-headphones-alt:before { - content: "\f58f"; -} - -.fa-headset:before { - content: "\f590"; -} - -.fa-heart:before { - content: "\f004"; -} - -.fa-heartbeat:before { - content: "\f21e"; -} - -.fa-helicopter:before { - content: "\f533"; -} - -.fa-highlighter:before { - content: "\f591"; -} - -.fa-hiking:before { - content: "\f6ec"; -} - -.fa-hippo:before { - content: "\f6ed"; -} - -.fa-hips:before { - content: "\f452"; -} - -.fa-hire-a-helper:before { - content: "\f3b0"; -} - -.fa-history:before { - content: "\f1da"; -} - -.fa-hockey-puck:before { - content: "\f453"; -} - -.fa-home:before { - content: "\f015"; -} - -.fa-hooli:before { - content: "\f427"; -} - -.fa-hornbill:before { - content: "\f592"; -} - -.fa-horse:before { - content: "\f6f0"; -} - -.fa-hospital:before { - content: "\f0f8"; -} - -.fa-hospital-alt:before { - content: "\f47d"; -} - -.fa-hospital-symbol:before { - content: "\f47e"; -} - -.fa-hot-tub:before { - content: "\f593"; -} - -.fa-hotel:before { - content: "\f594"; -} - -.fa-hotjar:before { - content: "\f3b1"; -} - -.fa-hourglass:before { - content: "\f254"; -} - -.fa-hourglass-end:before { - content: "\f253"; -} - -.fa-hourglass-half:before { - content: "\f252"; -} - -.fa-hourglass-start:before { - content: "\f251"; -} - -.fa-house-damage:before { - content: "\f6f1"; -} - -.fa-houzz:before { - content: "\f27c"; -} - -.fa-hryvnia:before { - content: "\f6f2"; -} - -.fa-html5:before { - content: "\f13b"; -} - -.fa-hubspot:before { - content: "\f3b2"; -} - -.fa-i-cursor:before { - content: "\f246"; -} - -.fa-id-badge:before { - content: "\f2c1"; -} - -.fa-id-card:before { - content: "\f2c2"; -} - -.fa-id-card-alt:before { - content: "\f47f"; -} - -.fa-image:before { - content: "\f03e"; -} - -.fa-images:before { - content: "\f302"; -} - -.fa-imdb:before { - content: "\f2d8"; -} - -.fa-inbox:before { - content: "\f01c"; -} - -.fa-indent:before { - content: "\f03c"; -} - -.fa-industry:before { - content: "\f275"; -} - -.fa-infinity:before { - content: "\f534"; -} - -.fa-info:before { - content: "\f129"; -} - -.fa-info-circle:before { - content: "\f05a"; -} - -.fa-instagram:before { - content: "\f16d"; -} - -.fa-internet-explorer:before { - content: "\f26b"; -} - -.fa-ioxhost:before { - content: "\f208"; -} - -.fa-italic:before { - content: "\f033"; -} - -.fa-itunes:before { - content: "\f3b4"; -} - -.fa-itunes-note:before { - content: "\f3b5"; -} - -.fa-java:before { - content: "\f4e4"; -} - -.fa-jedi:before { - content: "\f669"; -} - -.fa-jedi-order:before { - content: "\f50e"; -} - -.fa-jenkins:before { - content: "\f3b6"; -} - -.fa-joget:before { - content: "\f3b7"; -} - -.fa-joint:before { - content: "\f595"; -} - -.fa-joomla:before { - content: "\f1aa"; -} - -.fa-journal-whills:before { - content: "\f66a"; -} - -.fa-js:before { - content: "\f3b8"; -} - -.fa-js-square:before { - content: "\f3b9"; -} - -.fa-jsfiddle:before { - content: "\f1cc"; -} - -.fa-kaaba:before { - content: "\f66b"; -} - -.fa-kaggle:before { - content: "\f5fa"; -} - -.fa-key:before { - content: "\f084"; -} - -.fa-keybase:before { - content: "\f4f5"; -} - -.fa-keyboard:before { - content: "\f11c"; -} - -.fa-keycdn:before { - content: "\f3ba"; -} - -.fa-khanda:before { - content: "\f66d"; -} - -.fa-kickstarter:before { - content: "\f3bb"; -} - -.fa-kickstarter-k:before { - content: "\f3bc"; -} - -.fa-kiss:before { - content: "\f596"; -} - -.fa-kiss-beam:before { - content: "\f597"; -} - -.fa-kiss-wink-heart:before { - content: "\f598"; -} - -.fa-kiwi-bird:before { - content: "\f535"; -} - -.fa-korvue:before { - content: "\f42f"; -} - -.fa-landmark:before { - content: "\f66f"; -} - -.fa-language:before { - content: "\f1ab"; -} - -.fa-laptop:before { - content: "\f109"; -} - -.fa-laptop-code:before { - content: "\f5fc"; -} - -.fa-laravel:before { - content: "\f3bd"; -} - -.fa-lastfm:before { - content: "\f202"; -} - -.fa-lastfm-square:before { - content: "\f203"; -} - -.fa-laugh:before { - content: "\f599"; -} - -.fa-laugh-beam:before { - content: "\f59a"; -} - -.fa-laugh-squint:before { - content: "\f59b"; -} - -.fa-laugh-wink:before { - content: "\f59c"; -} - -.fa-layer-group:before { - content: "\f5fd"; -} - -.fa-leaf:before { - content: "\f06c"; -} - -.fa-leanpub:before { - content: "\f212"; -} - -.fa-lemon:before { - content: "\f094"; -} - -.fa-less:before { - content: "\f41d"; -} - -.fa-less-than:before { - content: "\f536"; -} - -.fa-less-than-equal:before { - content: "\f537"; -} - -.fa-level-down-alt:before { - content: "\f3be"; -} - -.fa-level-up-alt:before { - content: "\f3bf"; -} - -.fa-life-ring:before { - content: "\f1cd"; -} - -.fa-lightbulb:before { - content: "\f0eb"; -} - -.fa-line:before { - content: "\f3c0"; -} - -.fa-link:before { - content: "\f0c1"; -} - -.fa-linkedin:before { - content: "\f08c"; -} - -.fa-linkedin-in:before { - content: "\f0e1"; -} - -.fa-linode:before { - content: "\f2b8"; -} - -.fa-linux:before { - content: "\f17c"; -} - -.fa-lira-sign:before { - content: "\f195"; -} - -.fa-list:before { - content: "\f03a"; -} - -.fa-list-alt:before { - content: "\f022"; -} - -.fa-list-ol:before { - content: "\f0cb"; -} - -.fa-list-ul:before { - content: "\f0ca"; -} - -.fa-location-arrow:before { - content: "\f124"; -} - -.fa-lock:before { - content: "\f023"; -} - -.fa-lock-open:before { - content: "\f3c1"; -} - -.fa-long-arrow-alt-down:before { - content: "\f309"; -} - -.fa-long-arrow-alt-left:before { - content: "\f30a"; -} - -.fa-long-arrow-alt-right:before { - content: "\f30b"; -} - -.fa-long-arrow-alt-up:before { - content: "\f30c"; -} - -.fa-low-vision:before { - content: "\f2a8"; -} - -.fa-luggage-cart:before { - content: "\f59d"; -} - -.fa-lyft:before { - content: "\f3c3"; -} - -.fa-magento:before { - content: "\f3c4"; -} - -.fa-magic:before { - content: "\f0d0"; -} - -.fa-magnet:before { - content: "\f076"; -} - -.fa-mail-bulk:before { - content: "\f674"; -} - -.fa-mailchimp:before { - content: "\f59e"; -} - -.fa-male:before { - content: "\f183"; -} - -.fa-mandalorian:before { - content: "\f50f"; -} - -.fa-map:before { - content: "\f279"; -} - -.fa-map-marked:before { - content: "\f59f"; -} - -.fa-map-marked-alt:before { - content: "\f5a0"; -} - -.fa-map-marker:before { - content: "\f041"; -} - -.fa-map-marker-alt:before { - content: "\f3c5"; -} - -.fa-map-pin:before { - content: "\f276"; -} - -.fa-map-signs:before { - content: "\f277"; -} - -.fa-markdown:before { - content: "\f60f"; -} - -.fa-marker:before { - content: "\f5a1"; -} - -.fa-mars:before { - content: "\f222"; -} - -.fa-mars-double:before { - content: "\f227"; -} - -.fa-mars-stroke:before { - content: "\f229"; -} - -.fa-mars-stroke-h:before { - content: "\f22b"; -} - -.fa-mars-stroke-v:before { - content: "\f22a"; -} - -.fa-mask:before { - content: "\f6fa"; -} - -.fa-mastodon:before { - content: "\f4f6"; -} - -.fa-maxcdn:before { - content: "\f136"; -} - -.fa-medal:before { - content: "\f5a2"; -} - -.fa-medapps:before { - content: "\f3c6"; -} - -.fa-medium:before { - content: "\f23a"; -} - -.fa-medium-m:before { - content: "\f3c7"; -} - -.fa-medkit:before { - content: "\f0fa"; -} - -.fa-medrt:before { - content: "\f3c8"; -} - -.fa-meetup:before { - content: "\f2e0"; -} - -.fa-megaport:before { - content: "\f5a3"; -} - -.fa-meh:before { - content: "\f11a"; -} - -.fa-meh-blank:before { - content: "\f5a4"; -} - -.fa-meh-rolling-eyes:before { - content: "\f5a5"; -} - -.fa-memory:before { - content: "\f538"; -} - -.fa-menorah:before { - content: "\f676"; -} - -.fa-mercury:before { - content: "\f223"; -} - -.fa-meteor:before { - content: "\f753"; -} - -.fa-microchip:before { - content: "\f2db"; -} - -.fa-microphone:before { - content: "\f130"; -} - -.fa-microphone-alt:before { - content: "\f3c9"; -} - -.fa-microphone-alt-slash:before { - content: "\f539"; -} - -.fa-microphone-slash:before { - content: "\f131"; -} - -.fa-microscope:before { - content: "\f610"; -} - -.fa-microsoft:before { - content: "\f3ca"; -} - -.fa-minus:before { - content: "\f068"; -} - -.fa-minus-circle:before { - content: "\f056"; -} - -.fa-minus-square:before { - content: "\f146"; -} - -.fa-mix:before { - content: "\f3cb"; -} - -.fa-mixcloud:before { - content: "\f289"; -} - -.fa-mizuni:before { - content: "\f3cc"; -} - -.fa-mobile:before { - content: "\f10b"; -} - -.fa-mobile-alt:before { - content: "\f3cd"; -} - -.fa-modx:before { - content: "\f285"; -} - -.fa-monero:before { - content: "\f3d0"; -} - -.fa-money-bill:before { - content: "\f0d6"; -} - -.fa-money-bill-alt:before { - content: "\f3d1"; -} - -.fa-money-bill-wave:before { - content: "\f53a"; -} - -.fa-money-bill-wave-alt:before { - content: "\f53b"; -} - -.fa-money-check:before { - content: "\f53c"; -} - -.fa-money-check-alt:before { - content: "\f53d"; -} - -.fa-monument:before { - content: "\f5a6"; -} - -.fa-moon:before { - content: "\f186"; -} - -.fa-mortar-pestle:before { - content: "\f5a7"; -} - -.fa-mosque:before { - content: "\f678"; -} - -.fa-motorcycle:before { - content: "\f21c"; -} - -.fa-mountain:before { - content: "\f6fc"; -} - -.fa-mouse-pointer:before { - content: "\f245"; -} - -.fa-music:before { - content: "\f001"; -} - -.fa-napster:before { - content: "\f3d2"; -} - -.fa-neos:before { - content: "\f612"; -} - -.fa-network-wired:before { - content: "\f6ff"; -} - -.fa-neuter:before { - content: "\f22c"; -} - -.fa-newspaper:before { - content: "\f1ea"; -} - -.fa-nimblr:before { - content: "\f5a8"; -} - -.fa-nintendo-switch:before { - content: "\f418"; -} - -.fa-node:before { - content: "\f419"; -} - -.fa-node-js:before { - content: "\f3d3"; -} - -.fa-not-equal:before { - content: "\f53e"; -} - -.fa-notes-medical:before { - content: "\f481"; -} - -.fa-npm:before { - content: "\f3d4"; -} - -.fa-ns8:before { - content: "\f3d5"; -} - -.fa-nutritionix:before { - content: "\f3d6"; -} - -.fa-object-group:before { - content: "\f247"; -} - -.fa-object-ungroup:before { - content: "\f248"; -} - -.fa-odnoklassniki:before { - content: "\f263"; -} - -.fa-odnoklassniki-square:before { - content: "\f264"; -} - -.fa-oil-can:before { - content: "\f613"; -} - -.fa-old-republic:before { - content: "\f510"; -} - -.fa-om:before { - content: "\f679"; -} - -.fa-opencart:before { - content: "\f23d"; -} - -.fa-openid:before { - content: "\f19b"; -} - -.fa-opera:before { - content: "\f26a"; -} - -.fa-optin-monster:before { - content: "\f23c"; -} - -.fa-osi:before { - content: "\f41a"; -} - -.fa-otter:before { - content: "\f700"; -} - -.fa-outdent:before { - content: "\f03b"; -} - -.fa-page4:before { - content: "\f3d7"; -} - -.fa-pagelines:before { - content: "\f18c"; -} - -.fa-paint-brush:before { - content: "\f1fc"; -} - -.fa-paint-roller:before { - content: "\f5aa"; -} - -.fa-palette:before { - content: "\f53f"; -} - -.fa-palfed:before { - content: "\f3d8"; -} - -.fa-pallet:before { - content: "\f482"; -} - -.fa-paper-plane:before { - content: "\f1d8"; -} - -.fa-paperclip:before { - content: "\f0c6"; -} - -.fa-parachute-box:before { - content: "\f4cd"; -} - -.fa-paragraph:before { - content: "\f1dd"; -} - -.fa-parking:before { - content: "\f540"; -} - -.fa-passport:before { - content: "\f5ab"; -} - -.fa-pastafarianism:before { - content: "\f67b"; -} - -.fa-paste:before { - content: "\f0ea"; -} - -.fa-patreon:before { - content: "\f3d9"; -} - -.fa-pause:before { - content: "\f04c"; -} - -.fa-pause-circle:before { - content: "\f28b"; -} - -.fa-paw:before { - content: "\f1b0"; -} - -.fa-paypal:before { - content: "\f1ed"; -} - -.fa-peace:before { - content: "\f67c"; -} - -.fa-pen:before { - content: "\f304"; -} - -.fa-pen-alt:before { - content: "\f305"; -} - -.fa-pen-fancy:before { - content: "\f5ac"; -} - -.fa-pen-nib:before { - content: "\f5ad"; -} - -.fa-pen-square:before { - content: "\f14b"; -} - -.fa-pencil-alt:before { - content: "\f303"; -} - -.fa-pencil-ruler:before { - content: "\f5ae"; -} - -.fa-penny-arcade:before { - content: "\f704"; -} - -.fa-people-carry:before { - content: "\f4ce"; -} - -.fa-percent:before { - content: "\f295"; -} - -.fa-percentage:before { - content: "\f541"; -} - -.fa-periscope:before { - content: "\f3da"; -} - -.fa-person-booth:before { - content: "\f756"; -} - -.fa-phabricator:before { - content: "\f3db"; -} - -.fa-phoenix-framework:before { - content: "\f3dc"; -} - -.fa-phoenix-squadron:before { - content: "\f511"; -} - -.fa-phone:before { - content: "\f095"; -} - -.fa-phone-slash:before { - content: "\f3dd"; -} - -.fa-phone-square:before { - content: "\f098"; -} - -.fa-phone-volume:before { - content: "\f2a0"; -} - -.fa-php:before { - content: "\f457"; -} - -.fa-pied-piper:before { - content: "\f2ae"; -} - -.fa-pied-piper-alt:before { - content: "\f1a8"; -} - -.fa-pied-piper-hat:before { - content: "\f4e5"; -} - -.fa-pied-piper-pp:before { - content: "\f1a7"; -} - -.fa-piggy-bank:before { - content: "\f4d3"; -} - -.fa-pills:before { - content: "\f484"; -} - -.fa-pinterest:before { - content: "\f0d2"; -} - -.fa-pinterest-p:before { - content: "\f231"; -} - -.fa-pinterest-square:before { - content: "\f0d3"; -} - -.fa-place-of-worship:before { - content: "\f67f"; -} - -.fa-plane:before { - content: "\f072"; -} - -.fa-plane-arrival:before { - content: "\f5af"; -} - -.fa-plane-departure:before { - content: "\f5b0"; -} - -.fa-play:before { - content: "\f04b"; -} - -.fa-play-circle:before { - content: "\f144"; -} - -.fa-playstation:before { - content: "\f3df"; -} - -.fa-plug:before { - content: "\f1e6"; -} - -.fa-plus:before { - content: "\f067"; -} - -.fa-plus-circle:before { - content: "\f055"; -} - -.fa-plus-square:before { - content: "\f0fe"; -} - -.fa-podcast:before { - content: "\f2ce"; -} - -.fa-poll:before { - content: "\f681"; -} - -.fa-poll-h:before { - content: "\f682"; -} - -.fa-poo:before { - content: "\f2fe"; -} - -.fa-poo-storm:before { - content: "\f75a"; -} - -.fa-poop:before { - content: "\f619"; -} - -.fa-portrait:before { - content: "\f3e0"; -} - -.fa-pound-sign:before { - content: "\f154"; -} - -.fa-power-off:before { - content: "\f011"; -} - -.fa-pray:before { - content: "\f683"; -} - -.fa-praying-hands:before { - content: "\f684"; -} - -.fa-prescription:before { - content: "\f5b1"; -} - -.fa-prescription-bottle:before { - content: "\f485"; -} - -.fa-prescription-bottle-alt:before { - content: "\f486"; -} - -.fa-print:before { - content: "\f02f"; -} - -.fa-procedures:before { - content: "\f487"; -} - -.fa-product-hunt:before { - content: "\f288"; -} - -.fa-project-diagram:before { - content: "\f542"; -} - -.fa-pushed:before { - content: "\f3e1"; -} - -.fa-puzzle-piece:before { - content: "\f12e"; -} - -.fa-python:before { - content: "\f3e2"; -} - -.fa-qq:before { - content: "\f1d6"; -} - -.fa-qrcode:before { - content: "\f029"; -} - -.fa-question:before { - content: "\f128"; -} - -.fa-question-circle:before { - content: "\f059"; -} - -.fa-quidditch:before { - content: "\f458"; -} - -.fa-quinscape:before { - content: "\f459"; -} - -.fa-quora:before { - content: "\f2c4"; -} - -.fa-quote-left:before { - content: "\f10d"; -} - -.fa-quote-right:before { - content: "\f10e"; -} - -.fa-quran:before { - content: "\f687"; -} - -.fa-r-project:before { - content: "\f4f7"; -} - -.fa-rainbow:before { - content: "\f75b"; -} - -.fa-random:before { - content: "\f074"; -} - -.fa-ravelry:before { - content: "\f2d9"; -} - -.fa-react:before { - content: "\f41b"; -} - -.fa-reacteurope:before { - content: "\f75d"; -} - -.fa-readme:before { - content: "\f4d5"; -} - -.fa-rebel:before { - content: "\f1d0"; -} - -.fa-receipt:before { - content: "\f543"; -} - -.fa-recycle:before { - content: "\f1b8"; -} - -.fa-red-river:before { - content: "\f3e3"; -} - -.fa-reddit:before { - content: "\f1a1"; -} - -.fa-reddit-alien:before { - content: "\f281"; -} - -.fa-reddit-square:before { - content: "\f1a2"; -} - -.fa-redo:before { - content: "\f01e"; -} - -.fa-redo-alt:before { - content: "\f2f9"; -} - -.fa-registered:before { - content: "\f25d"; -} - -.fa-renren:before { - content: "\f18b"; -} - -.fa-reply:before { - content: "\f3e5"; -} - -.fa-reply-all:before { - content: "\f122"; -} - -.fa-replyd:before { - content: "\f3e6"; -} - -.fa-republican:before { - content: "\f75e"; -} - -.fa-researchgate:before { - content: "\f4f8"; -} - -.fa-resolving:before { - content: "\f3e7"; -} - -.fa-retweet:before { - content: "\f079"; -} - -.fa-rev:before { - content: "\f5b2"; -} - -.fa-ribbon:before { - content: "\f4d6"; -} - -.fa-ring:before { - content: "\f70b"; -} - -.fa-road:before { - content: "\f018"; -} - -.fa-robot:before { - content: "\f544"; -} - -.fa-rocket:before { - content: "\f135"; -} - -.fa-rocketchat:before { - content: "\f3e8"; -} - -.fa-rockrms:before { - content: "\f3e9"; -} - -.fa-route:before { - content: "\f4d7"; -} - -.fa-rss:before { - content: "\f09e"; -} - -.fa-rss-square:before { - content: "\f143"; -} - -.fa-ruble-sign:before { - content: "\f158"; -} - -.fa-ruler:before { - content: "\f545"; -} - -.fa-ruler-combined:before { - content: "\f546"; -} - -.fa-ruler-horizontal:before { - content: "\f547"; -} - -.fa-ruler-vertical:before { - content: "\f548"; -} - -.fa-running:before { - content: "\f70c"; -} - -.fa-rupee-sign:before { - content: "\f156"; -} - -.fa-sad-cry:before { - content: "\f5b3"; -} - -.fa-sad-tear:before { - content: "\f5b4"; -} - -.fa-safari:before { - content: "\f267"; -} - -.fa-sass:before { - content: "\f41e"; -} - -.fa-save:before { - content: "\f0c7"; -} - -.fa-schlix:before { - content: "\f3ea"; -} - -.fa-school:before { - content: "\f549"; -} - -.fa-screwdriver:before { - content: "\f54a"; -} - -.fa-scribd:before { - content: "\f28a"; -} - -.fa-scroll:before { - content: "\f70e"; -} - -.fa-search:before { - content: "\f002"; -} - -.fa-search-dollar:before { - content: "\f688"; -} - -.fa-search-location:before { - content: "\f689"; -} - -.fa-search-minus:before { - content: "\f010"; -} - -.fa-search-plus:before { - content: "\f00e"; -} - -.fa-searchengin:before { - content: "\f3eb"; -} - -.fa-seedling:before { - content: "\f4d8"; -} - -.fa-sellcast:before { - content: "\f2da"; -} - -.fa-sellsy:before { - content: "\f213"; -} - -.fa-server:before { - content: "\f233"; -} - -.fa-servicestack:before { - content: "\f3ec"; -} - -.fa-shapes:before { - content: "\f61f"; -} - -.fa-share:before { - content: "\f064"; -} - -.fa-share-alt:before { - content: "\f1e0"; -} - -.fa-share-alt-square:before { - content: "\f1e1"; -} - -.fa-share-square:before { - content: "\f14d"; -} - -.fa-shekel-sign:before { - content: "\f20b"; -} - -.fa-shield-alt:before { - content: "\f3ed"; -} - -.fa-ship:before { - content: "\f21a"; -} - -.fa-shipping-fast:before { - content: "\f48b"; -} - -.fa-shirtsinbulk:before { - content: "\f214"; -} - -.fa-shoe-prints:before { - content: "\f54b"; -} - -.fa-shopping-bag:before { - content: "\f290"; -} - -.fa-shopping-basket:before { - content: "\f291"; -} - -.fa-shopping-cart:before { - content: "\f07a"; -} - -.fa-shopware:before { - content: "\f5b5"; -} - -.fa-shower:before { - content: "\f2cc"; -} - -.fa-shuttle-van:before { - content: "\f5b6"; -} - -.fa-sign:before { - content: "\f4d9"; -} - -.fa-sign-in-alt:before { - content: "\f2f6"; -} - -.fa-sign-language:before { - content: "\f2a7"; -} - -.fa-sign-out-alt:before { - content: "\f2f5"; -} - -.fa-signal:before { - content: "\f012"; -} - -.fa-signature:before { - content: "\f5b7"; -} - -.fa-simplybuilt:before { - content: "\f215"; -} - -.fa-sistrix:before { - content: "\f3ee"; -} - -.fa-sitemap:before { - content: "\f0e8"; -} - -.fa-sith:before { - content: "\f512"; -} - -.fa-skull:before { - content: "\f54c"; -} - -.fa-skull-crossbones:before { - content: "\f714"; -} - -.fa-skyatlas:before { - content: "\f216"; -} - -.fa-skype:before { - content: "\f17e"; -} - -.fa-slack:before { - content: "\f198"; -} - -.fa-slack-hash:before { - content: "\f3ef"; -} - -.fa-slash:before { - content: "\f715"; -} - -.fa-sliders-h:before { - content: "\f1de"; -} - -.fa-slideshare:before { - content: "\f1e7"; -} - -.fa-smile:before { - content: "\f118"; -} - -.fa-smile-beam:before { - content: "\f5b8"; -} - -.fa-smile-wink:before { - content: "\f4da"; -} - -.fa-smog:before { - content: "\f75f"; -} - -.fa-smoking:before { - content: "\f48d"; -} - -.fa-smoking-ban:before { - content: "\f54d"; -} - -.fa-snapchat:before { - content: "\f2ab"; -} - -.fa-snapchat-ghost:before { - content: "\f2ac"; -} - -.fa-snapchat-square:before { - content: "\f2ad"; -} - -.fa-snowflake:before { - content: "\f2dc"; -} - -.fa-socks:before { - content: "\f696"; -} - -.fa-solar-panel:before { - content: "\f5ba"; -} - -.fa-sort:before { - content: "\f0dc"; -} - -.fa-sort-alpha-down:before { - content: "\f15d"; -} - -.fa-sort-alpha-up:before { - content: "\f15e"; -} - -.fa-sort-amount-down:before { - content: "\f160"; -} - -.fa-sort-amount-up:before { - content: "\f161"; -} - -.fa-sort-down:before { - content: "\f0dd"; -} - -.fa-sort-numeric-down:before { - content: "\f162"; -} - -.fa-sort-numeric-up:before { - content: "\f163"; -} - -.fa-sort-up:before { - content: "\f0de"; -} - -.fa-soundcloud:before { - content: "\f1be"; -} - -.fa-spa:before { - content: "\f5bb"; -} - -.fa-space-shuttle:before { - content: "\f197"; -} - -.fa-speakap:before { - content: "\f3f3"; -} - -.fa-spider:before { - content: "\f717"; -} - -.fa-spinner:before { - content: "\f110"; -} - -.fa-splotch:before { - content: "\f5bc"; -} - -.fa-spotify:before { - content: "\f1bc"; -} - -.fa-spray-can:before { - content: "\f5bd"; -} - -.fa-square:before { - content: "\f0c8"; -} - -.fa-square-full:before { - content: "\f45c"; -} - -.fa-square-root-alt:before { - content: "\f698"; -} - -.fa-squarespace:before { - content: "\f5be"; -} - -.fa-stack-exchange:before { - content: "\f18d"; -} - -.fa-stack-overflow:before { - content: "\f16c"; -} - -.fa-stamp:before { - content: "\f5bf"; -} - -.fa-star:before { - content: "\f005"; -} - -.fa-star-and-crescent:before { - content: "\f699"; -} - -.fa-star-half:before { - content: "\f089"; -} - -.fa-star-half-alt:before { - content: "\f5c0"; -} - -.fa-star-of-david:before { - content: "\f69a"; -} - -.fa-star-of-life:before { - content: "\f621"; -} - -.fa-staylinked:before { - content: "\f3f5"; -} - -.fa-steam:before { - content: "\f1b6"; -} - -.fa-steam-square:before { - content: "\f1b7"; -} - -.fa-steam-symbol:before { - content: "\f3f6"; -} - -.fa-step-backward:before { - content: "\f048"; -} - -.fa-step-forward:before { - content: "\f051"; -} - -.fa-stethoscope:before { - content: "\f0f1"; -} - -.fa-sticker-mule:before { - content: "\f3f7"; -} - -.fa-sticky-note:before { - content: "\f249"; -} - -.fa-stop:before { - content: "\f04d"; -} - -.fa-stop-circle:before { - content: "\f28d"; -} - -.fa-stopwatch:before { - content: "\f2f2"; -} - -.fa-store:before { - content: "\f54e"; -} - -.fa-store-alt:before { - content: "\f54f"; -} - -.fa-strava:before { - content: "\f428"; -} - -.fa-stream:before { - content: "\f550"; -} - -.fa-street-view:before { - content: "\f21d"; -} - -.fa-strikethrough:before { - content: "\f0cc"; -} - -.fa-stripe:before { - content: "\f429"; -} - -.fa-stripe-s:before { - content: "\f42a"; -} - -.fa-stroopwafel:before { - content: "\f551"; -} - -.fa-studiovinari:before { - content: "\f3f8"; -} - -.fa-stumbleupon:before { - content: "\f1a4"; -} - -.fa-stumbleupon-circle:before { - content: "\f1a3"; -} - -.fa-subscript:before { - content: "\f12c"; -} - -.fa-subway:before { - content: "\f239"; -} - -.fa-suitcase:before { - content: "\f0f2"; -} - -.fa-suitcase-rolling:before { - content: "\f5c1"; -} - -.fa-sun:before { - content: "\f185"; -} - -.fa-superpowers:before { - content: "\f2dd"; -} - -.fa-superscript:before { - content: "\f12b"; -} - -.fa-supple:before { - content: "\f3f9"; -} - -.fa-surprise:before { - content: "\f5c2"; -} - -.fa-swatchbook:before { - content: "\f5c3"; -} - -.fa-swimmer:before { - content: "\f5c4"; -} - -.fa-swimming-pool:before { - content: "\f5c5"; -} - -.fa-synagogue:before { - content: "\f69b"; -} - -.fa-sync:before { - content: "\f021"; -} - -.fa-sync-alt:before { - content: "\f2f1"; -} - -.fa-syringe:before { - content: "\f48e"; -} - -.fa-table:before { - content: "\f0ce"; -} - -.fa-table-tennis:before { - content: "\f45d"; -} - -.fa-tablet:before { - content: "\f10a"; -} - -.fa-tablet-alt:before { - content: "\f3fa"; -} - -.fa-tablets:before { - content: "\f490"; -} - -.fa-tachometer-alt:before { - content: "\f3fd"; -} - -.fa-tag:before { - content: "\f02b"; -} - -.fa-tags:before { - content: "\f02c"; -} - -.fa-tape:before { - content: "\f4db"; -} - -.fa-tasks:before { - content: "\f0ae"; -} - -.fa-taxi:before { - content: "\f1ba"; -} - -.fa-teamspeak:before { - content: "\f4f9"; -} - -.fa-teeth:before { - content: "\f62e"; -} - -.fa-teeth-open:before { - content: "\f62f"; -} - -.fa-telegram:before { - content: "\f2c6"; -} - -.fa-telegram-plane:before { - content: "\f3fe"; -} - -.fa-temperature-high:before { - content: "\f769"; -} - -.fa-temperature-low:before { - content: "\f76b"; -} - -.fa-tencent-weibo:before { - content: "\f1d5"; -} - -.fa-terminal:before { - content: "\f120"; -} - -.fa-text-height:before { - content: "\f034"; -} - -.fa-text-width:before { - content: "\f035"; -} - -.fa-th:before { - content: "\f00a"; -} - -.fa-th-large:before { - content: "\f009"; -} - -.fa-th-list:before { - content: "\f00b"; -} - -.fa-the-red-yeti:before { - content: "\f69d"; -} - -.fa-theater-masks:before { - content: "\f630"; -} - -.fa-themeco:before { - content: "\f5c6"; -} - -.fa-themeisle:before { - content: "\f2b2"; -} - -.fa-thermometer:before { - content: "\f491"; -} - -.fa-thermometer-empty:before { - content: "\f2cb"; -} - -.fa-thermometer-full:before { - content: "\f2c7"; -} - -.fa-thermometer-half:before { - content: "\f2c9"; -} - -.fa-thermometer-quarter:before { - content: "\f2ca"; -} - -.fa-thermometer-three-quarters:before { - content: "\f2c8"; -} - -.fa-think-peaks:before { - content: "\f731"; -} - -.fa-thumbs-down:before { - content: "\f165"; -} - -.fa-thumbs-up:before { - content: "\f164"; -} - -.fa-thumbtack:before { - content: "\f08d"; -} - -.fa-ticket-alt:before { - content: "\f3ff"; -} - -.fa-times:before { - content: "\f00d"; -} - -.fa-times-circle:before { - content: "\f057"; -} - -.fa-tint:before { - content: "\f043"; -} - -.fa-tint-slash:before { - content: "\f5c7"; -} - -.fa-tired:before { - content: "\f5c8"; -} - -.fa-toggle-off:before { - content: "\f204"; -} - -.fa-toggle-on:before { - content: "\f205"; -} - -.fa-toilet-paper:before { - content: "\f71e"; -} - -.fa-toolbox:before { - content: "\f552"; -} - -.fa-tooth:before { - content: "\f5c9"; -} - -.fa-torah:before { - content: "\f6a0"; -} - -.fa-torii-gate:before { - content: "\f6a1"; -} - -.fa-tractor:before { - content: "\f722"; -} - -.fa-trade-federation:before { - content: "\f513"; -} - -.fa-trademark:before { - content: "\f25c"; -} - -.fa-traffic-light:before { - content: "\f637"; -} - -.fa-train:before { - content: "\f238"; -} - -.fa-transgender:before { - content: "\f224"; -} - -.fa-transgender-alt:before { - content: "\f225"; -} - -.fa-trash:before { - content: "\f1f8"; -} - -.fa-trash-alt:before { - content: "\f2ed"; -} - -.fa-tree:before { - content: "\f1bb"; -} - -.fa-trello:before { - content: "\f181"; -} - -.fa-tripadvisor:before { - content: "\f262"; -} - -.fa-trophy:before { - content: "\f091"; -} - -.fa-truck:before { - content: "\f0d1"; -} - -.fa-truck-loading:before { - content: "\f4de"; -} - -.fa-truck-monster:before { - content: "\f63b"; -} - -.fa-truck-moving:before { - content: "\f4df"; -} - -.fa-truck-pickup:before { - content: "\f63c"; -} - -.fa-tshirt:before { - content: "\f553"; -} - -.fa-tty:before { - content: "\f1e4"; -} - -.fa-tumblr:before { - content: "\f173"; -} - -.fa-tumblr-square:before { - content: "\f174"; -} - -.fa-tv:before { - content: "\f26c"; -} - -.fa-twitch:before { - content: "\f1e8"; -} - -.fa-twitter:before { - content: "\f099"; -} - -.fa-twitter-square:before { - content: "\f081"; -} - -.fa-typo3:before { - content: "\f42b"; -} - -.fa-uber:before { - content: "\f402"; -} - -.fa-uikit:before { - content: "\f403"; -} - -.fa-umbrella:before { - content: "\f0e9"; -} - -.fa-umbrella-beach:before { - content: "\f5ca"; -} - -.fa-underline:before { - content: "\f0cd"; -} - -.fa-undo:before { - content: "\f0e2"; -} - -.fa-undo-alt:before { - content: "\f2ea"; -} - -.fa-uniregistry:before { - content: "\f404"; -} - -.fa-universal-access:before { - content: "\f29a"; -} - -.fa-university:before { - content: "\f19c"; -} - -.fa-unlink:before { - content: "\f127"; -} - -.fa-unlock:before { - content: "\f09c"; -} - -.fa-unlock-alt:before { - content: "\f13e"; -} - -.fa-untappd:before { - content: "\f405"; -} - -.fa-upload:before { - content: "\f093"; -} - -.fa-usb:before { - content: "\f287"; -} - -.fa-user:before { - content: "\f007"; -} - -.fa-user-alt:before { - content: "\f406"; -} - -.fa-user-alt-slash:before { - content: "\f4fa"; -} - -.fa-user-astronaut:before { - content: "\f4fb"; -} - -.fa-user-check:before { - content: "\f4fc"; -} - -.fa-user-circle:before { - content: "\f2bd"; -} - -.fa-user-clock:before { - content: "\f4fd"; -} - -.fa-user-cog:before { - content: "\f4fe"; -} - -.fa-user-edit:before { - content: "\f4ff"; -} - -.fa-user-friends:before { - content: "\f500"; -} - -.fa-user-graduate:before { - content: "\f501"; -} - -.fa-user-injured:before { - content: "\f728"; -} - -.fa-user-lock:before { - content: "\f502"; -} - -.fa-user-md:before { - content: "\f0f0"; -} - -.fa-user-minus:before { - content: "\f503"; -} - -.fa-user-ninja:before { - content: "\f504"; -} - -.fa-user-plus:before { - content: "\f234"; -} - -.fa-user-secret:before { - content: "\f21b"; -} - -.fa-user-shield:before { - content: "\f505"; -} - -.fa-user-slash:before { - content: "\f506"; -} - -.fa-user-tag:before { - content: "\f507"; -} - -.fa-user-tie:before { - content: "\f508"; -} - -.fa-user-times:before { - content: "\f235"; -} - -.fa-users:before { - content: "\f0c0"; -} - -.fa-users-cog:before { - content: "\f509"; -} - -.fa-ussunnah:before { - content: "\f407"; -} - -.fa-utensil-spoon:before { - content: "\f2e5"; -} - -.fa-utensils:before { - content: "\f2e7"; -} - -.fa-vaadin:before { - content: "\f408"; -} - -.fa-vector-square:before { - content: "\f5cb"; -} - -.fa-venus:before { - content: "\f221"; -} - -.fa-venus-double:before { - content: "\f226"; -} - -.fa-venus-mars:before { - content: "\f228"; -} - -.fa-viacoin:before { - content: "\f237"; -} - -.fa-viadeo:before { - content: "\f2a9"; -} - -.fa-viadeo-square:before { - content: "\f2aa"; -} - -.fa-vial:before { - content: "\f492"; -} - -.fa-vials:before { - content: "\f493"; -} - -.fa-viber:before { - content: "\f409"; -} - -.fa-video:before { - content: "\f03d"; -} - -.fa-video-slash:before { - content: "\f4e2"; -} - -.fa-vihara:before { - content: "\f6a7"; -} - -.fa-vimeo:before { - content: "\f40a"; -} - -.fa-vimeo-square:before { - content: "\f194"; -} - -.fa-vimeo-v:before { - content: "\f27d"; -} - -.fa-vine:before { - content: "\f1ca"; -} - -.fa-vk:before { - content: "\f189"; -} - -.fa-vnv:before { - content: "\f40b"; -} - -.fa-volleyball-ball:before { - content: "\f45f"; -} - -.fa-volume-down:before { - content: "\f027"; -} - -.fa-volume-mute:before { - content: "\f6a9"; -} - -.fa-volume-off:before { - content: "\f026"; -} - -.fa-volume-up:before { - content: "\f028"; -} - -.fa-vote-yea:before { - content: "\f772"; -} - -.fa-vr-cardboard:before { - content: "\f729"; -} - -.fa-vuejs:before { - content: "\f41f"; -} - -.fa-walking:before { - content: "\f554"; -} - -.fa-wallet:before { - content: "\f555"; -} - -.fa-warehouse:before { - content: "\f494"; -} - -.fa-water:before { - content: "\f773"; -} - -.fa-weebly:before { - content: "\f5cc"; -} - -.fa-weibo:before { - content: "\f18a"; -} - -.fa-weight:before { - content: "\f496"; -} - -.fa-weight-hanging:before { - content: "\f5cd"; -} - -.fa-weixin:before { - content: "\f1d7"; -} - -.fa-whatsapp:before { - content: "\f232"; -} - -.fa-whatsapp-square:before { - content: "\f40c"; -} - -.fa-wheelchair:before { - content: "\f193"; -} - -.fa-whmcs:before { - content: "\f40d"; -} - -.fa-wifi:before { - content: "\f1eb"; -} - -.fa-wikipedia-w:before { - content: "\f266"; -} - -.fa-wind:before { - content: "\f72e"; -} - -.fa-window-close:before { - content: "\f410"; -} - -.fa-window-maximize:before { - content: "\f2d0"; -} - -.fa-window-minimize:before { - content: "\f2d1"; -} - -.fa-window-restore:before { - content: "\f2d2"; -} - -.fa-windows:before { - content: "\f17a"; -} - -.fa-wine-bottle:before { - content: "\f72f"; -} - -.fa-wine-glass:before { - content: "\f4e3"; -} - -.fa-wine-glass-alt:before { - content: "\f5ce"; -} - -.fa-wix:before { - content: "\f5cf"; -} - -.fa-wizards-of-the-coast:before { - content: "\f730"; -} - -.fa-wolf-pack-battalion:before { - content: "\f514"; -} - -.fa-won-sign:before { - content: "\f159"; -} - -.fa-wordpress:before { - content: "\f19a"; -} - -.fa-wordpress-simple:before { - content: "\f411"; -} - -.fa-wpbeginner:before { - content: "\f297"; -} - -.fa-wpexplorer:before { - content: "\f2de"; -} - -.fa-wpforms:before { - content: "\f298"; -} - -.fa-wpressr:before { - content: "\f3e4"; -} - -.fa-wrench:before { - content: "\f0ad"; -} - -.fa-x-ray:before { - content: "\f497"; -} - -.fa-xbox:before { - content: "\f412"; -} - -.fa-xing:before { - content: "\f168"; -} - -.fa-xing-square:before { - content: "\f169"; -} - -.fa-y-combinator:before { - content: "\f23b"; -} - -.fa-yahoo:before { - content: "\f19e"; -} - -.fa-yandex:before { - content: "\f413"; -} - -.fa-yandex-international:before { - content: "\f414"; -} - -.fa-yelp:before { - content: "\f1e9"; -} - -.fa-yen-sign:before { - content: "\f157"; -} - -.fa-yin-yang:before { - content: "\f6ad"; -} - -.fa-yoast:before { - content: "\f2b1"; -} - -.fa-youtube:before { - content: "\f167"; -} - -.fa-youtube-square:before { - content: "\f431"; -} - -.fa-zhihu:before { - content: "\f63f"; -} - -.sr-only { - border: 0; - clip: rect(0, 0, 0, 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; -} - -.sr-only-focusable:active, -.sr-only-focusable:focus { - clip: auto; - height: auto; - margin: 0; - overflow: visible; - position: static; - width: auto; -} +/*! + * Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +.fa, +.fas, +.far, +.fal, +.fab { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; +} + +.fa-lg { + font-size: 1.33333em; + line-height: 0.75em; + vertical-align: -0.0667em; +} + +.fa-xs { + font-size: 0.75em; +} + +.fa-sm { + font-size: 0.875em; +} + +.fa-1x { + font-size: 1em; +} + +.fa-2x { + font-size: 2em; +} + +.fa-3x { + font-size: 3em; +} + +.fa-4x { + font-size: 4em; +} + +.fa-5x { + font-size: 5em; +} + +.fa-6x { + font-size: 6em; +} + +.fa-7x { + font-size: 7em; +} + +.fa-8x { + font-size: 8em; +} + +.fa-9x { + font-size: 9em; +} + +.fa-10x { + font-size: 10em; +} + +.fa-fw { + text-align: center; + width: 1.25em; +} + +.fa-ul { + list-style-type: none; + margin-left: 2.5em; + padding-left: 0; +} +.fa-ul > li { + position: relative; +} + +.fa-li { + left: -2em; + position: absolute; + text-align: center; + width: 2em; + line-height: inherit; +} + +.fa-border { + border: solid 0.08em #eee; + border-radius: 0.1em; + padding: 0.2em 0.25em 0.15em; +} + +.fa-pull-left { + float: left; +} + +.fa-pull-right { + float: right; +} + +.fa.fa-pull-left, +.fas.fa-pull-left, +.far.fa-pull-left, +.fal.fa-pull-left, +.fab.fa-pull-left { + margin-right: 0.3em; +} + +.fa.fa-pull-right, +.fas.fa-pull-right, +.far.fa-pull-right, +.fal.fa-pull-right, +.fab.fa-pull-right { + margin-left: 0.3em; +} + +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} + +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); +} + +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); +} + +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + transform: rotate(270deg); +} + +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + transform: scale(1, -1); +} + +.fa-flip-horizontal.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); +} + +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + -webkit-filter: none; + filter: none; +} + +.fa-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2.5em; +} + +.fa-stack-1x, +.fa-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; +} + +.fa-stack-1x { + line-height: inherit; +} + +.fa-stack-2x { + font-size: 2em; +} + +.fa-inverse { + color: #fff; +} + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen +readers do not read off random characters that represent icons */ +.fa-500px:before { + content: "\f26e"; +} + +.fa-accessible-icon:before { + content: "\f368"; +} + +.fa-accusoft:before { + content: "\f369"; +} + +.fa-acquisitions-incorporated:before { + content: "\f6af"; +} + +.fa-ad:before { + content: "\f641"; +} + +.fa-address-book:before { + content: "\f2b9"; +} + +.fa-address-card:before { + content: "\f2bb"; +} + +.fa-adjust:before { + content: "\f042"; +} + +.fa-adn:before { + content: "\f170"; +} + +.fa-adversal:before { + content: "\f36a"; +} + +.fa-affiliatetheme:before { + content: "\f36b"; +} + +.fa-air-freshener:before { + content: "\f5d0"; +} + +.fa-algolia:before { + content: "\f36c"; +} + +.fa-align-center:before { + content: "\f037"; +} + +.fa-align-justify:before { + content: "\f039"; +} + +.fa-align-left:before { + content: "\f036"; +} + +.fa-align-right:before { + content: "\f038"; +} + +.fa-alipay:before { + content: "\f642"; +} + +.fa-allergies:before { + content: "\f461"; +} + +.fa-amazon:before { + content: "\f270"; +} + +.fa-amazon-pay:before { + content: "\f42c"; +} + +.fa-ambulance:before { + content: "\f0f9"; +} + +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} + +.fa-amilia:before { + content: "\f36d"; +} + +.fa-anchor:before { + content: "\f13d"; +} + +.fa-android:before { + content: "\f17b"; +} + +.fa-angellist:before { + content: "\f209"; +} + +.fa-angle-double-down:before { + content: "\f103"; +} + +.fa-angle-double-left:before { + content: "\f100"; +} + +.fa-angle-double-right:before { + content: "\f101"; +} + +.fa-angle-double-up:before { + content: "\f102"; +} + +.fa-angle-down:before { + content: "\f107"; +} + +.fa-angle-left:before { + content: "\f104"; +} + +.fa-angle-right:before { + content: "\f105"; +} + +.fa-angle-up:before { + content: "\f106"; +} + +.fa-angry:before { + content: "\f556"; +} + +.fa-angrycreative:before { + content: "\f36e"; +} + +.fa-angular:before { + content: "\f420"; +} + +.fa-ankh:before { + content: "\f644"; +} + +.fa-app-store:before { + content: "\f36f"; +} + +.fa-app-store-ios:before { + content: "\f370"; +} + +.fa-apper:before { + content: "\f371"; +} + +.fa-apple:before { + content: "\f179"; +} + +.fa-apple-alt:before { + content: "\f5d1"; +} + +.fa-apple-pay:before { + content: "\f415"; +} + +.fa-archive:before { + content: "\f187"; +} + +.fa-archway:before { + content: "\f557"; +} + +.fa-arrow-alt-circle-down:before { + content: "\f358"; +} + +.fa-arrow-alt-circle-left:before { + content: "\f359"; +} + +.fa-arrow-alt-circle-right:before { + content: "\f35a"; +} + +.fa-arrow-alt-circle-up:before { + content: "\f35b"; +} + +.fa-arrow-circle-down:before { + content: "\f0ab"; +} + +.fa-arrow-circle-left:before { + content: "\f0a8"; +} + +.fa-arrow-circle-right:before { + content: "\f0a9"; +} + +.fa-arrow-circle-up:before { + content: "\f0aa"; +} + +.fa-arrow-down:before { + content: "\f063"; +} + +.fa-arrow-left:before { + content: "\f060"; +} + +.fa-arrow-right:before { + content: "\f061"; +} + +.fa-arrow-up:before { + content: "\f062"; +} + +.fa-arrows-alt:before { + content: "\f0b2"; +} + +.fa-arrows-alt-h:before { + content: "\f337"; +} + +.fa-arrows-alt-v:before { + content: "\f338"; +} + +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} + +.fa-asterisk:before { + content: "\f069"; +} + +.fa-asymmetrik:before { + content: "\f372"; +} + +.fa-at:before { + content: "\f1fa"; +} + +.fa-atlas:before { + content: "\f558"; +} + +.fa-atom:before { + content: "\f5d2"; +} + +.fa-audible:before { + content: "\f373"; +} + +.fa-audio-description:before { + content: "\f29e"; +} + +.fa-autoprefixer:before { + content: "\f41c"; +} + +.fa-avianex:before { + content: "\f374"; +} + +.fa-aviato:before { + content: "\f421"; +} + +.fa-award:before { + content: "\f559"; +} + +.fa-aws:before { + content: "\f375"; +} + +.fa-backspace:before { + content: "\f55a"; +} + +.fa-backward:before { + content: "\f04a"; +} + +.fa-balance-scale:before { + content: "\f24e"; +} + +.fa-ban:before { + content: "\f05e"; +} + +.fa-band-aid:before { + content: "\f462"; +} + +.fa-bandcamp:before { + content: "\f2d5"; +} + +.fa-barcode:before { + content: "\f02a"; +} + +.fa-bars:before { + content: "\f0c9"; +} + +.fa-baseball-ball:before { + content: "\f433"; +} + +.fa-basketball-ball:before { + content: "\f434"; +} + +.fa-bath:before { + content: "\f2cd"; +} + +.fa-battery-empty:before { + content: "\f244"; +} + +.fa-battery-full:before { + content: "\f240"; +} + +.fa-battery-half:before { + content: "\f242"; +} + +.fa-battery-quarter:before { + content: "\f243"; +} + +.fa-battery-three-quarters:before { + content: "\f241"; +} + +.fa-bed:before { + content: "\f236"; +} + +.fa-beer:before { + content: "\f0fc"; +} + +.fa-behance:before { + content: "\f1b4"; +} + +.fa-behance-square:before { + content: "\f1b5"; +} + +.fa-bell:before { + content: "\f0f3"; +} + +.fa-bell-slash:before { + content: "\f1f6"; +} + +.fa-bezier-curve:before { + content: "\f55b"; +} + +.fa-bible:before { + content: "\f647"; +} + +.fa-bicycle:before { + content: "\f206"; +} + +.fa-bimobject:before { + content: "\f378"; +} + +.fa-binoculars:before { + content: "\f1e5"; +} + +.fa-birthday-cake:before { + content: "\f1fd"; +} + +.fa-bitbucket:before { + content: "\f171"; +} + +.fa-bitcoin:before { + content: "\f379"; +} + +.fa-bity:before { + content: "\f37a"; +} + +.fa-black-tie:before { + content: "\f27e"; +} + +.fa-blackberry:before { + content: "\f37b"; +} + +.fa-blender:before { + content: "\f517"; +} + +.fa-blender-phone:before { + content: "\f6b6"; +} + +.fa-blind:before { + content: "\f29d"; +} + +.fa-blogger:before { + content: "\f37c"; +} + +.fa-blogger-b:before { + content: "\f37d"; +} + +.fa-bluetooth:before { + content: "\f293"; +} + +.fa-bluetooth-b:before { + content: "\f294"; +} + +.fa-bold:before { + content: "\f032"; +} + +.fa-bolt:before { + content: "\f0e7"; +} + +.fa-bomb:before { + content: "\f1e2"; +} + +.fa-bone:before { + content: "\f5d7"; +} + +.fa-bong:before { + content: "\f55c"; +} + +.fa-book:before { + content: "\f02d"; +} + +.fa-book-dead:before { + content: "\f6b7"; +} + +.fa-book-open:before { + content: "\f518"; +} + +.fa-book-reader:before { + content: "\f5da"; +} + +.fa-bookmark:before { + content: "\f02e"; +} + +.fa-bowling-ball:before { + content: "\f436"; +} + +.fa-box:before { + content: "\f466"; +} + +.fa-box-open:before { + content: "\f49e"; +} + +.fa-boxes:before { + content: "\f468"; +} + +.fa-braille:before { + content: "\f2a1"; +} + +.fa-brain:before { + content: "\f5dc"; +} + +.fa-briefcase:before { + content: "\f0b1"; +} + +.fa-briefcase-medical:before { + content: "\f469"; +} + +.fa-broadcast-tower:before { + content: "\f519"; +} + +.fa-broom:before { + content: "\f51a"; +} + +.fa-brush:before { + content: "\f55d"; +} + +.fa-btc:before { + content: "\f15a"; +} + +.fa-bug:before { + content: "\f188"; +} + +.fa-building:before { + content: "\f1ad"; +} + +.fa-bullhorn:before { + content: "\f0a1"; +} + +.fa-bullseye:before { + content: "\f140"; +} + +.fa-burn:before { + content: "\f46a"; +} + +.fa-buromobelexperte:before { + content: "\f37f"; +} + +.fa-bus:before { + content: "\f207"; +} + +.fa-bus-alt:before { + content: "\f55e"; +} + +.fa-business-time:before { + content: "\f64a"; +} + +.fa-buysellads:before { + content: "\f20d"; +} + +.fa-calculator:before { + content: "\f1ec"; +} + +.fa-calendar:before { + content: "\f133"; +} + +.fa-calendar-alt:before { + content: "\f073"; +} + +.fa-calendar-check:before { + content: "\f274"; +} + +.fa-calendar-minus:before { + content: "\f272"; +} + +.fa-calendar-plus:before { + content: "\f271"; +} + +.fa-calendar-times:before { + content: "\f273"; +} + +.fa-camera:before { + content: "\f030"; +} + +.fa-camera-retro:before { + content: "\f083"; +} + +.fa-campground:before { + content: "\f6bb"; +} + +.fa-cannabis:before { + content: "\f55f"; +} + +.fa-capsules:before { + content: "\f46b"; +} + +.fa-car:before { + content: "\f1b9"; +} + +.fa-car-alt:before { + content: "\f5de"; +} + +.fa-car-battery:before { + content: "\f5df"; +} + +.fa-car-crash:before { + content: "\f5e1"; +} + +.fa-car-side:before { + content: "\f5e4"; +} + +.fa-caret-down:before { + content: "\f0d7"; +} + +.fa-caret-left:before { + content: "\f0d9"; +} + +.fa-caret-right:before { + content: "\f0da"; +} + +.fa-caret-square-down:before { + content: "\f150"; +} + +.fa-caret-square-left:before { + content: "\f191"; +} + +.fa-caret-square-right:before { + content: "\f152"; +} + +.fa-caret-square-up:before { + content: "\f151"; +} + +.fa-caret-up:before { + content: "\f0d8"; +} + +.fa-cart-arrow-down:before { + content: "\f218"; +} + +.fa-cart-plus:before { + content: "\f217"; +} + +.fa-cat:before { + content: "\f6be"; +} + +.fa-cc-amazon-pay:before { + content: "\f42d"; +} + +.fa-cc-amex:before { + content: "\f1f3"; +} + +.fa-cc-apple-pay:before { + content: "\f416"; +} + +.fa-cc-diners-club:before { + content: "\f24c"; +} + +.fa-cc-discover:before { + content: "\f1f2"; +} + +.fa-cc-jcb:before { + content: "\f24b"; +} + +.fa-cc-mastercard:before { + content: "\f1f1"; +} + +.fa-cc-paypal:before { + content: "\f1f4"; +} + +.fa-cc-stripe:before { + content: "\f1f5"; +} + +.fa-cc-visa:before { + content: "\f1f0"; +} + +.fa-centercode:before { + content: "\f380"; +} + +.fa-certificate:before { + content: "\f0a3"; +} + +.fa-chair:before { + content: "\f6c0"; +} + +.fa-chalkboard:before { + content: "\f51b"; +} + +.fa-chalkboard-teacher:before { + content: "\f51c"; +} + +.fa-charging-station:before { + content: "\f5e7"; +} + +.fa-chart-area:before { + content: "\f1fe"; +} + +.fa-chart-bar:before { + content: "\f080"; +} + +.fa-chart-line:before { + content: "\f201"; +} + +.fa-chart-pie:before { + content: "\f200"; +} + +.fa-check:before { + content: "\f00c"; +} + +.fa-check-circle:before { + content: "\f058"; +} + +.fa-check-double:before { + content: "\f560"; +} + +.fa-check-square:before { + content: "\f14a"; +} + +.fa-chess:before { + content: "\f439"; +} + +.fa-chess-bishop:before { + content: "\f43a"; +} + +.fa-chess-board:before { + content: "\f43c"; +} + +.fa-chess-king:before { + content: "\f43f"; +} + +.fa-chess-knight:before { + content: "\f441"; +} + +.fa-chess-pawn:before { + content: "\f443"; +} + +.fa-chess-queen:before { + content: "\f445"; +} + +.fa-chess-rook:before { + content: "\f447"; +} + +.fa-chevron-circle-down:before { + content: "\f13a"; +} + +.fa-chevron-circle-left:before { + content: "\f137"; +} + +.fa-chevron-circle-right:before { + content: "\f138"; +} + +.fa-chevron-circle-up:before { + content: "\f139"; +} + +.fa-chevron-down:before { + content: "\f078"; +} + +.fa-chevron-left:before { + content: "\f053"; +} + +.fa-chevron-right:before { + content: "\f054"; +} + +.fa-chevron-up:before { + content: "\f077"; +} + +.fa-child:before { + content: "\f1ae"; +} + +.fa-chrome:before { + content: "\f268"; +} + +.fa-church:before { + content: "\f51d"; +} + +.fa-circle:before { + content: "\f111"; +} + +.fa-circle-notch:before { + content: "\f1ce"; +} + +.fa-city:before { + content: "\f64f"; +} + +.fa-clipboard:before { + content: "\f328"; +} + +.fa-clipboard-check:before { + content: "\f46c"; +} + +.fa-clipboard-list:before { + content: "\f46d"; +} + +.fa-clock:before { + content: "\f017"; +} + +.fa-clone:before { + content: "\f24d"; +} + +.fa-closed-captioning:before { + content: "\f20a"; +} + +.fa-cloud:before { + content: "\f0c2"; +} + +.fa-cloud-download-alt:before { + content: "\f381"; +} + +.fa-cloud-meatball:before { + content: "\f73b"; +} + +.fa-cloud-moon:before { + content: "\f6c3"; +} + +.fa-cloud-moon-rain:before { + content: "\f73c"; +} + +.fa-cloud-rain:before { + content: "\f73d"; +} + +.fa-cloud-showers-heavy:before { + content: "\f740"; +} + +.fa-cloud-sun:before { + content: "\f6c4"; +} + +.fa-cloud-sun-rain:before { + content: "\f743"; +} + +.fa-cloud-upload-alt:before { + content: "\f382"; +} + +.fa-cloudscale:before { + content: "\f383"; +} + +.fa-cloudsmith:before { + content: "\f384"; +} + +.fa-cloudversify:before { + content: "\f385"; +} + +.fa-cocktail:before { + content: "\f561"; +} + +.fa-code:before { + content: "\f121"; +} + +.fa-code-branch:before { + content: "\f126"; +} + +.fa-codepen:before { + content: "\f1cb"; +} + +.fa-codiepie:before { + content: "\f284"; +} + +.fa-coffee:before { + content: "\f0f4"; +} + +.fa-cog:before { + content: "\f013"; +} + +.fa-cogs:before { + content: "\f085"; +} + +.fa-coins:before { + content: "\f51e"; +} + +.fa-columns:before { + content: "\f0db"; +} + +.fa-comment:before { + content: "\f075"; +} + +.fa-comment-alt:before { + content: "\f27a"; +} + +.fa-comment-dollar:before { + content: "\f651"; +} + +.fa-comment-dots:before { + content: "\f4ad"; +} + +.fa-comment-slash:before { + content: "\f4b3"; +} + +.fa-comments:before { + content: "\f086"; +} + +.fa-comments-dollar:before { + content: "\f653"; +} + +.fa-compact-disc:before { + content: "\f51f"; +} + +.fa-compass:before { + content: "\f14e"; +} + +.fa-compress:before { + content: "\f066"; +} + +.fa-concierge-bell:before { + content: "\f562"; +} + +.fa-connectdevelop:before { + content: "\f20e"; +} + +.fa-contao:before { + content: "\f26d"; +} + +.fa-cookie:before { + content: "\f563"; +} + +.fa-cookie-bite:before { + content: "\f564"; +} + +.fa-copy:before { + content: "\f0c5"; +} + +.fa-copyright:before { + content: "\f1f9"; +} + +.fa-couch:before { + content: "\f4b8"; +} + +.fa-cpanel:before { + content: "\f388"; +} + +.fa-creative-commons:before { + content: "\f25e"; +} + +.fa-creative-commons-by:before { + content: "\f4e7"; +} + +.fa-creative-commons-nc:before { + content: "\f4e8"; +} + +.fa-creative-commons-nc-eu:before { + content: "\f4e9"; +} + +.fa-creative-commons-nc-jp:before { + content: "\f4ea"; +} + +.fa-creative-commons-nd:before { + content: "\f4eb"; +} + +.fa-creative-commons-pd:before { + content: "\f4ec"; +} + +.fa-creative-commons-pd-alt:before { + content: "\f4ed"; +} + +.fa-creative-commons-remix:before { + content: "\f4ee"; +} + +.fa-creative-commons-sa:before { + content: "\f4ef"; +} + +.fa-creative-commons-sampling:before { + content: "\f4f0"; +} + +.fa-creative-commons-sampling-plus:before { + content: "\f4f1"; +} + +.fa-creative-commons-share:before { + content: "\f4f2"; +} + +.fa-creative-commons-zero:before { + content: "\f4f3"; +} + +.fa-credit-card:before { + content: "\f09d"; +} + +.fa-critical-role:before { + content: "\f6c9"; +} + +.fa-crop:before { + content: "\f125"; +} + +.fa-crop-alt:before { + content: "\f565"; +} + +.fa-cross:before { + content: "\f654"; +} + +.fa-crosshairs:before { + content: "\f05b"; +} + +.fa-crow:before { + content: "\f520"; +} + +.fa-crown:before { + content: "\f521"; +} + +.fa-css3:before { + content: "\f13c"; +} + +.fa-css3-alt:before { + content: "\f38b"; +} + +.fa-cube:before { + content: "\f1b2"; +} + +.fa-cubes:before { + content: "\f1b3"; +} + +.fa-cut:before { + content: "\f0c4"; +} + +.fa-cuttlefish:before { + content: "\f38c"; +} + +.fa-d-and-d:before { + content: "\f38d"; +} + +.fa-d-and-d-beyond:before { + content: "\f6ca"; +} + +.fa-dashcube:before { + content: "\f210"; +} + +.fa-database:before { + content: "\f1c0"; +} + +.fa-deaf:before { + content: "\f2a4"; +} + +.fa-delicious:before { + content: "\f1a5"; +} + +.fa-democrat:before { + content: "\f747"; +} + +.fa-deploydog:before { + content: "\f38e"; +} + +.fa-deskpro:before { + content: "\f38f"; +} + +.fa-desktop:before { + content: "\f108"; +} + +.fa-dev:before { + content: "\f6cc"; +} + +.fa-deviantart:before { + content: "\f1bd"; +} + +.fa-dharmachakra:before { + content: "\f655"; +} + +.fa-diagnoses:before { + content: "\f470"; +} + +.fa-dice:before { + content: "\f522"; +} + +.fa-dice-d20:before { + content: "\f6cf"; +} + +.fa-dice-d6:before { + content: "\f6d1"; +} + +.fa-dice-five:before { + content: "\f523"; +} + +.fa-dice-four:before { + content: "\f524"; +} + +.fa-dice-one:before { + content: "\f525"; +} + +.fa-dice-six:before { + content: "\f526"; +} + +.fa-dice-three:before { + content: "\f527"; +} + +.fa-dice-two:before { + content: "\f528"; +} + +.fa-digg:before { + content: "\f1a6"; +} + +.fa-digital-ocean:before { + content: "\f391"; +} + +.fa-digital-tachograph:before { + content: "\f566"; +} + +.fa-directions:before { + content: "\f5eb"; +} + +.fa-discord:before { + content: "\f392"; +} + +.fa-discourse:before { + content: "\f393"; +} + +.fa-divide:before { + content: "\f529"; +} + +.fa-dizzy:before { + content: "\f567"; +} + +.fa-dna:before { + content: "\f471"; +} + +.fa-dochub:before { + content: "\f394"; +} + +.fa-docker:before { + content: "\f395"; +} + +.fa-dog:before { + content: "\f6d3"; +} + +.fa-dollar-sign:before { + content: "\f155"; +} + +.fa-dolly:before { + content: "\f472"; +} + +.fa-dolly-flatbed:before { + content: "\f474"; +} + +.fa-donate:before { + content: "\f4b9"; +} + +.fa-door-closed:before { + content: "\f52a"; +} + +.fa-door-open:before { + content: "\f52b"; +} + +.fa-dot-circle:before { + content: "\f192"; +} + +.fa-dove:before { + content: "\f4ba"; +} + +.fa-download:before { + content: "\f019"; +} + +.fa-draft2digital:before { + content: "\f396"; +} + +.fa-drafting-compass:before { + content: "\f568"; +} + +.fa-dragon:before { + content: "\f6d5"; +} + +.fa-draw-polygon:before { + content: "\f5ee"; +} + +.fa-dribbble:before { + content: "\f17d"; +} + +.fa-dribbble-square:before { + content: "\f397"; +} + +.fa-dropbox:before { + content: "\f16b"; +} + +.fa-drum:before { + content: "\f569"; +} + +.fa-drum-steelpan:before { + content: "\f56a"; +} + +.fa-drumstick-bite:before { + content: "\f6d7"; +} + +.fa-drupal:before { + content: "\f1a9"; +} + +.fa-dumbbell:before { + content: "\f44b"; +} + +.fa-dungeon:before { + content: "\f6d9"; +} + +.fa-dyalog:before { + content: "\f399"; +} + +.fa-earlybirds:before { + content: "\f39a"; +} + +.fa-ebay:before { + content: "\f4f4"; +} + +.fa-edge:before { + content: "\f282"; +} + +.fa-edit:before { + content: "\f044"; +} + +.fa-eject:before { + content: "\f052"; +} + +.fa-elementor:before { + content: "\f430"; +} + +.fa-ellipsis-h:before { + content: "\f141"; +} + +.fa-ellipsis-v:before { + content: "\f142"; +} + +.fa-ello:before { + content: "\f5f1"; +} + +.fa-ember:before { + content: "\f423"; +} + +.fa-empire:before { + content: "\f1d1"; +} + +.fa-envelope:before { + content: "\f0e0"; +} + +.fa-envelope-open:before { + content: "\f2b6"; +} + +.fa-envelope-open-text:before { + content: "\f658"; +} + +.fa-envelope-square:before { + content: "\f199"; +} + +.fa-envira:before { + content: "\f299"; +} + +.fa-equals:before { + content: "\f52c"; +} + +.fa-eraser:before { + content: "\f12d"; +} + +.fa-erlang:before { + content: "\f39d"; +} + +.fa-ethereum:before { + content: "\f42e"; +} + +.fa-etsy:before { + content: "\f2d7"; +} + +.fa-euro-sign:before { + content: "\f153"; +} + +.fa-exchange-alt:before { + content: "\f362"; +} + +.fa-exclamation:before { + content: "\f12a"; +} + +.fa-exclamation-circle:before { + content: "\f06a"; +} + +.fa-exclamation-triangle:before { + content: "\f071"; +} + +.fa-expand:before { + content: "\f065"; +} + +.fa-expand-arrows-alt:before { + content: "\f31e"; +} + +.fa-expeditedssl:before { + content: "\f23e"; +} + +.fa-external-link-alt:before { + content: "\f35d"; +} + +.fa-external-link-square-alt:before { + content: "\f360"; +} + +.fa-eye:before { + content: "\f06e"; +} + +.fa-eye-dropper:before { + content: "\f1fb"; +} + +.fa-eye-slash:before { + content: "\f070"; +} + +.fa-facebook:before { + content: "\f09a"; +} + +.fa-facebook-f:before { + content: "\f39e"; +} + +.fa-facebook-messenger:before { + content: "\f39f"; +} + +.fa-facebook-square:before { + content: "\f082"; +} + +.fa-fantasy-flight-games:before { + content: "\f6dc"; +} + +.fa-fast-backward:before { + content: "\f049"; +} + +.fa-fast-forward:before { + content: "\f050"; +} + +.fa-fax:before { + content: "\f1ac"; +} + +.fa-feather:before { + content: "\f52d"; +} + +.fa-feather-alt:before { + content: "\f56b"; +} + +.fa-female:before { + content: "\f182"; +} + +.fa-fighter-jet:before { + content: "\f0fb"; +} + +.fa-file:before { + content: "\f15b"; +} + +.fa-file-alt:before { + content: "\f15c"; +} + +.fa-file-archive:before { + content: "\f1c6"; +} + +.fa-file-audio:before { + content: "\f1c7"; +} + +.fa-file-code:before { + content: "\f1c9"; +} + +.fa-file-contract:before { + content: "\f56c"; +} + +.fa-file-csv:before { + content: "\f6dd"; +} + +.fa-file-download:before { + content: "\f56d"; +} + +.fa-file-excel:before { + content: "\f1c3"; +} + +.fa-file-export:before { + content: "\f56e"; +} + +.fa-file-image:before { + content: "\f1c5"; +} + +.fa-file-import:before { + content: "\f56f"; +} + +.fa-file-invoice:before { + content: "\f570"; +} + +.fa-file-invoice-dollar:before { + content: "\f571"; +} + +.fa-file-medical:before { + content: "\f477"; +} + +.fa-file-medical-alt:before { + content: "\f478"; +} + +.fa-file-pdf:before { + content: "\f1c1"; +} + +.fa-file-powerpoint:before { + content: "\f1c4"; +} + +.fa-file-prescription:before { + content: "\f572"; +} + +.fa-file-signature:before { + content: "\f573"; +} + +.fa-file-upload:before { + content: "\f574"; +} + +.fa-file-video:before { + content: "\f1c8"; +} + +.fa-file-word:before { + content: "\f1c2"; +} + +.fa-fill:before { + content: "\f575"; +} + +.fa-fill-drip:before { + content: "\f576"; +} + +.fa-film:before { + content: "\f008"; +} + +.fa-filter:before { + content: "\f0b0"; +} + +.fa-fingerprint:before { + content: "\f577"; +} + +.fa-fire:before { + content: "\f06d"; +} + +.fa-fire-extinguisher:before { + content: "\f134"; +} + +.fa-firefox:before { + content: "\f269"; +} + +.fa-first-aid:before { + content: "\f479"; +} + +.fa-first-order:before { + content: "\f2b0"; +} + +.fa-first-order-alt:before { + content: "\f50a"; +} + +.fa-firstdraft:before { + content: "\f3a1"; +} + +.fa-fish:before { + content: "\f578"; +} + +.fa-fist-raised:before { + content: "\f6de"; +} + +.fa-flag:before { + content: "\f024"; +} + +.fa-flag-checkered:before { + content: "\f11e"; +} + +.fa-flag-usa:before { + content: "\f74d"; +} + +.fa-flask:before { + content: "\f0c3"; +} + +.fa-flickr:before { + content: "\f16e"; +} + +.fa-flipboard:before { + content: "\f44d"; +} + +.fa-flushed:before { + content: "\f579"; +} + +.fa-fly:before { + content: "\f417"; +} + +.fa-folder:before { + content: "\f07b"; +} + +.fa-folder-minus:before { + content: "\f65d"; +} + +.fa-folder-open:before { + content: "\f07c"; +} + +.fa-folder-plus:before { + content: "\f65e"; +} + +.fa-font:before { + content: "\f031"; +} + +.fa-font-awesome:before { + content: "\f2b4"; +} + +.fa-font-awesome-alt:before { + content: "\f35c"; +} + +.fa-font-awesome-flag:before { + content: "\f425"; +} + +.fa-font-awesome-logo-full:before { + content: "\f4e6"; +} + +.fa-fonticons:before { + content: "\f280"; +} + +.fa-fonticons-fi:before { + content: "\f3a2"; +} + +.fa-football-ball:before { + content: "\f44e"; +} + +.fa-fort-awesome:before { + content: "\f286"; +} + +.fa-fort-awesome-alt:before { + content: "\f3a3"; +} + +.fa-forumbee:before { + content: "\f211"; +} + +.fa-forward:before { + content: "\f04e"; +} + +.fa-foursquare:before { + content: "\f180"; +} + +.fa-free-code-camp:before { + content: "\f2c5"; +} + +.fa-freebsd:before { + content: "\f3a4"; +} + +.fa-frog:before { + content: "\f52e"; +} + +.fa-frown:before { + content: "\f119"; +} + +.fa-frown-open:before { + content: "\f57a"; +} + +.fa-fulcrum:before { + content: "\f50b"; +} + +.fa-funnel-dollar:before { + content: "\f662"; +} + +.fa-futbol:before { + content: "\f1e3"; +} + +.fa-galactic-republic:before { + content: "\f50c"; +} + +.fa-galactic-senate:before { + content: "\f50d"; +} + +.fa-gamepad:before { + content: "\f11b"; +} + +.fa-gas-pump:before { + content: "\f52f"; +} + +.fa-gavel:before { + content: "\f0e3"; +} + +.fa-gem:before { + content: "\f3a5"; +} + +.fa-genderless:before { + content: "\f22d"; +} + +.fa-get-pocket:before { + content: "\f265"; +} + +.fa-gg:before { + content: "\f260"; +} + +.fa-gg-circle:before { + content: "\f261"; +} + +.fa-ghost:before { + content: "\f6e2"; +} + +.fa-gift:before { + content: "\f06b"; +} + +.fa-git:before { + content: "\f1d3"; +} + +.fa-git-square:before { + content: "\f1d2"; +} + +.fa-github:before { + content: "\f09b"; +} + +.fa-github-alt:before { + content: "\f113"; +} + +.fa-github-square:before { + content: "\f092"; +} + +.fa-gitkraken:before { + content: "\f3a6"; +} + +.fa-gitlab:before { + content: "\f296"; +} + +.fa-gitter:before { + content: "\f426"; +} + +.fa-glass-martini:before { + content: "\f000"; +} + +.fa-glass-martini-alt:before { + content: "\f57b"; +} + +.fa-glasses:before { + content: "\f530"; +} + +.fa-glide:before { + content: "\f2a5"; +} + +.fa-glide-g:before { + content: "\f2a6"; +} + +.fa-globe:before { + content: "\f0ac"; +} + +.fa-globe-africa:before { + content: "\f57c"; +} + +.fa-globe-americas:before { + content: "\f57d"; +} + +.fa-globe-asia:before { + content: "\f57e"; +} + +.fa-gofore:before { + content: "\f3a7"; +} + +.fa-golf-ball:before { + content: "\f450"; +} + +.fa-goodreads:before { + content: "\f3a8"; +} + +.fa-goodreads-g:before { + content: "\f3a9"; +} + +.fa-google:before { + content: "\f1a0"; +} + +.fa-google-drive:before { + content: "\f3aa"; +} + +.fa-google-play:before { + content: "\f3ab"; +} + +.fa-google-plus:before { + content: "\f2b3"; +} + +.fa-google-plus-g:before { + content: "\f0d5"; +} + +.fa-google-plus-square:before { + content: "\f0d4"; +} + +.fa-google-wallet:before { + content: "\f1ee"; +} + +.fa-gopuram:before { + content: "\f664"; +} + +.fa-graduation-cap:before { + content: "\f19d"; +} + +.fa-gratipay:before { + content: "\f184"; +} + +.fa-grav:before { + content: "\f2d6"; +} + +.fa-greater-than:before { + content: "\f531"; +} + +.fa-greater-than-equal:before { + content: "\f532"; +} + +.fa-grimace:before { + content: "\f57f"; +} + +.fa-grin:before { + content: "\f580"; +} + +.fa-grin-alt:before { + content: "\f581"; +} + +.fa-grin-beam:before { + content: "\f582"; +} + +.fa-grin-beam-sweat:before { + content: "\f583"; +} + +.fa-grin-hearts:before { + content: "\f584"; +} + +.fa-grin-squint:before { + content: "\f585"; +} + +.fa-grin-squint-tears:before { + content: "\f586"; +} + +.fa-grin-stars:before { + content: "\f587"; +} + +.fa-grin-tears:before { + content: "\f588"; +} + +.fa-grin-tongue:before { + content: "\f589"; +} + +.fa-grin-tongue-squint:before { + content: "\f58a"; +} + +.fa-grin-tongue-wink:before { + content: "\f58b"; +} + +.fa-grin-wink:before { + content: "\f58c"; +} + +.fa-grip-horizontal:before { + content: "\f58d"; +} + +.fa-grip-vertical:before { + content: "\f58e"; +} + +.fa-gripfire:before { + content: "\f3ac"; +} + +.fa-grunt:before { + content: "\f3ad"; +} + +.fa-gulp:before { + content: "\f3ae"; +} + +.fa-h-square:before { + content: "\f0fd"; +} + +.fa-hacker-news:before { + content: "\f1d4"; +} + +.fa-hacker-news-square:before { + content: "\f3af"; +} + +.fa-hackerrank:before { + content: "\f5f7"; +} + +.fa-hammer:before { + content: "\f6e3"; +} + +.fa-hamsa:before { + content: "\f665"; +} + +.fa-hand-holding:before { + content: "\f4bd"; +} + +.fa-hand-holding-heart:before { + content: "\f4be"; +} + +.fa-hand-holding-usd:before { + content: "\f4c0"; +} + +.fa-hand-lizard:before { + content: "\f258"; +} + +.fa-hand-paper:before { + content: "\f256"; +} + +.fa-hand-peace:before { + content: "\f25b"; +} + +.fa-hand-point-down:before { + content: "\f0a7"; +} + +.fa-hand-point-left:before { + content: "\f0a5"; +} + +.fa-hand-point-right:before { + content: "\f0a4"; +} + +.fa-hand-point-up:before { + content: "\f0a6"; +} + +.fa-hand-pointer:before { + content: "\f25a"; +} + +.fa-hand-rock:before { + content: "\f255"; +} + +.fa-hand-scissors:before { + content: "\f257"; +} + +.fa-hand-spock:before { + content: "\f259"; +} + +.fa-hands:before { + content: "\f4c2"; +} + +.fa-hands-helping:before { + content: "\f4c4"; +} + +.fa-handshake:before { + content: "\f2b5"; +} + +.fa-hanukiah:before { + content: "\f6e6"; +} + +.fa-hashtag:before { + content: "\f292"; +} + +.fa-hat-wizard:before { + content: "\f6e8"; +} + +.fa-haykal:before { + content: "\f666"; +} + +.fa-hdd:before { + content: "\f0a0"; +} + +.fa-heading:before { + content: "\f1dc"; +} + +.fa-headphones:before { + content: "\f025"; +} + +.fa-headphones-alt:before { + content: "\f58f"; +} + +.fa-headset:before { + content: "\f590"; +} + +.fa-heart:before { + content: "\f004"; +} + +.fa-heartbeat:before { + content: "\f21e"; +} + +.fa-helicopter:before { + content: "\f533"; +} + +.fa-highlighter:before { + content: "\f591"; +} + +.fa-hiking:before { + content: "\f6ec"; +} + +.fa-hippo:before { + content: "\f6ed"; +} + +.fa-hips:before { + content: "\f452"; +} + +.fa-hire-a-helper:before { + content: "\f3b0"; +} + +.fa-history:before { + content: "\f1da"; +} + +.fa-hockey-puck:before { + content: "\f453"; +} + +.fa-home:before { + content: "\f015"; +} + +.fa-hooli:before { + content: "\f427"; +} + +.fa-hornbill:before { + content: "\f592"; +} + +.fa-horse:before { + content: "\f6f0"; +} + +.fa-hospital:before { + content: "\f0f8"; +} + +.fa-hospital-alt:before { + content: "\f47d"; +} + +.fa-hospital-symbol:before { + content: "\f47e"; +} + +.fa-hot-tub:before { + content: "\f593"; +} + +.fa-hotel:before { + content: "\f594"; +} + +.fa-hotjar:before { + content: "\f3b1"; +} + +.fa-hourglass:before { + content: "\f254"; +} + +.fa-hourglass-end:before { + content: "\f253"; +} + +.fa-hourglass-half:before { + content: "\f252"; +} + +.fa-hourglass-start:before { + content: "\f251"; +} + +.fa-house-damage:before { + content: "\f6f1"; +} + +.fa-houzz:before { + content: "\f27c"; +} + +.fa-hryvnia:before { + content: "\f6f2"; +} + +.fa-html5:before { + content: "\f13b"; +} + +.fa-hubspot:before { + content: "\f3b2"; +} + +.fa-i-cursor:before { + content: "\f246"; +} + +.fa-id-badge:before { + content: "\f2c1"; +} + +.fa-id-card:before { + content: "\f2c2"; +} + +.fa-id-card-alt:before { + content: "\f47f"; +} + +.fa-image:before { + content: "\f03e"; +} + +.fa-images:before { + content: "\f302"; +} + +.fa-imdb:before { + content: "\f2d8"; +} + +.fa-inbox:before { + content: "\f01c"; +} + +.fa-indent:before { + content: "\f03c"; +} + +.fa-industry:before { + content: "\f275"; +} + +.fa-infinity:before { + content: "\f534"; +} + +.fa-info:before { + content: "\f129"; +} + +.fa-info-circle:before { + content: "\f05a"; +} + +.fa-instagram:before { + content: "\f16d"; +} + +.fa-internet-explorer:before { + content: "\f26b"; +} + +.fa-ioxhost:before { + content: "\f208"; +} + +.fa-italic:before { + content: "\f033"; +} + +.fa-itunes:before { + content: "\f3b4"; +} + +.fa-itunes-note:before { + content: "\f3b5"; +} + +.fa-java:before { + content: "\f4e4"; +} + +.fa-jedi:before { + content: "\f669"; +} + +.fa-jedi-order:before { + content: "\f50e"; +} + +.fa-jenkins:before { + content: "\f3b6"; +} + +.fa-joget:before { + content: "\f3b7"; +} + +.fa-joint:before { + content: "\f595"; +} + +.fa-joomla:before { + content: "\f1aa"; +} + +.fa-journal-whills:before { + content: "\f66a"; +} + +.fa-js:before { + content: "\f3b8"; +} + +.fa-js-square:before { + content: "\f3b9"; +} + +.fa-jsfiddle:before { + content: "\f1cc"; +} + +.fa-kaaba:before { + content: "\f66b"; +} + +.fa-kaggle:before { + content: "\f5fa"; +} + +.fa-key:before { + content: "\f084"; +} + +.fa-keybase:before { + content: "\f4f5"; +} + +.fa-keyboard:before { + content: "\f11c"; +} + +.fa-keycdn:before { + content: "\f3ba"; +} + +.fa-khanda:before { + content: "\f66d"; +} + +.fa-kickstarter:before { + content: "\f3bb"; +} + +.fa-kickstarter-k:before { + content: "\f3bc"; +} + +.fa-kiss:before { + content: "\f596"; +} + +.fa-kiss-beam:before { + content: "\f597"; +} + +.fa-kiss-wink-heart:before { + content: "\f598"; +} + +.fa-kiwi-bird:before { + content: "\f535"; +} + +.fa-korvue:before { + content: "\f42f"; +} + +.fa-landmark:before { + content: "\f66f"; +} + +.fa-language:before { + content: "\f1ab"; +} + +.fa-laptop:before { + content: "\f109"; +} + +.fa-laptop-code:before { + content: "\f5fc"; +} + +.fa-laravel:before { + content: "\f3bd"; +} + +.fa-lastfm:before { + content: "\f202"; +} + +.fa-lastfm-square:before { + content: "\f203"; +} + +.fa-laugh:before { + content: "\f599"; +} + +.fa-laugh-beam:before { + content: "\f59a"; +} + +.fa-laugh-squint:before { + content: "\f59b"; +} + +.fa-laugh-wink:before { + content: "\f59c"; +} + +.fa-layer-group:before { + content: "\f5fd"; +} + +.fa-leaf:before { + content: "\f06c"; +} + +.fa-leanpub:before { + content: "\f212"; +} + +.fa-lemon:before { + content: "\f094"; +} + +.fa-less:before { + content: "\f41d"; +} + +.fa-less-than:before { + content: "\f536"; +} + +.fa-less-than-equal:before { + content: "\f537"; +} + +.fa-level-down-alt:before { + content: "\f3be"; +} + +.fa-level-up-alt:before { + content: "\f3bf"; +} + +.fa-life-ring:before { + content: "\f1cd"; +} + +.fa-lightbulb:before { + content: "\f0eb"; +} + +.fa-line:before { + content: "\f3c0"; +} + +.fa-link:before { + content: "\f0c1"; +} + +.fa-linkedin:before { + content: "\f08c"; +} + +.fa-linkedin-in:before { + content: "\f0e1"; +} + +.fa-linode:before { + content: "\f2b8"; +} + +.fa-linux:before { + content: "\f17c"; +} + +.fa-lira-sign:before { + content: "\f195"; +} + +.fa-list:before { + content: "\f03a"; +} + +.fa-list-alt:before { + content: "\f022"; +} + +.fa-list-ol:before { + content: "\f0cb"; +} + +.fa-list-ul:before { + content: "\f0ca"; +} + +.fa-location-arrow:before { + content: "\f124"; +} + +.fa-lock:before { + content: "\f023"; +} + +.fa-lock-open:before { + content: "\f3c1"; +} + +.fa-long-arrow-alt-down:before { + content: "\f309"; +} + +.fa-long-arrow-alt-left:before { + content: "\f30a"; +} + +.fa-long-arrow-alt-right:before { + content: "\f30b"; +} + +.fa-long-arrow-alt-up:before { + content: "\f30c"; +} + +.fa-low-vision:before { + content: "\f2a8"; +} + +.fa-luggage-cart:before { + content: "\f59d"; +} + +.fa-lyft:before { + content: "\f3c3"; +} + +.fa-magento:before { + content: "\f3c4"; +} + +.fa-magic:before { + content: "\f0d0"; +} + +.fa-magnet:before { + content: "\f076"; +} + +.fa-mail-bulk:before { + content: "\f674"; +} + +.fa-mailchimp:before { + content: "\f59e"; +} + +.fa-male:before { + content: "\f183"; +} + +.fa-mandalorian:before { + content: "\f50f"; +} + +.fa-map:before { + content: "\f279"; +} + +.fa-map-marked:before { + content: "\f59f"; +} + +.fa-map-marked-alt:before { + content: "\f5a0"; +} + +.fa-map-marker:before { + content: "\f041"; +} + +.fa-map-marker-alt:before { + content: "\f3c5"; +} + +.fa-map-pin:before { + content: "\f276"; +} + +.fa-map-signs:before { + content: "\f277"; +} + +.fa-markdown:before { + content: "\f60f"; +} + +.fa-marker:before { + content: "\f5a1"; +} + +.fa-mars:before { + content: "\f222"; +} + +.fa-mars-double:before { + content: "\f227"; +} + +.fa-mars-stroke:before { + content: "\f229"; +} + +.fa-mars-stroke-h:before { + content: "\f22b"; +} + +.fa-mars-stroke-v:before { + content: "\f22a"; +} + +.fa-mask:before { + content: "\f6fa"; +} + +.fa-mastodon:before { + content: "\f4f6"; +} + +.fa-maxcdn:before { + content: "\f136"; +} + +.fa-medal:before { + content: "\f5a2"; +} + +.fa-medapps:before { + content: "\f3c6"; +} + +.fa-medium:before { + content: "\f23a"; +} + +.fa-medium-m:before { + content: "\f3c7"; +} + +.fa-medkit:before { + content: "\f0fa"; +} + +.fa-medrt:before { + content: "\f3c8"; +} + +.fa-meetup:before { + content: "\f2e0"; +} + +.fa-megaport:before { + content: "\f5a3"; +} + +.fa-meh:before { + content: "\f11a"; +} + +.fa-meh-blank:before { + content: "\f5a4"; +} + +.fa-meh-rolling-eyes:before { + content: "\f5a5"; +} + +.fa-memory:before { + content: "\f538"; +} + +.fa-menorah:before { + content: "\f676"; +} + +.fa-mercury:before { + content: "\f223"; +} + +.fa-meteor:before { + content: "\f753"; +} + +.fa-microchip:before { + content: "\f2db"; +} + +.fa-microphone:before { + content: "\f130"; +} + +.fa-microphone-alt:before { + content: "\f3c9"; +} + +.fa-microphone-alt-slash:before { + content: "\f539"; +} + +.fa-microphone-slash:before { + content: "\f131"; +} + +.fa-microscope:before { + content: "\f610"; +} + +.fa-microsoft:before { + content: "\f3ca"; +} + +.fa-minus:before { + content: "\f068"; +} + +.fa-minus-circle:before { + content: "\f056"; +} + +.fa-minus-square:before { + content: "\f146"; +} + +.fa-mix:before { + content: "\f3cb"; +} + +.fa-mixcloud:before { + content: "\f289"; +} + +.fa-mizuni:before { + content: "\f3cc"; +} + +.fa-mobile:before { + content: "\f10b"; +} + +.fa-mobile-alt:before { + content: "\f3cd"; +} + +.fa-modx:before { + content: "\f285"; +} + +.fa-monero:before { + content: "\f3d0"; +} + +.fa-money-bill:before { + content: "\f0d6"; +} + +.fa-money-bill-alt:before { + content: "\f3d1"; +} + +.fa-money-bill-wave:before { + content: "\f53a"; +} + +.fa-money-bill-wave-alt:before { + content: "\f53b"; +} + +.fa-money-check:before { + content: "\f53c"; +} + +.fa-money-check-alt:before { + content: "\f53d"; +} + +.fa-monument:before { + content: "\f5a6"; +} + +.fa-moon:before { + content: "\f186"; +} + +.fa-mortar-pestle:before { + content: "\f5a7"; +} + +.fa-mosque:before { + content: "\f678"; +} + +.fa-motorcycle:before { + content: "\f21c"; +} + +.fa-mountain:before { + content: "\f6fc"; +} + +.fa-mouse-pointer:before { + content: "\f245"; +} + +.fa-music:before { + content: "\f001"; +} + +.fa-napster:before { + content: "\f3d2"; +} + +.fa-neos:before { + content: "\f612"; +} + +.fa-network-wired:before { + content: "\f6ff"; +} + +.fa-neuter:before { + content: "\f22c"; +} + +.fa-newspaper:before { + content: "\f1ea"; +} + +.fa-nimblr:before { + content: "\f5a8"; +} + +.fa-nintendo-switch:before { + content: "\f418"; +} + +.fa-node:before { + content: "\f419"; +} + +.fa-node-js:before { + content: "\f3d3"; +} + +.fa-not-equal:before { + content: "\f53e"; +} + +.fa-notes-medical:before { + content: "\f481"; +} + +.fa-npm:before { + content: "\f3d4"; +} + +.fa-ns8:before { + content: "\f3d5"; +} + +.fa-nutritionix:before { + content: "\f3d6"; +} + +.fa-object-group:before { + content: "\f247"; +} + +.fa-object-ungroup:before { + content: "\f248"; +} + +.fa-odnoklassniki:before { + content: "\f263"; +} + +.fa-odnoklassniki-square:before { + content: "\f264"; +} + +.fa-oil-can:before { + content: "\f613"; +} + +.fa-old-republic:before { + content: "\f510"; +} + +.fa-om:before { + content: "\f679"; +} + +.fa-opencart:before { + content: "\f23d"; +} + +.fa-openid:before { + content: "\f19b"; +} + +.fa-opera:before { + content: "\f26a"; +} + +.fa-optin-monster:before { + content: "\f23c"; +} + +.fa-osi:before { + content: "\f41a"; +} + +.fa-otter:before { + content: "\f700"; +} + +.fa-outdent:before { + content: "\f03b"; +} + +.fa-page4:before { + content: "\f3d7"; +} + +.fa-pagelines:before { + content: "\f18c"; +} + +.fa-paint-brush:before { + content: "\f1fc"; +} + +.fa-paint-roller:before { + content: "\f5aa"; +} + +.fa-palette:before { + content: "\f53f"; +} + +.fa-palfed:before { + content: "\f3d8"; +} + +.fa-pallet:before { + content: "\f482"; +} + +.fa-paper-plane:before { + content: "\f1d8"; +} + +.fa-paperclip:before { + content: "\f0c6"; +} + +.fa-parachute-box:before { + content: "\f4cd"; +} + +.fa-paragraph:before { + content: "\f1dd"; +} + +.fa-parking:before { + content: "\f540"; +} + +.fa-passport:before { + content: "\f5ab"; +} + +.fa-pastafarianism:before { + content: "\f67b"; +} + +.fa-paste:before { + content: "\f0ea"; +} + +.fa-patreon:before { + content: "\f3d9"; +} + +.fa-pause:before { + content: "\f04c"; +} + +.fa-pause-circle:before { + content: "\f28b"; +} + +.fa-paw:before { + content: "\f1b0"; +} + +.fa-paypal:before { + content: "\f1ed"; +} + +.fa-peace:before { + content: "\f67c"; +} + +.fa-pen:before { + content: "\f304"; +} + +.fa-pen-alt:before { + content: "\f305"; +} + +.fa-pen-fancy:before { + content: "\f5ac"; +} + +.fa-pen-nib:before { + content: "\f5ad"; +} + +.fa-pen-square:before { + content: "\f14b"; +} + +.fa-pencil-alt:before { + content: "\f303"; +} + +.fa-pencil-ruler:before { + content: "\f5ae"; +} + +.fa-penny-arcade:before { + content: "\f704"; +} + +.fa-people-carry:before { + content: "\f4ce"; +} + +.fa-percent:before { + content: "\f295"; +} + +.fa-percentage:before { + content: "\f541"; +} + +.fa-periscope:before { + content: "\f3da"; +} + +.fa-person-booth:before { + content: "\f756"; +} + +.fa-phabricator:before { + content: "\f3db"; +} + +.fa-phoenix-framework:before { + content: "\f3dc"; +} + +.fa-phoenix-squadron:before { + content: "\f511"; +} + +.fa-phone:before { + content: "\f095"; +} + +.fa-phone-slash:before { + content: "\f3dd"; +} + +.fa-phone-square:before { + content: "\f098"; +} + +.fa-phone-volume:before { + content: "\f2a0"; +} + +.fa-php:before { + content: "\f457"; +} + +.fa-pied-piper:before { + content: "\f2ae"; +} + +.fa-pied-piper-alt:before { + content: "\f1a8"; +} + +.fa-pied-piper-hat:before { + content: "\f4e5"; +} + +.fa-pied-piper-pp:before { + content: "\f1a7"; +} + +.fa-piggy-bank:before { + content: "\f4d3"; +} + +.fa-pills:before { + content: "\f484"; +} + +.fa-pinterest:before { + content: "\f0d2"; +} + +.fa-pinterest-p:before { + content: "\f231"; +} + +.fa-pinterest-square:before { + content: "\f0d3"; +} + +.fa-place-of-worship:before { + content: "\f67f"; +} + +.fa-plane:before { + content: "\f072"; +} + +.fa-plane-arrival:before { + content: "\f5af"; +} + +.fa-plane-departure:before { + content: "\f5b0"; +} + +.fa-play:before { + content: "\f04b"; +} + +.fa-play-circle:before { + content: "\f144"; +} + +.fa-playstation:before { + content: "\f3df"; +} + +.fa-plug:before { + content: "\f1e6"; +} + +.fa-plus:before { + content: "\f067"; +} + +.fa-plus-circle:before { + content: "\f055"; +} + +.fa-plus-square:before { + content: "\f0fe"; +} + +.fa-podcast:before { + content: "\f2ce"; +} + +.fa-poll:before { + content: "\f681"; +} + +.fa-poll-h:before { + content: "\f682"; +} + +.fa-poo:before { + content: "\f2fe"; +} + +.fa-poo-storm:before { + content: "\f75a"; +} + +.fa-poop:before { + content: "\f619"; +} + +.fa-portrait:before { + content: "\f3e0"; +} + +.fa-pound-sign:before { + content: "\f154"; +} + +.fa-power-off:before { + content: "\f011"; +} + +.fa-pray:before { + content: "\f683"; +} + +.fa-praying-hands:before { + content: "\f684"; +} + +.fa-prescription:before { + content: "\f5b1"; +} + +.fa-prescription-bottle:before { + content: "\f485"; +} + +.fa-prescription-bottle-alt:before { + content: "\f486"; +} + +.fa-print:before { + content: "\f02f"; +} + +.fa-procedures:before { + content: "\f487"; +} + +.fa-product-hunt:before { + content: "\f288"; +} + +.fa-project-diagram:before { + content: "\f542"; +} + +.fa-pushed:before { + content: "\f3e1"; +} + +.fa-puzzle-piece:before { + content: "\f12e"; +} + +.fa-python:before { + content: "\f3e2"; +} + +.fa-qq:before { + content: "\f1d6"; +} + +.fa-qrcode:before { + content: "\f029"; +} + +.fa-question:before { + content: "\f128"; +} + +.fa-question-circle:before { + content: "\f059"; +} + +.fa-quidditch:before { + content: "\f458"; +} + +.fa-quinscape:before { + content: "\f459"; +} + +.fa-quora:before { + content: "\f2c4"; +} + +.fa-quote-left:before { + content: "\f10d"; +} + +.fa-quote-right:before { + content: "\f10e"; +} + +.fa-quran:before { + content: "\f687"; +} + +.fa-r-project:before { + content: "\f4f7"; +} + +.fa-rainbow:before { + content: "\f75b"; +} + +.fa-random:before { + content: "\f074"; +} + +.fa-ravelry:before { + content: "\f2d9"; +} + +.fa-react:before { + content: "\f41b"; +} + +.fa-reacteurope:before { + content: "\f75d"; +} + +.fa-readme:before { + content: "\f4d5"; +} + +.fa-rebel:before { + content: "\f1d0"; +} + +.fa-receipt:before { + content: "\f543"; +} + +.fa-recycle:before { + content: "\f1b8"; +} + +.fa-red-river:before { + content: "\f3e3"; +} + +.fa-reddit:before { + content: "\f1a1"; +} + +.fa-reddit-alien:before { + content: "\f281"; +} + +.fa-reddit-square:before { + content: "\f1a2"; +} + +.fa-redo:before { + content: "\f01e"; +} + +.fa-redo-alt:before { + content: "\f2f9"; +} + +.fa-registered:before { + content: "\f25d"; +} + +.fa-renren:before { + content: "\f18b"; +} + +.fa-reply:before { + content: "\f3e5"; +} + +.fa-reply-all:before { + content: "\f122"; +} + +.fa-replyd:before { + content: "\f3e6"; +} + +.fa-republican:before { + content: "\f75e"; +} + +.fa-researchgate:before { + content: "\f4f8"; +} + +.fa-resolving:before { + content: "\f3e7"; +} + +.fa-retweet:before { + content: "\f079"; +} + +.fa-rev:before { + content: "\f5b2"; +} + +.fa-ribbon:before { + content: "\f4d6"; +} + +.fa-ring:before { + content: "\f70b"; +} + +.fa-road:before { + content: "\f018"; +} + +.fa-robot:before { + content: "\f544"; +} + +.fa-rocket:before { + content: "\f135"; +} + +.fa-rocketchat:before { + content: "\f3e8"; +} + +.fa-rockrms:before { + content: "\f3e9"; +} + +.fa-route:before { + content: "\f4d7"; +} + +.fa-rss:before { + content: "\f09e"; +} + +.fa-rss-square:before { + content: "\f143"; +} + +.fa-ruble-sign:before { + content: "\f158"; +} + +.fa-ruler:before { + content: "\f545"; +} + +.fa-ruler-combined:before { + content: "\f546"; +} + +.fa-ruler-horizontal:before { + content: "\f547"; +} + +.fa-ruler-vertical:before { + content: "\f548"; +} + +.fa-running:before { + content: "\f70c"; +} + +.fa-rupee-sign:before { + content: "\f156"; +} + +.fa-sad-cry:before { + content: "\f5b3"; +} + +.fa-sad-tear:before { + content: "\f5b4"; +} + +.fa-safari:before { + content: "\f267"; +} + +.fa-sass:before { + content: "\f41e"; +} + +.fa-save:before { + content: "\f0c7"; +} + +.fa-schlix:before { + content: "\f3ea"; +} + +.fa-school:before { + content: "\f549"; +} + +.fa-screwdriver:before { + content: "\f54a"; +} + +.fa-scribd:before { + content: "\f28a"; +} + +.fa-scroll:before { + content: "\f70e"; +} + +.fa-search:before { + content: "\f002"; +} + +.fa-search-dollar:before { + content: "\f688"; +} + +.fa-search-location:before { + content: "\f689"; +} + +.fa-search-minus:before { + content: "\f010"; +} + +.fa-search-plus:before { + content: "\f00e"; +} + +.fa-searchengin:before { + content: "\f3eb"; +} + +.fa-seedling:before { + content: "\f4d8"; +} + +.fa-sellcast:before { + content: "\f2da"; +} + +.fa-sellsy:before { + content: "\f213"; +} + +.fa-server:before { + content: "\f233"; +} + +.fa-servicestack:before { + content: "\f3ec"; +} + +.fa-shapes:before { + content: "\f61f"; +} + +.fa-share:before { + content: "\f064"; +} + +.fa-share-alt:before { + content: "\f1e0"; +} + +.fa-share-alt-square:before { + content: "\f1e1"; +} + +.fa-share-square:before { + content: "\f14d"; +} + +.fa-shekel-sign:before { + content: "\f20b"; +} + +.fa-shield-alt:before { + content: "\f3ed"; +} + +.fa-ship:before { + content: "\f21a"; +} + +.fa-shipping-fast:before { + content: "\f48b"; +} + +.fa-shirtsinbulk:before { + content: "\f214"; +} + +.fa-shoe-prints:before { + content: "\f54b"; +} + +.fa-shopping-bag:before { + content: "\f290"; +} + +.fa-shopping-basket:before { + content: "\f291"; +} + +.fa-shopping-cart:before { + content: "\f07a"; +} + +.fa-shopware:before { + content: "\f5b5"; +} + +.fa-shower:before { + content: "\f2cc"; +} + +.fa-shuttle-van:before { + content: "\f5b6"; +} + +.fa-sign:before { + content: "\f4d9"; +} + +.fa-sign-in-alt:before { + content: "\f2f6"; +} + +.fa-sign-language:before { + content: "\f2a7"; +} + +.fa-sign-out-alt:before { + content: "\f2f5"; +} + +.fa-signal:before { + content: "\f012"; +} + +.fa-signature:before { + content: "\f5b7"; +} + +.fa-simplybuilt:before { + content: "\f215"; +} + +.fa-sistrix:before { + content: "\f3ee"; +} + +.fa-sitemap:before { + content: "\f0e8"; +} + +.fa-sith:before { + content: "\f512"; +} + +.fa-skull:before { + content: "\f54c"; +} + +.fa-skull-crossbones:before { + content: "\f714"; +} + +.fa-skyatlas:before { + content: "\f216"; +} + +.fa-skype:before { + content: "\f17e"; +} + +.fa-slack:before { + content: "\f198"; +} + +.fa-slack-hash:before { + content: "\f3ef"; +} + +.fa-slash:before { + content: "\f715"; +} + +.fa-sliders-h:before { + content: "\f1de"; +} + +.fa-slideshare:before { + content: "\f1e7"; +} + +.fa-smile:before { + content: "\f118"; +} + +.fa-smile-beam:before { + content: "\f5b8"; +} + +.fa-smile-wink:before { + content: "\f4da"; +} + +.fa-smog:before { + content: "\f75f"; +} + +.fa-smoking:before { + content: "\f48d"; +} + +.fa-smoking-ban:before { + content: "\f54d"; +} + +.fa-snapchat:before { + content: "\f2ab"; +} + +.fa-snapchat-ghost:before { + content: "\f2ac"; +} + +.fa-snapchat-square:before { + content: "\f2ad"; +} + +.fa-snowflake:before { + content: "\f2dc"; +} + +.fa-socks:before { + content: "\f696"; +} + +.fa-solar-panel:before { + content: "\f5ba"; +} + +.fa-sort:before { + content: "\f0dc"; +} + +.fa-sort-alpha-down:before { + content: "\f15d"; +} + +.fa-sort-alpha-up:before { + content: "\f15e"; +} + +.fa-sort-amount-down:before { + content: "\f160"; +} + +.fa-sort-amount-up:before { + content: "\f161"; +} + +.fa-sort-down:before { + content: "\f0dd"; +} + +.fa-sort-numeric-down:before { + content: "\f162"; +} + +.fa-sort-numeric-up:before { + content: "\f163"; +} + +.fa-sort-up:before { + content: "\f0de"; +} + +.fa-soundcloud:before { + content: "\f1be"; +} + +.fa-spa:before { + content: "\f5bb"; +} + +.fa-space-shuttle:before { + content: "\f197"; +} + +.fa-speakap:before { + content: "\f3f3"; +} + +.fa-spider:before { + content: "\f717"; +} + +.fa-spinner:before { + content: "\f110"; +} + +.fa-splotch:before { + content: "\f5bc"; +} + +.fa-spotify:before { + content: "\f1bc"; +} + +.fa-spray-can:before { + content: "\f5bd"; +} + +.fa-square:before { + content: "\f0c8"; +} + +.fa-square-full:before { + content: "\f45c"; +} + +.fa-square-root-alt:before { + content: "\f698"; +} + +.fa-squarespace:before { + content: "\f5be"; +} + +.fa-stack-exchange:before { + content: "\f18d"; +} + +.fa-stack-overflow:before { + content: "\f16c"; +} + +.fa-stamp:before { + content: "\f5bf"; +} + +.fa-star:before { + content: "\f005"; +} + +.fa-star-and-crescent:before { + content: "\f699"; +} + +.fa-star-half:before { + content: "\f089"; +} + +.fa-star-half-alt:before { + content: "\f5c0"; +} + +.fa-star-of-david:before { + content: "\f69a"; +} + +.fa-star-of-life:before { + content: "\f621"; +} + +.fa-staylinked:before { + content: "\f3f5"; +} + +.fa-steam:before { + content: "\f1b6"; +} + +.fa-steam-square:before { + content: "\f1b7"; +} + +.fa-steam-symbol:before { + content: "\f3f6"; +} + +.fa-step-backward:before { + content: "\f048"; +} + +.fa-step-forward:before { + content: "\f051"; +} + +.fa-stethoscope:before { + content: "\f0f1"; +} + +.fa-sticker-mule:before { + content: "\f3f7"; +} + +.fa-sticky-note:before { + content: "\f249"; +} + +.fa-stop:before { + content: "\f04d"; +} + +.fa-stop-circle:before { + content: "\f28d"; +} + +.fa-stopwatch:before { + content: "\f2f2"; +} + +.fa-store:before { + content: "\f54e"; +} + +.fa-store-alt:before { + content: "\f54f"; +} + +.fa-strava:before { + content: "\f428"; +} + +.fa-stream:before { + content: "\f550"; +} + +.fa-street-view:before { + content: "\f21d"; +} + +.fa-strikethrough:before { + content: "\f0cc"; +} + +.fa-stripe:before { + content: "\f429"; +} + +.fa-stripe-s:before { + content: "\f42a"; +} + +.fa-stroopwafel:before { + content: "\f551"; +} + +.fa-studiovinari:before { + content: "\f3f8"; +} + +.fa-stumbleupon:before { + content: "\f1a4"; +} + +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} + +.fa-subscript:before { + content: "\f12c"; +} + +.fa-subway:before { + content: "\f239"; +} + +.fa-suitcase:before { + content: "\f0f2"; +} + +.fa-suitcase-rolling:before { + content: "\f5c1"; +} + +.fa-sun:before { + content: "\f185"; +} + +.fa-superpowers:before { + content: "\f2dd"; +} + +.fa-superscript:before { + content: "\f12b"; +} + +.fa-supple:before { + content: "\f3f9"; +} + +.fa-surprise:before { + content: "\f5c2"; +} + +.fa-swatchbook:before { + content: "\f5c3"; +} + +.fa-swimmer:before { + content: "\f5c4"; +} + +.fa-swimming-pool:before { + content: "\f5c5"; +} + +.fa-synagogue:before { + content: "\f69b"; +} + +.fa-sync:before { + content: "\f021"; +} + +.fa-sync-alt:before { + content: "\f2f1"; +} + +.fa-syringe:before { + content: "\f48e"; +} + +.fa-table:before { + content: "\f0ce"; +} + +.fa-table-tennis:before { + content: "\f45d"; +} + +.fa-tablet:before { + content: "\f10a"; +} + +.fa-tablet-alt:before { + content: "\f3fa"; +} + +.fa-tablets:before { + content: "\f490"; +} + +.fa-tachometer-alt:before { + content: "\f3fd"; +} + +.fa-tag:before { + content: "\f02b"; +} + +.fa-tags:before { + content: "\f02c"; +} + +.fa-tape:before { + content: "\f4db"; +} + +.fa-tasks:before { + content: "\f0ae"; +} + +.fa-taxi:before { + content: "\f1ba"; +} + +.fa-teamspeak:before { + content: "\f4f9"; +} + +.fa-teeth:before { + content: "\f62e"; +} + +.fa-teeth-open:before { + content: "\f62f"; +} + +.fa-telegram:before { + content: "\f2c6"; +} + +.fa-telegram-plane:before { + content: "\f3fe"; +} + +.fa-temperature-high:before { + content: "\f769"; +} + +.fa-temperature-low:before { + content: "\f76b"; +} + +.fa-tencent-weibo:before { + content: "\f1d5"; +} + +.fa-terminal:before { + content: "\f120"; +} + +.fa-text-height:before { + content: "\f034"; +} + +.fa-text-width:before { + content: "\f035"; +} + +.fa-th:before { + content: "\f00a"; +} + +.fa-th-large:before { + content: "\f009"; +} + +.fa-th-list:before { + content: "\f00b"; +} + +.fa-the-red-yeti:before { + content: "\f69d"; +} + +.fa-theater-masks:before { + content: "\f630"; +} + +.fa-themeco:before { + content: "\f5c6"; +} + +.fa-themeisle:before { + content: "\f2b2"; +} + +.fa-thermometer:before { + content: "\f491"; +} + +.fa-thermometer-empty:before { + content: "\f2cb"; +} + +.fa-thermometer-full:before { + content: "\f2c7"; +} + +.fa-thermometer-half:before { + content: "\f2c9"; +} + +.fa-thermometer-quarter:before { + content: "\f2ca"; +} + +.fa-thermometer-three-quarters:before { + content: "\f2c8"; +} + +.fa-think-peaks:before { + content: "\f731"; +} + +.fa-thumbs-down:before { + content: "\f165"; +} + +.fa-thumbs-up:before { + content: "\f164"; +} + +.fa-thumbtack:before { + content: "\f08d"; +} + +.fa-ticket-alt:before { + content: "\f3ff"; +} + +.fa-times:before { + content: "\f00d"; +} + +.fa-times-circle:before { + content: "\f057"; +} + +.fa-tint:before { + content: "\f043"; +} + +.fa-tint-slash:before { + content: "\f5c7"; +} + +.fa-tired:before { + content: "\f5c8"; +} + +.fa-toggle-off:before { + content: "\f204"; +} + +.fa-toggle-on:before { + content: "\f205"; +} + +.fa-toilet-paper:before { + content: "\f71e"; +} + +.fa-toolbox:before { + content: "\f552"; +} + +.fa-tooth:before { + content: "\f5c9"; +} + +.fa-torah:before { + content: "\f6a0"; +} + +.fa-torii-gate:before { + content: "\f6a1"; +} + +.fa-tractor:before { + content: "\f722"; +} + +.fa-trade-federation:before { + content: "\f513"; +} + +.fa-trademark:before { + content: "\f25c"; +} + +.fa-traffic-light:before { + content: "\f637"; +} + +.fa-train:before { + content: "\f238"; +} + +.fa-transgender:before { + content: "\f224"; +} + +.fa-transgender-alt:before { + content: "\f225"; +} + +.fa-trash:before { + content: "\f1f8"; +} + +.fa-trash-alt:before { + content: "\f2ed"; +} + +.fa-tree:before { + content: "\f1bb"; +} + +.fa-trello:before { + content: "\f181"; +} + +.fa-tripadvisor:before { + content: "\f262"; +} + +.fa-trophy:before { + content: "\f091"; +} + +.fa-truck:before { + content: "\f0d1"; +} + +.fa-truck-loading:before { + content: "\f4de"; +} + +.fa-truck-monster:before { + content: "\f63b"; +} + +.fa-truck-moving:before { + content: "\f4df"; +} + +.fa-truck-pickup:before { + content: "\f63c"; +} + +.fa-tshirt:before { + content: "\f553"; +} + +.fa-tty:before { + content: "\f1e4"; +} + +.fa-tumblr:before { + content: "\f173"; +} + +.fa-tumblr-square:before { + content: "\f174"; +} + +.fa-tv:before { + content: "\f26c"; +} + +.fa-twitch:before { + content: "\f1e8"; +} + +.fa-twitter:before { + content: "\f099"; +} + +.fa-twitter-square:before { + content: "\f081"; +} + +.fa-typo3:before { + content: "\f42b"; +} + +.fa-uber:before { + content: "\f402"; +} + +.fa-uikit:before { + content: "\f403"; +} + +.fa-umbrella:before { + content: "\f0e9"; +} + +.fa-umbrella-beach:before { + content: "\f5ca"; +} + +.fa-underline:before { + content: "\f0cd"; +} + +.fa-undo:before { + content: "\f0e2"; +} + +.fa-undo-alt:before { + content: "\f2ea"; +} + +.fa-uniregistry:before { + content: "\f404"; +} + +.fa-universal-access:before { + content: "\f29a"; +} + +.fa-university:before { + content: "\f19c"; +} + +.fa-unlink:before { + content: "\f127"; +} + +.fa-unlock:before { + content: "\f09c"; +} + +.fa-unlock-alt:before { + content: "\f13e"; +} + +.fa-untappd:before { + content: "\f405"; +} + +.fa-upload:before { + content: "\f093"; +} + +.fa-usb:before { + content: "\f287"; +} + +.fa-user:before { + content: "\f007"; +} + +.fa-user-alt:before { + content: "\f406"; +} + +.fa-user-alt-slash:before { + content: "\f4fa"; +} + +.fa-user-astronaut:before { + content: "\f4fb"; +} + +.fa-user-check:before { + content: "\f4fc"; +} + +.fa-user-circle:before { + content: "\f2bd"; +} + +.fa-user-clock:before { + content: "\f4fd"; +} + +.fa-user-cog:before { + content: "\f4fe"; +} + +.fa-user-edit:before { + content: "\f4ff"; +} + +.fa-user-friends:before { + content: "\f500"; +} + +.fa-user-graduate:before { + content: "\f501"; +} + +.fa-user-injured:before { + content: "\f728"; +} + +.fa-user-lock:before { + content: "\f502"; +} + +.fa-user-md:before { + content: "\f0f0"; +} + +.fa-user-minus:before { + content: "\f503"; +} + +.fa-user-ninja:before { + content: "\f504"; +} + +.fa-user-plus:before { + content: "\f234"; +} + +.fa-user-secret:before { + content: "\f21b"; +} + +.fa-user-shield:before { + content: "\f505"; +} + +.fa-user-slash:before { + content: "\f506"; +} + +.fa-user-tag:before { + content: "\f507"; +} + +.fa-user-tie:before { + content: "\f508"; +} + +.fa-user-times:before { + content: "\f235"; +} + +.fa-users:before { + content: "\f0c0"; +} + +.fa-users-cog:before { + content: "\f509"; +} + +.fa-ussunnah:before { + content: "\f407"; +} + +.fa-utensil-spoon:before { + content: "\f2e5"; +} + +.fa-utensils:before { + content: "\f2e7"; +} + +.fa-vaadin:before { + content: "\f408"; +} + +.fa-vector-square:before { + content: "\f5cb"; +} + +.fa-venus:before { + content: "\f221"; +} + +.fa-venus-double:before { + content: "\f226"; +} + +.fa-venus-mars:before { + content: "\f228"; +} + +.fa-viacoin:before { + content: "\f237"; +} + +.fa-viadeo:before { + content: "\f2a9"; +} + +.fa-viadeo-square:before { + content: "\f2aa"; +} + +.fa-vial:before { + content: "\f492"; +} + +.fa-vials:before { + content: "\f493"; +} + +.fa-viber:before { + content: "\f409"; +} + +.fa-video:before { + content: "\f03d"; +} + +.fa-video-slash:before { + content: "\f4e2"; +} + +.fa-vihara:before { + content: "\f6a7"; +} + +.fa-vimeo:before { + content: "\f40a"; +} + +.fa-vimeo-square:before { + content: "\f194"; +} + +.fa-vimeo-v:before { + content: "\f27d"; +} + +.fa-vine:before { + content: "\f1ca"; +} + +.fa-vk:before { + content: "\f189"; +} + +.fa-vnv:before { + content: "\f40b"; +} + +.fa-volleyball-ball:before { + content: "\f45f"; +} + +.fa-volume-down:before { + content: "\f027"; +} + +.fa-volume-mute:before { + content: "\f6a9"; +} + +.fa-volume-off:before { + content: "\f026"; +} + +.fa-volume-up:before { + content: "\f028"; +} + +.fa-vote-yea:before { + content: "\f772"; +} + +.fa-vr-cardboard:before { + content: "\f729"; +} + +.fa-vuejs:before { + content: "\f41f"; +} + +.fa-walking:before { + content: "\f554"; +} + +.fa-wallet:before { + content: "\f555"; +} + +.fa-warehouse:before { + content: "\f494"; +} + +.fa-water:before { + content: "\f773"; +} + +.fa-weebly:before { + content: "\f5cc"; +} + +.fa-weibo:before { + content: "\f18a"; +} + +.fa-weight:before { + content: "\f496"; +} + +.fa-weight-hanging:before { + content: "\f5cd"; +} + +.fa-weixin:before { + content: "\f1d7"; +} + +.fa-whatsapp:before { + content: "\f232"; +} + +.fa-whatsapp-square:before { + content: "\f40c"; +} + +.fa-wheelchair:before { + content: "\f193"; +} + +.fa-whmcs:before { + content: "\f40d"; +} + +.fa-wifi:before { + content: "\f1eb"; +} + +.fa-wikipedia-w:before { + content: "\f266"; +} + +.fa-wind:before { + content: "\f72e"; +} + +.fa-window-close:before { + content: "\f410"; +} + +.fa-window-maximize:before { + content: "\f2d0"; +} + +.fa-window-minimize:before { + content: "\f2d1"; +} + +.fa-window-restore:before { + content: "\f2d2"; +} + +.fa-windows:before { + content: "\f17a"; +} + +.fa-wine-bottle:before { + content: "\f72f"; +} + +.fa-wine-glass:before { + content: "\f4e3"; +} + +.fa-wine-glass-alt:before { + content: "\f5ce"; +} + +.fa-wix:before { + content: "\f5cf"; +} + +.fa-wizards-of-the-coast:before { + content: "\f730"; +} + +.fa-wolf-pack-battalion:before { + content: "\f514"; +} + +.fa-won-sign:before { + content: "\f159"; +} + +.fa-wordpress:before { + content: "\f19a"; +} + +.fa-wordpress-simple:before { + content: "\f411"; +} + +.fa-wpbeginner:before { + content: "\f297"; +} + +.fa-wpexplorer:before { + content: "\f2de"; +} + +.fa-wpforms:before { + content: "\f298"; +} + +.fa-wpressr:before { + content: "\f3e4"; +} + +.fa-wrench:before { + content: "\f0ad"; +} + +.fa-x-ray:before { + content: "\f497"; +} + +.fa-xbox:before { + content: "\f412"; +} + +.fa-xing:before { + content: "\f168"; +} + +.fa-xing-square:before { + content: "\f169"; +} + +.fa-y-combinator:before { + content: "\f23b"; +} + +.fa-yahoo:before { + content: "\f19e"; +} + +.fa-yandex:before { + content: "\f413"; +} + +.fa-yandex-international:before { + content: "\f414"; +} + +.fa-yelp:before { + content: "\f1e9"; +} + +.fa-yen-sign:before { + content: "\f157"; +} + +.fa-yin-yang:before { + content: "\f6ad"; +} + +.fa-yoast:before { + content: "\f2b1"; +} + +.fa-youtube:before { + content: "\f167"; +} + +.fa-youtube-square:before { + content: "\f431"; +} + +.fa-zhihu:before { + content: "\f63f"; +} + +.sr-only { + border: 0; + clip: rect(0, 0, 0, 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +.sr-only-focusable:active, +.sr-only-focusable:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; +} diff --git a/src/electron/renderer/assets/css/global.css b/src/electron/renderer/assets/css/global.css index 55154eeb4..a9cdbe691 100755 --- a/src/electron/renderer/assets/css/global.css +++ b/src/electron/renderer/assets/css/global.css @@ -1,185 +1,185 @@ -/* Fonts ---------------------------- */ - -@font-face { - font-family: "Montserrat", sans-serif; - /* font-family: 'Source Code Pro'; */ - font-style: normal; - font-weight: 400; - /* src: local('Source Code Pro'), local('SourceCodePro'), url(fonts/SourceCodePro-Regular.ttf) format('truetype'); */ -} - -.swal-conversion-actions { - margin-top: 0px !important; -} - -/* Notyf */ -.notyf__toast { - max-width: 40vw !important; -} - -.notyf__message { - word-break: break-all; -} - -/* Tippy */ -.tippy-box[data-theme~="error"] { - background-color: hsl(0, 100%, 70%); -} - -.tippy-box[data-theme~="warning"] { - background-color: hsl(57, 100%, 70%); -} - -/* Global ---------------------------- */ - -* { - box-sizing: border-box; -} - -html { - height: 100%; - font-family: "BlinkMacSystemFont", "Lucida Grande", "Segoe UI", Ubuntu, Cantarell, sans-serif; - font-size: 14px; - line-height: 1.5; - overflow: hidden; /* Prevents rubber-band scrolling of the whole "page" */ - color: var(--color); - background-color: #fff; /* To cover OSes with no default background color */ -} - -body { - margin: 0; - height: 100%; - display: flex; - overflow: hidden; /* Dashboard without scroll behavior */ -} - -small { - font-size: 12.5px !important; -} - -a { - color: var(--color-link); -} - -h1, -h2, -h3 { - margin-top: 0; - line-height: 1.5; -} - -h1 { - font-size: 1.5em; - font-weight: 600; -} - -h2 { - font-size: 1.3em; - font-weight: 600; -} - -h3 { - font-size: 1.12em; - font-weight: 600; -} - -h5 { - font-size: 1em; - font-weight: 600; -} - -/* svg { - fill: currentColor; -} */ - -/* Code */ - -code, -kbd { - font-family: "Source Code Pro", monospace; - border-radius: 4px; - padding: 1px 4px; - white-space: nowrap; - color: hsl(0, 0%, 36%); - background-color: hsla(0, 0%, 60%, 0.15); -} - -pre, -kbd { - font-size: 13px; - overflow: auto; - padding: 1em; - margin: 0; - border-radius: 4px; - border: 1px solid; - border-color: var(--color-border); - background-color: white; -} - -pre code { - white-space: pre; -} - -pre > .hljs { - color: var(--color-subtle); - background-color: white; -} - -kbd { - padding: 0.5em; -} - -/* Utilities ---------------------------- */ - -.u-avoid-clicks { - pointer-events: none; -} - -/* Visually hidden, but will be read by screen readers */ -.u-visible-to-screen-reader { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} - -.no-display { - display: none; -} - -/* Content ------------------ */ - -.content { - flex: 1; - position: relative; - overflow: hidden; - visibility: visible; - opacity: 0; - border: none; - padding-top: 15px; - padding-bottom: 20px; - background: #fff; - max-width: 100%; - margin-top: 10px; -} -.content.is-shown { - visibility: visible; - opacity: 1; -} - -/* Hacks ---------------------------- */ - -/* Fixes horizontal scrolling in code blocks on OS X El Cap (10.11.3), retina screen - * - * By adding an invisible outline property, it will force a repaint - * which enables the scrolling. - */ - -.hljs:hover, -.hljs:active { - outline: 1px solid transparent; -} +/* Fonts ---------------------------- */ + +@font-face { + font-family: "Montserrat", sans-serif; + /* font-family: 'Source Code Pro'; */ + font-style: normal; + font-weight: 400; + /* src: local('Source Code Pro'), local('SourceCodePro'), url(fonts/SourceCodePro-Regular.ttf) format('truetype'); */ +} + +.swal-conversion-actions { + margin-top: 0px !important; +} + +/* Notyf */ +.notyf__toast { + max-width: 40vw !important; +} + +.notyf__message { + word-break: break-all; +} + +/* Tippy */ +.tippy-box[data-theme~="error"] { + background-color: hsl(0, 100%, 70%); +} + +.tippy-box[data-theme~="warning"] { + background-color: hsl(57, 100%, 70%); +} + +/* Global ---------------------------- */ + +* { + box-sizing: border-box; +} + +html { + height: 100%; + font-family: "BlinkMacSystemFont", "Lucida Grande", "Segoe UI", Ubuntu, Cantarell, sans-serif; + font-size: 14px; + line-height: 1.5; + overflow: hidden; /* Prevents rubber-band scrolling of the whole "page" */ + color: var(--color); + background-color: #fff; /* To cover OSes with no default background color */ +} + +body { + margin: 0; + height: 100%; + display: flex; + overflow: hidden; /* Dashboard without scroll behavior */ +} + +small { + font-size: 12.5px !important; +} + +a { + color: var(--color-link); +} + +h1, +h2, +h3 { + margin-top: 0; + line-height: 1.5; +} + +h1 { + font-size: 1.5em; + font-weight: 600; +} + +h2 { + font-size: 1.3em; + font-weight: 600; +} + +h3 { + font-size: 1.12em; + font-weight: 600; +} + +h5 { + font-size: 1em; + font-weight: 600; +} + +/* svg { + fill: currentColor; +} */ + +/* Code */ + +code, +kbd { + font-family: "Source Code Pro", monospace; + border-radius: 4px; + padding: 1px 4px; + white-space: nowrap; + color: hsl(0, 0%, 36%); + background-color: hsla(0, 0%, 60%, 0.15); +} + +pre, +kbd { + font-size: 13px; + overflow: auto; + padding: 1em; + margin: 0; + border-radius: 4px; + border: 1px solid; + border-color: var(--color-border); + background-color: white; +} + +pre code { + white-space: pre; +} + +pre > .hljs { + color: var(--color-subtle); + background-color: white; +} + +kbd { + padding: 0.5em; +} + +/* Utilities ---------------------------- */ + +.u-avoid-clicks { + pointer-events: none; +} + +/* Visually hidden, but will be read by screen readers */ +.u-visible-to-screen-reader { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} + +.no-display { + display: none; +} + +/* Content ------------------ */ + +.content { + flex: 1; + position: relative; + overflow: hidden; + visibility: visible; + opacity: 0; + border: none; + padding-top: 15px; + padding-bottom: 20px; + background: #fff; + max-width: 100%; + margin-top: 10px; +} +.content.is-shown { + visibility: visible; + opacity: 1; +} + +/* Hacks ---------------------------- */ + +/* Fixes horizontal scrolling in code blocks on OS X El Cap (10.11.3), retina screen + * + * By adding an invisible outline property, it will force a repaint + * which enables the scrolling. + */ + +.hljs:hover, +.hljs:active { + outline: 1px solid transparent; +} diff --git a/src/electron/renderer/assets/css/guided.css b/src/electron/renderer/assets/css/guided.css index 3458175b0..441ae3c86 100644 --- a/src/electron/renderer/assets/css/guided.css +++ b/src/electron/renderer/assets/css/guided.css @@ -1,1466 +1,1466 @@ -@import url("https://fonts.googleapis.com/css?family=Poppins:400,500,600,700"); - -/* change the font to siblints of guided--body to Poppins except i elements */ - -/*.guided--body *:not(i) { - font-family: "Poppins", sans-serif; -}*/ - -.guided--nav { - min-height: 100vh; - min-width: 220px; - margin: 0px !important; - /* position: fixed; */ - background-color: var(--color-border); - z-index: 1001; - padding: 15px; - flex-direction: column; - justify-content: flex-start; - align-items: center; -} - -.guided--nav-bar-section { - display: flex; - flex-direction: column; - justify-content: center; - align-items: flex-start; - width: 100%; - height: 100%; - border-radius: 5px; -} - -.guided--nav-bar-dropdown { - min-height: 40px; - width: 100%; - display: flex; - align-items: center; - justify-content: space-between; - flex-wrap: nowrap; - border-radius: 5px; - padding: 0px 10px; -} - -.guided--nav-bar-dropdown.skipped { - opacity: 0.5; - pointer-events: none; -} - -.guided--nav-bar-dropdown.skipped .fa-chevron-right { - display: none; -} - -.guided--nav-bar-dropdown:hover { - cursor: pointer; - background-color: var(--color-transparent-soda-green); -} - -.guided--nav-bar-section-page { - display: flex; - width: calc((100% - 20px)); - justify-content: flex-start; - margin-left: 15px; - margin-top: 3px; - padding-left: 5px; -} - -.guided--nav-bar-section-page.skipped { - border-left: 3px solid black !important; -} - -.guided--nav-bar-section-page.completed { - border-left: 3px solid green; -} -.guided--nav-bar-section-page.not-completed { - border-left: 3px solid var(--color-transparent-soda-green); - pointer-events: none; - opacity: 0.5; -} - -.guided--nav-bar-section-page.active { - border-left: 3px solid rgb(0, 133, 210); - background-color: var(--color-transparent-soda-green); -} - -.guided--nav-bar-section-page:hover { - cursor: pointer; - background-color: var(--color-transparent-soda-green); -} - -.guided--nav-bar-section-page:hover:not(.active) { - border-left: 5px solid var(--color-light-green); -} - -.guided--container-nav-items { - width: 100%; - list-style: none; - padding-left: 0px; - /* max-height: 400px; */ - overflow-y: auto; -} - -.container { - max-width: 400px; - margin: 0 auto; - margin-top: 20px; - padding: 40px; -} - -.guided--info-dropdown { - display: flex; - align-self: flex-start; - flex-wrap: nowrap; - justify-content: start; - align-items: center; - cursor: pointer; -} - -.guided--info-dropdown p { - margin: 0px; - font-weight: 500; - font-size: 14px; - color: #000; -} -.guided--info-dropdown i { - margin-left: 6px; - margin-right: 6px; - font-size: 12px; - color: #000; -} - -.guided--info-container { - background-color: var(--color-transparent-soda-green); - - margin-top: 5px; - padding: 10px; - - display: none; - flex-direction: column; - justify-content: center; - - text-align: justify; - - border: 1px solid var(--color-light-green); - border-radius: 3px; -} - -.guided--info-container .guided--help-text { - font-size: 14px; - color: hsl(0, 0%, 22%); -} - -.container-open { - display: flex; - margin-bottom: 0px; - animation: demo-box-fade-in 0.2s cubic-bezier(0, 0.2, 0.2, 0.96); -} -.hide { - pointer-events: none; - visibility: hidden; - opacity: 0; - transform: translateX(-20px); - transition: - visibility 0s 0.12s linear, - opacity 0.12s ease-in, - transform 0.12s ease-in-out; -} -.guided--container-file-import { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - flex-grow: 1; - margin-top: 10px; -} - -.black-arrow-lottie-container { - height: 150px; - width: 150px; - opacity: 0.7; - transform: rotate(180deg); -} -.code-metadata-lottie-container { - height: 130px; - opacity: 0.5; - width: 130px; - margin-bottom: 10px; -} -.guided--file-import { - width: 300px; - min-height: 350px; - display: flex; - flex-direction: column; - align-items: center; - border-radius: 10px; - border: 1px dashed #258193; - padding: 20px; - margin: 0px 10px 10px 10px; -} - -.guided--container { - overflow-y: auto; - display: flex; - justify-content: center; - padding-right: 30px; - flex-direction: column; - align-items: center; -} -.guided--container-upload-status { - height: 35px; - display: flex; - justify-content: center; - align-items: center; -} -.guided--drop-tooltip { - position: absolute; - left: 0; - right: 0; - margin: auto; - bottom: 70px; - display: flex; - justify-content: center; - width: 500px; - z-index: 100000; - background-color: aqua; -} - -.guided--text-instructional-content { - margin-bottom: 0.5rem; -} -.guided--container > h2 { - margin: 0px; -} - -.guided--header { - display: flex; - justify-content: center; - align-items: center; - /* padding-right: 30px; */ -} - -.guided--body { - display: flex; - justify-content: center; - height: 100%; - overflow-y: auto; - padding-top: 10px; - padding-right: 30px; -} - -.guided--input-container { - padding-top: 10px; - padding-bottom: 10px; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - width: 100%; - max-width: 900px; -} - -.guided--input { - width: 100%; - height: 38px; - border-radius: 4px; - padding: 10px 12px; - font-size: 16px; - font-weight: normal; - border: 1px solid var(--color-border); - transition: border-color 150ms ease-in-out 0s; - outline: none; - color: rgb(33, 49, 60); - background-color: rgb(255, 255, 255); -} - -.guided--input:disabled { - color: dimgray; - pointer-events: none; -} - -.guided--input::placeholder { - opacity: 0.5; -} - -.guided--text-area { - height: 5em; - resize: none; -} -.guided--text-area-tall { - height: 15em; -} -.guided--input:hover { - box-shadow: rgb(231 238 236) 0px 0px 0px 2px; -} -.guided--input:focus { - outline: 0; - box-shadow: var(--color-light-green) 0px 0px 0px 1px; -} - -.guided--progression-tab-container { - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; - position: relative; - /* margin-top: 10px; */ - border-bottom: 5px solid #b80d49; -} -.guided--progression-tab-container:first-child { - border-left: 1px solid var(--color-border); -} - -.guided--progression-tab { - position: relative; - display: flex; - flex-direction: row; - flex: 1; - justify-content: center; - align-items: center; - border-right: 1px solid var(--color-border); -} - -.dot { - height: 20px; - width: 20px; - margin: 0px 5px; - font-size: 11px; - border-radius: 50%; - border: 1px solid; - display: flex; - justify-content: center; - align-items: center; - font-weight: bold; -} -.guided--progression-tab-triangle { - position: relative; -} - -.guided--progression-tab-triangle::before { - content: ""; - z-index: 1; - background-color: white; - width: 10px; - height: 10px; - border-top: 1px solid var(--color-border); - border-right: 1px solid var(--color-border); - transform: rotate(45deg); - position: absolute; - top: 50%; - right: -6px; - margin-top: -5px; -} -.selected-tab:before { - background-color: whitesmoke; -} - -.guided--progression-tab-content { - display: flex; - flex-direction: row; - align-items: center; - height: 50px; - width: 100%; - padding-left: 10px; - padding-right: 10px; -} - -.guided--progression-tab-labels { - display: flex; - flex-direction: column; - margin-left: 3px; - justify-content: flex-start; -} - -.guided--progression-tab-label-main { - margin: 0px; - color: black; - font-weight: 600; - font-size: 14px !important; -} - -.guided--progression-tab-label-sub { - margin-top: 2px; - color: #999; - font-weight: 600; - font-size: 12px !important; -} - -.guided--progression-bar { - display: flex; - align-items: center; - flex-direction: row; - width: 100%; -} - -.guided--container-intro { - display: flex; - flex-direction: column; - align-items: center; - padding: 10px; - width: 50%; -} -.guided--subsection-progress-status { - display: flex; - flex: 1; - background-color: #b80d49; - height: 5px; -} -.guided--subsection-progress-status.complete { - background-color: lightgreen; -} -.guided--subsection-progress-status.in-progress { - background-color: yellow; -} -.guided--subsection-progress-status.not-started { - background-color: lightgrey; -} - -.selected-tab { - background-color: whitesmoke; -} - -.guided--splash { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; -} - -.guided--steps { - margin-top: 25px; - display: flex; - flex-direction: column; - justify-content: flex-start; - margin-left: 30px; -} - -.guided--section { - padding: 12px; - padding-left: 0; - padding-right: 0; - display: flex; - flex-direction: column; - align-items: center; - height: 100%; -} - -.guided--container-sub { - display: flex; - flex-grow: 1; - flex-direction: column; - align-items: center; - margin: 6px; -} - -.guided--page, -.guided--panel { - width: 100%; - display: flex; - flex-direction: column; - align-items: center; - margin-bottom: 20px; -} - -.grow { - flex-grow: 1; -} - -.guided--container-permissions { - width: 800px; - display: flex; - flex-direction: row; - align-items: center; -} - -.guided--container-data-display { - display: flex; - width: 90%; - max-width: 900px; - flex-direction: column; - align-items: center; - margin-top: 15px; - height: auto; - box-shadow: 0px 0px 10px #d5d5d5; - padding: 15px 25px; - border-radius: 5px; -} - -.guided--container-data-display-contract { - display: flex; - flex-direction: column; - align-items: center; - max-width: 600px; - margin-top: 15px; - box-shadow: 0px 0px 10px #d5d5d5; - padding: 8px; - border-radius: 5px; -} - -.guided--select-picker { - border-radius: 5px; - border: 1px solid var(--color-light-green); -} - -.neumorphic { - border-radius: 10px; - background: #ffffff; - box-shadow: - 5px 5px 10px #b5b5b5, - -5px -5px 10px #ffffff; - padding: 20px; - border: var(--color-border) 1px solid; -} - -.guided--flex-center { - display: flex; - flex-direction: column; - align-items: center; -} - -.guided--container-dataset-info { - width: 70%; - display: flex; - flex-direction: column; - align-items: center; -} -.guided--card-dataset-info { - width: 100%; - display: flex; - align-items: flex-start; - justify-content: flex-start; - margin: 5px 0px; -} -.guided--dataset-description-container { - padding: 5px 8px; - width: 35%; - min-width: 135px; - text-align: left; -} -.guided--dataset-description { - margin: 0px 0px; - color: #808080; - font-size: 15px; - text-align: right; -} -.guided--dataset-content-container { - padding: 5px 8px; - width: 65%; - display: flex; - flex-grow: 1; - flex-direction: row; - align-items: center; -} -.guided--dataset-content-container:hover { - cursor: pointer; - transform: translateY(-2px); - background-color: whitesmoke; - transition: all 0.75s ease; -} -.guided--dataset-content { - margin: 0px 0px; - color: var(--color); - font-weight: 600; - font-size: 15px; - word-break: break-word; - text-align: left; - flex-grow: 1; -} - -.guided--prompt-centered { - display: flex; - justify-content: center; -} - -.guided--prompt-text { - font-size: 17px; - color: var(--color-bg-plum); - text-align: center; - font-weight: 700; - margin-bottom: 7px; -} - -.guided--prompt-continue { - color: var(--color-light-green) !important; - margin-top: 15px !important; -} - -.guided--text-sub-step { - display: block; - font-size: 18px; - color: rgba(0, 0, 0, 0.87); - text-align: center; - font-weight: 600; - margin-top: 10px !important; - margin-bottom: 12px; -} - -h1.guided--text-sub-step { - font-size: 25px; - margin-bottom: 15px; -} - -.guided--text-info { - display: block; - font-size: 15px; - color: var(--color-bg-plum) !important; - text-align: center; - font-weight: 700; - margin-top: 9px !important; - margin-bottom: 9px; -} -.guided--text-input-instructions { - font-size: 13px; - width: 100%; - padding-top: 4px; - padding-bottom: 5px; - color: dimgray !important; -} - -.guided--label-accordion-field { - font-size: 14px; - color: #090909; - font-weight: 600; - margin-top: 10px; - margin-bottom: 10px; -} - -.progress-bar-table-left { - width: 200px; - text-align: right !important; -} - -.guided--progress-container { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; -} - -.guided--card-container { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; -} - -.guided--datasets-container { - margin-top: 5px; - display: flex; - flex-direction: row; - flex-wrap: wrap; - justify-content: space-evenly; - align-items: flex-start; - width: 100%; - padding: 0px 15px; -} -.guided--dataset-container { - display: flex; - flex-direction: row; - align-items: center; - width: 100%; - padding-top: 5px; - padding-bottom: 5px; - border-top: 1px solid #e6e8eb; - border-bottom: 1px solid #e6e8eb; - padding-left: 7px; - padding-right: 7px; -} - -.guided--text-dataset-card { - margin: 0px; - color: black; - font-weight: 600; - font-size: 14px !important; -} - -.guided--dataset-card-row { - display: flex; - flex-grow: 1; - align-items: center; - justify-content: center; -} - -/* Margin beneath project name */ -.guided--dataset-card-row:first-of-type h1 { - font-size: 16px !important; -} - -.guided--text-dataset-card-sub { - margin: 0px; - color: #999; - font-weight: 600; - font-size: 12px !important; - margin-bottom: 10px; -} - -.guided--dataset-card { - width: 100%; - max-width: 800px; - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - border: none; - border-radius: 5px; - box-shadow: 0px 0px 10px #d5d5d5; - margin: 10px; - padding: 10px; - position: relative; -} -.guided--dataset-card-title { - display: flex; - flex-direction: column; - align-items: center; - margin: 5px 10px; -} -.guided--container-dataset-card-center { - display: flex; - flex-direction: column; - align-items: center; -} -.guided--dataset-card-body { - display: flex; - /* height: 80px; */ - flex-grow: 1; - margin: 5px; - margin-left: 12px; - flex-direction: column; - justify-content: flex-start; - align-items: flex-start; - flex-wrap: nowrap; -} - -.guided--dataset-card-body.shrink { - height: auto; -} - -.guided--dataset-card-item { - display: flex; - flex-direction: column; - align-items: center; - width: 40%; - margin: 9px 5px; -} - -.grow { - flex-grow: 1; -} - -.guided--step { - margin-left: 20px; - display: inline-block; -} - -.guided--step > p { - margin-left: 5px; - display: inline-block; -} - -.guided--step > h4 { - display: inline-block; -} - -.guided--prompt { - font-size: 17px !important; - color: var(--color-bg-plum) !important; - text-align: center; - font-weight: 700 !important; - margin-bottom: 8px !important; - margin-top: 5px !important; -} -.guided--container-subject-samples { - display: flex; - flex-direction: row; - align-items: flex-start; - max-width: 1200px; - width: 90%; -} -.guided--folder-organization-buttons-container { - width: 100%; - display: flex; - justify-content: space-between; - flex-direction: row; - align-items: center; - margin-bottom: 5px; - height: 35px; -} -.guided--folder-organization-buttons-container-sub { - display: flex; - justify-content: space-between; - align-items: center; -} -.remove-margin-right { - margin-right: 0px !important; -} -.show { - pointer-events: auto; - visibility: visible; - opacity: 1; - z-index: 1000; - transform: translateX(0); - transition: - visibility 0s 0s linear, - opacity 0.36s ease-out, - transform 0.36s ease-out; -} - -.guided-section { - /* display: none; */ - position: absolute; - top: 100px; - left: 0; - right: 0; - bottom: 0; - padding-top: 40px; - overflow-x: hidden; - overflow-y: auto; - margin-top: 1px; - /* margin-left: -10px; */ -} - -.guided { - display: none; -} - -.guided.show { - display: flex; - flex-direction: column; -} -.create-button { - cursor: pointer; - display: flex; - justify-content: center; - flex-wrap: wrap; - padding: 20px 10px; - margin: 5px; - border-radius: 5px; - box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset; -} -.create-button:hover { - background-color: whitesmoke; -} -.remove-left-border { - border-left: none !important; -} -.soda-green { - background-color: var(--color-light-green) !important; - color: white !important; -} -.required:after { - content: " *"; - color: red; -} -.justify-center { - width: 100%; - display: flex; - justify-content: center; - flex-wrap: wrap; -} -.mt-0 { - margin-top: 0px !important; -} -.mt-sm { - margin-top: 7px !important; -} -.mt-md { - margin-top: 14px !important; -} -.mt-lg { - margin-top: 20px !important; -} -.mt-xl { - margin-top: 35px !important; -} -.mb-sm { - margin-bottom: 7px !important; -} -.mb-md { - margin-bottom: 14px !important; -} -.mb-lg { - margin-bottom: 20px !important; -} -.space-between { - display: flex; - justify-content: space-between; -} -.space-around { - max-width: 1200px; - display: flex; - justify-content: space-around; - width: 100%; -} - -.guided--capsule-container { - display: flex; - justify-content: center; - align-items: center; - margin-top: 15px; - margin-bottom: 25px; -} -.guided--capsule-container-branch { - display: flex; - justify-content: center; - align-items: center; -} -.guided--capsule { - height: 5px; - width: 30px; - margin-left: 5px; - margin-right: 5px; - background-color: var(--color-border); - border: none; - display: inline-block; - border-radius: 16px; - cursor: pointer; -} - -.guided--capsule.active { - background-color: var(--color-light-green); -} - -.guided--capsule.skipped { - background-color: rgb(36, 36, 36); -} - -.guided--capsule-container-sub-page { - display: flex; - justify-content: center; - align-items: center; - margin-top: 10px; - margin-bottom: 10px; -} -.guided--capsule-sub-page { - height: 5px; - width: 50px; - margin-left: 5px; - margin-right: 5px; - background-color: #d5eaff; - border: none; - display: inline-block; - transform: skewx(-25deg); -} -.guided--capsule-sub-page.active { - background-color: #007bff !important; -} - -.guided--form-label { - width: 100%; - margin: 0 0 0.45rem 0; - color: black; - font-weight: 600; - font-size: 1.5em !important; -} -.guided--form-label { - font-size: 1.2em !important; -} -.guided--form-label.centered { - text-align: center; -} -.guided--radio-button-container { - display: flex; - justify-content: space-between; - align-items: center; -} -.guided--help-text { - font-size: 16px; - max-width: 800px; - text-align: justify; -} -.guided--help-text.small { - font-size: 13px; - max-width: 650px; -} - -.guided--radio-button { - margin: 5px 7px !important; - transition: all 0.2s ease-in-out; -} - -.guided--radio-button:not(.tile-button):not(.guided--tab-button):hover { - transform: scale(1.01); -} - -.guided--radio-button.tile-button { - width: 150px; - height: 150px; - background-color: #fff; - border: none; - font-size: 13px; - font-weight: 600; - border-radius: 5px; - padding-top: 10px; - padding-bottom: 10px; - padding-right: 20px; - padding-left: 20px; - margin: 12px !important; - color: var(--color-teal); - opacity: 1; - box-shadow: 0px 0px 10px #d5d5d5; - display: flex; - flex-direction: column; - align-items: center; -} -.guided--radio-button.tile-button:hover { - outline: none; - box-shadow: 0px 0px 10px 0px var(--color-light-green); - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.guided--radio-button.guided--tab-button { - width: 300px !important; - color: black !important; - background-color: white !important; - box-shadow: none !important; -} - -.guided--radio-button.guided--tab-button.selected { - border-bottom: 8px solid #b80d49; - box-shadow: 0px 0px 3px 0px #b80d49; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; - margin-bottom: -8px !important; -} - -.guided--radio-button.guided--tab-button.not-selected { - border-bottom: 2px solid lightgray; - margin-bottom: -2px !important; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.guided--tile-button-icon { - height: 50px; - width: 50px; -} -.guided--tile-body { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - width: 100%; - height: 100%; -} - -.guided--radio-button.tile-button.selected { - border: 1px solid var(--color-light-green); - box-shadow: 0px 0px 3px 0px var(--color-light-green); - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -/*.guided--radio-button.selected { - opacity: 1 !important; -} -.guided--radio-button.not-selected { - opacity: 0.4 !important; -}*/ - -.guided--card-large { - max-width: 180px !important; - max-height: 180px !important; -} -.guided--footer { - border-top: 1px solid var(--color-border); - display: flex; - align-items: center; - justify-content: space-between; - margin-right: 30px; - padding-top: 15px; - margin-bottom: 10px; -} - -.guided--container-footer-buttons { - display: flex; - justify-content: space-between; - align-items: center; - width: 50%; - padding: 0px 3px; -} -.guided--container-footer-buttons.flex-start { - justify-content: flex-start; -} -.guided--container-footer-buttons.flex-end { - justify-content: flex-end; -} -.guided--container-footer-buttons.flex-between { - justify-content: space-between; -} - -.guided--button-footer { - width: 120px !important; -} - -.guided--button { - width: 100px !important; - margin-top: 15px !important; -} - -.guided--button-basic { - color: var(--color-light-green) !important; - box-shadow: 0 0 0 1px var(--color-light-green) inset !important; -} - -.guided--field { - width: 600px; - margin-top: 15px !important; -} - -.guided--form { - width: 600px !important; -} - -.guided--accordion { - margin: 25px 0px !important; - width: 100% !important; -} - -.guided--accordion-field-container { - width: 100%; - display: flex; - justify-content: center; - flex-direction: column; -} - -.guided--accordion-field { - width: 100%; - padding: 15px 6%; - display: flex; - justify-content: center; - flex-direction: column; -} -.guided--accordion-field-container .guided--accordion-field:last-child { - margin-bottom: 10px; -} - -.guided--alert { - margin-top: 4px; - margin-bottom: 0px; - border-radius: 4px; - text-align: center; - width: 100%; -} - -.customSuggestionsList > div { - max-height: 150px; - border: 2px solid pink; - overflow: auto; -} - -.select2-container--default .select2-selection--multiple .select2-selection__choice__remove { - height: 100%; -} -.guided--hlf-selection-container { - display: flex; - flex-direction: column; - align-items: center; - width: 350px; - height: 476px; - padding: 20px 0px; - border: 1px solid #ccc; - border-radius: 5px; - position: sticky; - top: 10px; -} - -.guided--hlf-selection-aside { - padding: 5px; - display: flex; - flex-direction: column; - align-items: center; - width: 100%; - overflow-y: auto; -} - -.guided--folder-organization-panel { - flex-direction: row; - justify-content: flex-start; - min-height: 100%; - align-items: flex-start; -} - -.selection-aside-item { - width: 100%; - color: black; - border-radius: 5px; - padding: 5px; - margin-bottom: 7px; - margin-top: 7px; - cursor: pointer; -} -.selection-aside-item.is-selected { - background-color: #e8f0fe; - border: 1px solid black; - width: 96%; - align-self: center; -} - -/*Scale selection-aside-item by 110%*/ -.selection-aside-item:hover { - background-color: aliceblue; - width: 97%; - align-self: center; -} - -.coming-soon-div { - pointer-events: none; -} - -.title-border { - margin-bottom: 15px; - border-bottom: 5px solid #b80d49; - width: 100%; -} - -.guided--button-tab-container { - max-width: 800px; - width: 100%; - border-top: 2px solid lightgray; - margin-bottom: 0rem; - border-bottom: 2px solid lightgray; -} - -.guided--welcome-section-label { - width: 100%; - margin: 0 0 0.45rem 0; - color: #b80d49; - font-weight: 600; - font-size: 1.2rem; -} - -.onHoverBlueBoxShadow:hover { - box-shadow: 0 0 6px #b0b0b0 !important; - border: 1px solid #1678c2 !important; -} - -.onHoverBlackBoxShadow:hover { - box-shadow: 0 0 6px #b0b0b0 !important; - border: 1px solid black !important; -} - -.poolContainer { - display: flex; - flex-direction: column; - width: 100%; - border: 1px solid lightgray; - border-radius: 4px !important; - margin-bottom: 1rem; - direction: ltr; -} - -.poolTitleContainer { - margin-top: 0px !important; - background: #fff6ea; - height: 35px; - margin-bottom: -1px; - border-bottom: 1px solid black; - /* padding-top: 0 !important; */ -} - -.poolTitle { - align-self: center; - width: 100%; - margin: 0 !important; - padding-bottom: 6px; -} - -.guided-subjects-aside { - padding-left: 0.5rem; - border: 1px solid lightgray; - background: lightgray; - padding-top: 5px; - padding-bottom: 5px; - text-align-last: center; -} - -.file-explorer-transition { - -webkit-animation: swing 0.5s ease; - animation: swing 0.5s ease; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; -} - -@-webkit-keyframes swing { - 15% { - opacity: 0; - -webkit-transform: translateX(-7px); - transform: translateX(-7px); - } - 30% { - opacity: 0.3; - -webkit-transform: translateX(-7px); - transform: translateX(-7px); - } - 50% { - opacity: 0.5; - -webkit-transform: translateX(-7px); - transform: translateX(-7px); - } - 65% { - opacity: 0.65; - -webkit-transform: translateX(-5px); - transform: translateX(-5px); - } - 80% { - opacity: 0.8; - -webkit-transform: translateX(0px); - transform: translateX(0px); - } - 100% { - opacity: 1; - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes swing { - 15% { - opacity: 0; - -webkit-transform: translateX(-7px); - transform: translateX(-7px); - } - 30% { - opacity: 0.3; - -webkit-transform: translateX(-7px); - transform: translateX(-7px); - } - 50% { - opacity: 0.5; - -webkit-transform: translateX(-7px); - transform: translateX(-7px); - } - 65% { - opacity: 0.65; - -webkit-transform: translateX(-5px); - transform: translateX(-5px); - } - 80% { - opacity: 0.8; - -webkit-transform: translateX(0px); - transform: translateX(0px); - } - 100% { - opacity: 1; - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -.asideContainer { - border: 2px solid lightgray; -} - -.asideTitleContainer { - padding-top: 0; - border-radius: 0; - border: none; - border-right: 2px solid lightgray; -} - -.asideTitle { - background: lightgray; - padding: 12px 0 15px 0; - border-radius: 0; -} - -.border-styling { - border: 2px solid lightgray; -} - -.before-getting-started-btn { - margin-bottom: 1.5rem; -} -.lds-roller { - display: inline-block; - position: relative; - width: 80px; - height: 80px; -} -.lds-roller div { - animation: lds-roller 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite; - transform-origin: 40px 40px; -} -.lds-roller div:after { - content: " "; - display: block; - position: absolute; - width: 7px; - height: 7px; - border-radius: 50%; - background: var(--color-light-green); - margin: -4px 0 0 -4px; -} -.lds-roller div:nth-child(1) { - animation-delay: -0.036s; -} -.lds-roller div:nth-child(1):after { - top: 63px; - left: 63px; -} -.lds-roller div:nth-child(2) { - animation-delay: -0.072s; -} -.lds-roller div:nth-child(2):after { - top: 68px; - left: 56px; -} -.lds-roller div:nth-child(3) { - animation-delay: -0.108s; -} -.lds-roller div:nth-child(3):after { - top: 71px; - left: 48px; -} -.lds-roller div:nth-child(4) { - animation-delay: -0.144s; -} -.lds-roller div:nth-child(4):after { - top: 72px; - left: 40px; -} -.lds-roller div:nth-child(5) { - animation-delay: -0.18s; -} -.lds-roller div:nth-child(5):after { - top: 71px; - left: 32px; -} -.lds-roller div:nth-child(6) { - animation-delay: -0.216s; -} -.lds-roller div:nth-child(6):after { - top: 68px; - left: 24px; -} -.lds-roller div:nth-child(7) { - animation-delay: -0.252s; -} -.lds-roller div:nth-child(7):after { - top: 63px; - left: 17px; -} -.lds-roller div:nth-child(8) { - animation-delay: -0.288s; -} -.lds-roller div:nth-child(8):after { - top: 56px; - left: 12px; -} -@keyframes lds-roller { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(360deg); - } -} - -.tippy-box[data-theme~="soda"] { - background-color: #13716d; - color: white; - /* white-space: nowrap; */ - /* overflow: hidden; */ -} - -.tippy-box[data-theme~="soda"][data-placement^="top"] > .tippy-arrow::before { - border-top-color: #13716d; -} +@import url("https://fonts.googleapis.com/css?family=Poppins:400,500,600,700"); + +/* change the font to siblints of guided--body to Poppins except i elements */ + +/*.guided--body *:not(i) { + font-family: "Poppins", sans-serif; +}*/ + +.guided--nav { + min-height: 100vh; + min-width: 220px; + margin: 0px !important; + /* position: fixed; */ + background-color: var(--color-border); + z-index: 1001; + padding: 15px; + flex-direction: column; + justify-content: flex-start; + align-items: center; +} + +.guided--nav-bar-section { + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + width: 100%; + height: 100%; + border-radius: 5px; +} + +.guided--nav-bar-dropdown { + min-height: 40px; + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: nowrap; + border-radius: 5px; + padding: 0px 10px; +} + +.guided--nav-bar-dropdown.skipped { + opacity: 0.5; + pointer-events: none; +} + +.guided--nav-bar-dropdown.skipped .fa-chevron-right { + display: none; +} + +.guided--nav-bar-dropdown:hover { + cursor: pointer; + background-color: var(--color-transparent-soda-green); +} + +.guided--nav-bar-section-page { + display: flex; + width: calc((100% - 20px)); + justify-content: flex-start; + margin-left: 15px; + margin-top: 3px; + padding-left: 5px; +} + +.guided--nav-bar-section-page.skipped { + border-left: 3px solid black !important; +} + +.guided--nav-bar-section-page.completed { + border-left: 3px solid green; +} +.guided--nav-bar-section-page.not-completed { + border-left: 3px solid var(--color-transparent-soda-green); + pointer-events: none; + opacity: 0.5; +} + +.guided--nav-bar-section-page.active { + border-left: 3px solid rgb(0, 133, 210); + background-color: var(--color-transparent-soda-green); +} + +.guided--nav-bar-section-page:hover { + cursor: pointer; + background-color: var(--color-transparent-soda-green); +} + +.guided--nav-bar-section-page:hover:not(.active) { + border-left: 5px solid var(--color-light-green); +} + +.guided--container-nav-items { + width: 100%; + list-style: none; + padding-left: 0px; + /* max-height: 400px; */ + overflow-y: auto; +} + +.container { + max-width: 400px; + margin: 0 auto; + margin-top: 20px; + padding: 40px; +} + +.guided--info-dropdown { + display: flex; + align-self: flex-start; + flex-wrap: nowrap; + justify-content: start; + align-items: center; + cursor: pointer; +} + +.guided--info-dropdown p { + margin: 0px; + font-weight: 500; + font-size: 14px; + color: #000; +} +.guided--info-dropdown i { + margin-left: 6px; + margin-right: 6px; + font-size: 12px; + color: #000; +} + +.guided--info-container { + background-color: var(--color-transparent-soda-green); + + margin-top: 5px; + padding: 10px; + + display: none; + flex-direction: column; + justify-content: center; + + text-align: justify; + + border: 1px solid var(--color-light-green); + border-radius: 3px; +} + +.guided--info-container .guided--help-text { + font-size: 14px; + color: hsl(0, 0%, 22%); +} + +.container-open { + display: flex; + margin-bottom: 0px; + animation: demo-box-fade-in 0.2s cubic-bezier(0, 0.2, 0.2, 0.96); +} +.hide { + pointer-events: none; + visibility: hidden; + opacity: 0; + transform: translateX(-20px); + transition: + visibility 0s 0.12s linear, + opacity 0.12s ease-in, + transform 0.12s ease-in-out; +} +.guided--container-file-import { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + flex-grow: 1; + margin-top: 10px; +} + +.black-arrow-lottie-container { + height: 150px; + width: 150px; + opacity: 0.7; + transform: rotate(180deg); +} +.code-metadata-lottie-container { + height: 130px; + opacity: 0.5; + width: 130px; + margin-bottom: 10px; +} +.guided--file-import { + width: 300px; + min-height: 350px; + display: flex; + flex-direction: column; + align-items: center; + border-radius: 10px; + border: 1px dashed #258193; + padding: 20px; + margin: 0px 10px 10px 10px; +} + +.guided--container { + overflow-y: auto; + display: flex; + justify-content: center; + padding-right: 30px; + flex-direction: column; + align-items: center; +} +.guided--container-upload-status { + height: 35px; + display: flex; + justify-content: center; + align-items: center; +} +.guided--drop-tooltip { + position: absolute; + left: 0; + right: 0; + margin: auto; + bottom: 70px; + display: flex; + justify-content: center; + width: 500px; + z-index: 100000; + background-color: aqua; +} + +.guided--text-instructional-content { + margin-bottom: 0.5rem; +} +.guided--container > h2 { + margin: 0px; +} + +.guided--header { + display: flex; + justify-content: center; + align-items: center; + /* padding-right: 30px; */ +} + +.guided--body { + display: flex; + justify-content: center; + height: 100%; + overflow-y: auto; + padding-top: 10px; + padding-right: 30px; +} + +.guided--input-container { + padding-top: 10px; + padding-bottom: 10px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: 100%; + max-width: 900px; +} + +.guided--input { + width: 100%; + height: 38px; + border-radius: 4px; + padding: 10px 12px; + font-size: 16px; + font-weight: normal; + border: 1px solid var(--color-border); + transition: border-color 150ms ease-in-out 0s; + outline: none; + color: rgb(33, 49, 60); + background-color: rgb(255, 255, 255); +} + +.guided--input:disabled { + color: dimgray; + pointer-events: none; +} + +.guided--input::placeholder { + opacity: 0.5; +} + +.guided--text-area { + height: 5em; + resize: none; +} +.guided--text-area-tall { + height: 15em; +} +.guided--input:hover { + box-shadow: rgb(231 238 236) 0px 0px 0px 2px; +} +.guided--input:focus { + outline: 0; + box-shadow: var(--color-light-green) 0px 0px 0px 1px; +} + +.guided--progression-tab-container { + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + position: relative; + /* margin-top: 10px; */ + border-bottom: 5px solid #b80d49; +} +.guided--progression-tab-container:first-child { + border-left: 1px solid var(--color-border); +} + +.guided--progression-tab { + position: relative; + display: flex; + flex-direction: row; + flex: 1; + justify-content: center; + align-items: center; + border-right: 1px solid var(--color-border); +} + +.dot { + height: 20px; + width: 20px; + margin: 0px 5px; + font-size: 11px; + border-radius: 50%; + border: 1px solid; + display: flex; + justify-content: center; + align-items: center; + font-weight: bold; +} +.guided--progression-tab-triangle { + position: relative; +} + +.guided--progression-tab-triangle::before { + content: ""; + z-index: 1; + background-color: white; + width: 10px; + height: 10px; + border-top: 1px solid var(--color-border); + border-right: 1px solid var(--color-border); + transform: rotate(45deg); + position: absolute; + top: 50%; + right: -6px; + margin-top: -5px; +} +.selected-tab:before { + background-color: whitesmoke; +} + +.guided--progression-tab-content { + display: flex; + flex-direction: row; + align-items: center; + height: 50px; + width: 100%; + padding-left: 10px; + padding-right: 10px; +} + +.guided--progression-tab-labels { + display: flex; + flex-direction: column; + margin-left: 3px; + justify-content: flex-start; +} + +.guided--progression-tab-label-main { + margin: 0px; + color: black; + font-weight: 600; + font-size: 14px !important; +} + +.guided--progression-tab-label-sub { + margin-top: 2px; + color: #999; + font-weight: 600; + font-size: 12px !important; +} + +.guided--progression-bar { + display: flex; + align-items: center; + flex-direction: row; + width: 100%; +} + +.guided--container-intro { + display: flex; + flex-direction: column; + align-items: center; + padding: 10px; + width: 50%; +} +.guided--subsection-progress-status { + display: flex; + flex: 1; + background-color: #b80d49; + height: 5px; +} +.guided--subsection-progress-status.complete { + background-color: lightgreen; +} +.guided--subsection-progress-status.in-progress { + background-color: yellow; +} +.guided--subsection-progress-status.not-started { + background-color: lightgrey; +} + +.selected-tab { + background-color: whitesmoke; +} + +.guided--splash { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.guided--steps { + margin-top: 25px; + display: flex; + flex-direction: column; + justify-content: flex-start; + margin-left: 30px; +} + +.guided--section { + padding: 12px; + padding-left: 0; + padding-right: 0; + display: flex; + flex-direction: column; + align-items: center; + height: 100%; +} + +.guided--container-sub { + display: flex; + flex-grow: 1; + flex-direction: column; + align-items: center; + margin: 6px; +} + +.guided--page, +.guided--panel { + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + margin-bottom: 20px; +} + +.grow { + flex-grow: 1; +} + +.guided--container-permissions { + width: 800px; + display: flex; + flex-direction: row; + align-items: center; +} + +.guided--container-data-display { + display: flex; + width: 90%; + max-width: 900px; + flex-direction: column; + align-items: center; + margin-top: 15px; + height: auto; + box-shadow: 0px 0px 10px #d5d5d5; + padding: 15px 25px; + border-radius: 5px; +} + +.guided--container-data-display-contract { + display: flex; + flex-direction: column; + align-items: center; + max-width: 600px; + margin-top: 15px; + box-shadow: 0px 0px 10px #d5d5d5; + padding: 8px; + border-radius: 5px; +} + +.guided--select-picker { + border-radius: 5px; + border: 1px solid var(--color-light-green); +} + +.neumorphic { + border-radius: 10px; + background: #ffffff; + box-shadow: + 5px 5px 10px #b5b5b5, + -5px -5px 10px #ffffff; + padding: 20px; + border: var(--color-border) 1px solid; +} + +.guided--flex-center { + display: flex; + flex-direction: column; + align-items: center; +} + +.guided--container-dataset-info { + width: 70%; + display: flex; + flex-direction: column; + align-items: center; +} +.guided--card-dataset-info { + width: 100%; + display: flex; + align-items: flex-start; + justify-content: flex-start; + margin: 5px 0px; +} +.guided--dataset-description-container { + padding: 5px 8px; + width: 35%; + min-width: 135px; + text-align: left; +} +.guided--dataset-description { + margin: 0px 0px; + color: #808080; + font-size: 15px; + text-align: right; +} +.guided--dataset-content-container { + padding: 5px 8px; + width: 65%; + display: flex; + flex-grow: 1; + flex-direction: row; + align-items: center; +} +.guided--dataset-content-container:hover { + cursor: pointer; + transform: translateY(-2px); + background-color: whitesmoke; + transition: all 0.75s ease; +} +.guided--dataset-content { + margin: 0px 0px; + color: var(--color); + font-weight: 600; + font-size: 15px; + word-break: break-word; + text-align: left; + flex-grow: 1; +} + +.guided--prompt-centered { + display: flex; + justify-content: center; +} + +.guided--prompt-text { + font-size: 17px; + color: var(--color-bg-plum); + text-align: center; + font-weight: 700; + margin-bottom: 7px; +} + +.guided--prompt-continue { + color: var(--color-light-green) !important; + margin-top: 15px !important; +} + +.guided--text-sub-step { + display: block; + font-size: 18px; + color: rgba(0, 0, 0, 0.87); + text-align: center; + font-weight: 600; + margin-top: 10px !important; + margin-bottom: 12px; +} + +h1.guided--text-sub-step { + font-size: 25px; + margin-bottom: 15px; +} + +.guided--text-info { + display: block; + font-size: 15px; + color: var(--color-bg-plum) !important; + text-align: center; + font-weight: 700; + margin-top: 9px !important; + margin-bottom: 9px; +} +.guided--text-input-instructions { + font-size: 13px; + width: 100%; + padding-top: 4px; + padding-bottom: 5px; + color: dimgray !important; +} + +.guided--label-accordion-field { + font-size: 14px; + color: #090909; + font-weight: 600; + margin-top: 10px; + margin-bottom: 10px; +} + +.progress-bar-table-left { + width: 200px; + text-align: right !important; +} + +.guided--progress-container { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; +} + +.guided--card-container { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; +} + +.guided--datasets-container { + margin-top: 5px; + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-evenly; + align-items: flex-start; + width: 100%; + padding: 0px 15px; +} +.guided--dataset-container { + display: flex; + flex-direction: row; + align-items: center; + width: 100%; + padding-top: 5px; + padding-bottom: 5px; + border-top: 1px solid #e6e8eb; + border-bottom: 1px solid #e6e8eb; + padding-left: 7px; + padding-right: 7px; +} + +.guided--text-dataset-card { + margin: 0px; + color: black; + font-weight: 600; + font-size: 14px !important; +} + +.guided--dataset-card-row { + display: flex; + flex-grow: 1; + align-items: center; + justify-content: center; +} + +/* Margin beneath project name */ +.guided--dataset-card-row:first-of-type h1 { + font-size: 16px !important; +} + +.guided--text-dataset-card-sub { + margin: 0px; + color: #999; + font-weight: 600; + font-size: 12px !important; + margin-bottom: 10px; +} + +.guided--dataset-card { + width: 100%; + max-width: 800px; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + border: none; + border-radius: 5px; + box-shadow: 0px 0px 10px #d5d5d5; + margin: 10px; + padding: 10px; + position: relative; +} +.guided--dataset-card-title { + display: flex; + flex-direction: column; + align-items: center; + margin: 5px 10px; +} +.guided--container-dataset-card-center { + display: flex; + flex-direction: column; + align-items: center; +} +.guided--dataset-card-body { + display: flex; + /* height: 80px; */ + flex-grow: 1; + margin: 5px; + margin-left: 12px; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; + flex-wrap: nowrap; +} + +.guided--dataset-card-body.shrink { + height: auto; +} + +.guided--dataset-card-item { + display: flex; + flex-direction: column; + align-items: center; + width: 40%; + margin: 9px 5px; +} + +.grow { + flex-grow: 1; +} + +.guided--step { + margin-left: 20px; + display: inline-block; +} + +.guided--step > p { + margin-left: 5px; + display: inline-block; +} + +.guided--step > h4 { + display: inline-block; +} + +.guided--prompt { + font-size: 17px !important; + color: var(--color-bg-plum) !important; + text-align: center; + font-weight: 700 !important; + margin-bottom: 8px !important; + margin-top: 5px !important; +} +.guided--container-subject-samples { + display: flex; + flex-direction: row; + align-items: flex-start; + max-width: 1200px; + width: 90%; +} +.guided--folder-organization-buttons-container { + width: 100%; + display: flex; + justify-content: space-between; + flex-direction: row; + align-items: center; + margin-bottom: 5px; + height: 35px; +} +.guided--folder-organization-buttons-container-sub { + display: flex; + justify-content: space-between; + align-items: center; +} +.remove-margin-right { + margin-right: 0px !important; +} +.show { + pointer-events: auto; + visibility: visible; + opacity: 1; + z-index: 1000; + transform: translateX(0); + transition: + visibility 0s 0s linear, + opacity 0.36s ease-out, + transform 0.36s ease-out; +} + +.guided-section { + /* display: none; */ + position: absolute; + top: 100px; + left: 0; + right: 0; + bottom: 0; + padding-top: 40px; + overflow-x: hidden; + overflow-y: auto; + margin-top: 1px; + /* margin-left: -10px; */ +} + +.guided { + display: none; +} + +.guided.show { + display: flex; + flex-direction: column; +} +.create-button { + cursor: pointer; + display: flex; + justify-content: center; + flex-wrap: wrap; + padding: 20px 10px; + margin: 5px; + border-radius: 5px; + box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset; +} +.create-button:hover { + background-color: whitesmoke; +} +.remove-left-border { + border-left: none !important; +} +.soda-green { + background-color: var(--color-light-green) !important; + color: white !important; +} +.required:after { + content: " *"; + color: red; +} +.justify-center { + width: 100%; + display: flex; + justify-content: center; + flex-wrap: wrap; +} +.mt-0 { + margin-top: 0px !important; +} +.mt-sm { + margin-top: 7px !important; +} +.mt-md { + margin-top: 14px !important; +} +.mt-lg { + margin-top: 20px !important; +} +.mt-xl { + margin-top: 35px !important; +} +.mb-sm { + margin-bottom: 7px !important; +} +.mb-md { + margin-bottom: 14px !important; +} +.mb-lg { + margin-bottom: 20px !important; +} +.space-between { + display: flex; + justify-content: space-between; +} +.space-around { + max-width: 1200px; + display: flex; + justify-content: space-around; + width: 100%; +} + +.guided--capsule-container { + display: flex; + justify-content: center; + align-items: center; + margin-top: 15px; + margin-bottom: 25px; +} +.guided--capsule-container-branch { + display: flex; + justify-content: center; + align-items: center; +} +.guided--capsule { + height: 5px; + width: 30px; + margin-left: 5px; + margin-right: 5px; + background-color: var(--color-border); + border: none; + display: inline-block; + border-radius: 16px; + cursor: pointer; +} + +.guided--capsule.active { + background-color: var(--color-light-green); +} + +.guided--capsule.skipped { + background-color: rgb(36, 36, 36); +} + +.guided--capsule-container-sub-page { + display: flex; + justify-content: center; + align-items: center; + margin-top: 10px; + margin-bottom: 10px; +} +.guided--capsule-sub-page { + height: 5px; + width: 50px; + margin-left: 5px; + margin-right: 5px; + background-color: #d5eaff; + border: none; + display: inline-block; + transform: skewx(-25deg); +} +.guided--capsule-sub-page.active { + background-color: #007bff !important; +} + +.guided--form-label { + width: 100%; + margin: 0 0 0.45rem 0; + color: black; + font-weight: 600; + font-size: 1.5em !important; +} +.guided--form-label { + font-size: 1.2em !important; +} +.guided--form-label.centered { + text-align: center; +} +.guided--radio-button-container { + display: flex; + justify-content: space-between; + align-items: center; +} +.guided--help-text { + font-size: 16px; + max-width: 800px; + text-align: justify; +} +.guided--help-text.small { + font-size: 13px; + max-width: 650px; +} + +.guided--radio-button { + margin: 5px 7px !important; + transition: all 0.2s ease-in-out; +} + +.guided--radio-button:not(.tile-button):not(.guided--tab-button):hover { + transform: scale(1.01); +} + +.guided--radio-button.tile-button { + width: 150px; + height: 150px; + background-color: #fff; + border: none; + font-size: 13px; + font-weight: 600; + border-radius: 5px; + padding-top: 10px; + padding-bottom: 10px; + padding-right: 20px; + padding-left: 20px; + margin: 12px !important; + color: var(--color-teal); + opacity: 1; + box-shadow: 0px 0px 10px #d5d5d5; + display: flex; + flex-direction: column; + align-items: center; +} +.guided--radio-button.tile-button:hover { + outline: none; + box-shadow: 0px 0px 10px 0px var(--color-light-green); + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.guided--radio-button.guided--tab-button { + width: 300px !important; + color: black !important; + background-color: white !important; + box-shadow: none !important; +} + +.guided--radio-button.guided--tab-button.selected { + border-bottom: 8px solid #b80d49; + box-shadow: 0px 0px 3px 0px #b80d49; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; + margin-bottom: -8px !important; +} + +.guided--radio-button.guided--tab-button.not-selected { + border-bottom: 2px solid lightgray; + margin-bottom: -2px !important; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.guided--tile-button-icon { + height: 50px; + width: 50px; +} +.guided--tile-body { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: 100%; + height: 100%; +} + +.guided--radio-button.tile-button.selected { + border: 1px solid var(--color-light-green); + box-shadow: 0px 0px 3px 0px var(--color-light-green); + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +/*.guided--radio-button.selected { + opacity: 1 !important; +} +.guided--radio-button.not-selected { + opacity: 0.4 !important; +}*/ + +.guided--card-large { + max-width: 180px !important; + max-height: 180px !important; +} +.guided--footer { + border-top: 1px solid var(--color-border); + display: flex; + align-items: center; + justify-content: space-between; + margin-right: 30px; + padding-top: 15px; + margin-bottom: 10px; +} + +.guided--container-footer-buttons { + display: flex; + justify-content: space-between; + align-items: center; + width: 50%; + padding: 0px 3px; +} +.guided--container-footer-buttons.flex-start { + justify-content: flex-start; +} +.guided--container-footer-buttons.flex-end { + justify-content: flex-end; +} +.guided--container-footer-buttons.flex-between { + justify-content: space-between; +} + +.guided--button-footer { + width: 120px !important; +} + +.guided--button { + width: 100px !important; + margin-top: 15px !important; +} + +.guided--button-basic { + color: var(--color-light-green) !important; + box-shadow: 0 0 0 1px var(--color-light-green) inset !important; +} + +.guided--field { + width: 600px; + margin-top: 15px !important; +} + +.guided--form { + width: 600px !important; +} + +.guided--accordion { + margin: 25px 0px !important; + width: 100% !important; +} + +.guided--accordion-field-container { + width: 100%; + display: flex; + justify-content: center; + flex-direction: column; +} + +.guided--accordion-field { + width: 100%; + padding: 15px 6%; + display: flex; + justify-content: center; + flex-direction: column; +} +.guided--accordion-field-container .guided--accordion-field:last-child { + margin-bottom: 10px; +} + +.guided--alert { + margin-top: 4px; + margin-bottom: 0px; + border-radius: 4px; + text-align: center; + width: 100%; +} + +.customSuggestionsList > div { + max-height: 150px; + border: 2px solid pink; + overflow: auto; +} + +.select2-container--default .select2-selection--multiple .select2-selection__choice__remove { + height: 100%; +} +.guided--hlf-selection-container { + display: flex; + flex-direction: column; + align-items: center; + width: 350px; + height: 476px; + padding: 20px 0px; + border: 1px solid #ccc; + border-radius: 5px; + position: sticky; + top: 10px; +} + +.guided--hlf-selection-aside { + padding: 5px; + display: flex; + flex-direction: column; + align-items: center; + width: 100%; + overflow-y: auto; +} + +.guided--folder-organization-panel { + flex-direction: row; + justify-content: flex-start; + min-height: 100%; + align-items: flex-start; +} + +.selection-aside-item { + width: 100%; + color: black; + border-radius: 5px; + padding: 5px; + margin-bottom: 7px; + margin-top: 7px; + cursor: pointer; +} +.selection-aside-item.is-selected { + background-color: #e8f0fe; + border: 1px solid black; + width: 96%; + align-self: center; +} + +/*Scale selection-aside-item by 110%*/ +.selection-aside-item:hover { + background-color: aliceblue; + width: 97%; + align-self: center; +} + +.coming-soon-div { + pointer-events: none; +} + +.title-border { + margin-bottom: 15px; + border-bottom: 5px solid #b80d49; + width: 100%; +} + +.guided--button-tab-container { + max-width: 800px; + width: 100%; + border-top: 2px solid lightgray; + margin-bottom: 0rem; + border-bottom: 2px solid lightgray; +} + +.guided--welcome-section-label { + width: 100%; + margin: 0 0 0.45rem 0; + color: #b80d49; + font-weight: 600; + font-size: 1.2rem; +} + +.onHoverBlueBoxShadow:hover { + box-shadow: 0 0 6px #b0b0b0 !important; + border: 1px solid #1678c2 !important; +} + +.onHoverBlackBoxShadow:hover { + box-shadow: 0 0 6px #b0b0b0 !important; + border: 1px solid black !important; +} + +.poolContainer { + display: flex; + flex-direction: column; + width: 100%; + border: 1px solid lightgray; + border-radius: 4px !important; + margin-bottom: 1rem; + direction: ltr; +} + +.poolTitleContainer { + margin-top: 0px !important; + background: #fff6ea; + height: 35px; + margin-bottom: -1px; + border-bottom: 1px solid black; + /* padding-top: 0 !important; */ +} + +.poolTitle { + align-self: center; + width: 100%; + margin: 0 !important; + padding-bottom: 6px; +} + +.guided-subjects-aside { + padding-left: 0.5rem; + border: 1px solid lightgray; + background: lightgray; + padding-top: 5px; + padding-bottom: 5px; + text-align-last: center; +} + +.file-explorer-transition { + -webkit-animation: swing 0.5s ease; + animation: swing 0.5s ease; + -webkit-animation-iteration-count: 1; + animation-iteration-count: 1; +} + +@-webkit-keyframes swing { + 15% { + opacity: 0; + -webkit-transform: translateX(-7px); + transform: translateX(-7px); + } + 30% { + opacity: 0.3; + -webkit-transform: translateX(-7px); + transform: translateX(-7px); + } + 50% { + opacity: 0.5; + -webkit-transform: translateX(-7px); + transform: translateX(-7px); + } + 65% { + opacity: 0.65; + -webkit-transform: translateX(-5px); + transform: translateX(-5px); + } + 80% { + opacity: 0.8; + -webkit-transform: translateX(0px); + transform: translateX(0px); + } + 100% { + opacity: 1; + -webkit-transform: translateX(0); + transform: translateX(0); + } +} + +@keyframes swing { + 15% { + opacity: 0; + -webkit-transform: translateX(-7px); + transform: translateX(-7px); + } + 30% { + opacity: 0.3; + -webkit-transform: translateX(-7px); + transform: translateX(-7px); + } + 50% { + opacity: 0.5; + -webkit-transform: translateX(-7px); + transform: translateX(-7px); + } + 65% { + opacity: 0.65; + -webkit-transform: translateX(-5px); + transform: translateX(-5px); + } + 80% { + opacity: 0.8; + -webkit-transform: translateX(0px); + transform: translateX(0px); + } + 100% { + opacity: 1; + -webkit-transform: translateX(0); + transform: translateX(0); + } +} + +.asideContainer { + border: 2px solid lightgray; +} + +.asideTitleContainer { + padding-top: 0; + border-radius: 0; + border: none; + border-right: 2px solid lightgray; +} + +.asideTitle { + background: lightgray; + padding: 12px 0 15px 0; + border-radius: 0; +} + +.border-styling { + border: 2px solid lightgray; +} + +.before-getting-started-btn { + margin-bottom: 1.5rem; +} +.lds-roller { + display: inline-block; + position: relative; + width: 80px; + height: 80px; +} +.lds-roller div { + animation: lds-roller 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite; + transform-origin: 40px 40px; +} +.lds-roller div:after { + content: " "; + display: block; + position: absolute; + width: 7px; + height: 7px; + border-radius: 50%; + background: var(--color-light-green); + margin: -4px 0 0 -4px; +} +.lds-roller div:nth-child(1) { + animation-delay: -0.036s; +} +.lds-roller div:nth-child(1):after { + top: 63px; + left: 63px; +} +.lds-roller div:nth-child(2) { + animation-delay: -0.072s; +} +.lds-roller div:nth-child(2):after { + top: 68px; + left: 56px; +} +.lds-roller div:nth-child(3) { + animation-delay: -0.108s; +} +.lds-roller div:nth-child(3):after { + top: 71px; + left: 48px; +} +.lds-roller div:nth-child(4) { + animation-delay: -0.144s; +} +.lds-roller div:nth-child(4):after { + top: 72px; + left: 40px; +} +.lds-roller div:nth-child(5) { + animation-delay: -0.18s; +} +.lds-roller div:nth-child(5):after { + top: 71px; + left: 32px; +} +.lds-roller div:nth-child(6) { + animation-delay: -0.216s; +} +.lds-roller div:nth-child(6):after { + top: 68px; + left: 24px; +} +.lds-roller div:nth-child(7) { + animation-delay: -0.252s; +} +.lds-roller div:nth-child(7):after { + top: 63px; + left: 17px; +} +.lds-roller div:nth-child(8) { + animation-delay: -0.288s; +} +.lds-roller div:nth-child(8):after { + top: 56px; + left: 12px; +} +@keyframes lds-roller { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + +.tippy-box[data-theme~="soda"] { + background-color: #13716d; + color: white; + /* white-space: nowrap; */ + /* overflow: hidden; */ +} + +.tippy-box[data-theme~="soda"][data-placement^="top"] > .tippy-arrow::before { + border-top-color: #13716d; +} diff --git a/src/electron/renderer/assets/css/individualtab.css b/src/electron/renderer/assets/css/individualtab.css index bdeb10339..56f38c4c4 100644 --- a/src/electron/renderer/assets/css/individualtab.css +++ b/src/electron/renderer/assets/css/individualtab.css @@ -1,1849 +1,1849 @@ -.option-card { - max-height: 160px; - min-height: 140px; - max-width: 160px; - flex-direction: column; - justify-content: space-between; - display: grid; - grid-template-columns: 1fr; - grid-template-rows: 20% auto; - padding: 5px; - border-radius: 5px; - font-size: 12px; - background: #fff; - margin: 10px; - color: white; - opacity: 0.9; - border: 1px transparent; - position: relative; - box-shadow: 0px 0px 10px #d5d5d5; - cursor: pointer; - pointer-events: auto; -} - -.option-card:hover { - /* border: 1px solid var(--color-light-green); */ - box-shadow: 0px 0px 10px 0px var(--color-light-green); - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.option-card.checked { - border: 1px solid var(--color-light-green); - box-shadow: 0px 0px 3px 0px var(--color-light-green); - opacity: 1; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.option-card.disabled { - pointer-events: none; - opacity: 0.6; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.option-card.radio-button { - width: 180px !important; - height: 180px !important; - grid-template-rows: 10% auto !important; - pointer-events: auto; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.option-card.radio-button .card-body { - padding-top: 0 !important; - margin-top: 3px; - color: #585858; -} - -.option-card.radio-button .card-body i { - font-size: 39px; - color: green; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.option-card.radio-button .card-body h2 { - font-size: 14px; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.option-card.radio-button .card-head { - justify-content: flex-end; -} - -.option-card.radio-button:hover, -.option-card.radio-button:focus, -.option-card.radio-button:active { - color: var(--color-light-green); - /* border: 1px solid var(--color-light-green); */ - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.option-card.radio-button:hover, -.option-card.radio-button:focus, -.option-card.radio-button:active i { - color: var(--color-light-green); - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.option-card.radio-button.checked { - border: 1px solid var(--color-light-green); - box-shadow: 0px 0px 3px 0px var(--color-light-green); - opacity: 1; - pointer-events: none; -} - -.option-card.radio-button.non-selected { - /* pointer-events: none; */ - color: #585858; - opacity: 0.7; -} - -.option-card.radio-button.non-selected svg { - fill: #585858; -} - -.option-card.radio-button.non-selected svg path { - fill: #585858; -} - -.option-card.radio-button.non-selected .card-body i { - color: #585858 !important; -} - -.option-card.radio-button.coming-soon { - background: #f6f6f6; - pointer-events: none; - color: #585858; -} - -.option-card.radio-button.coming-soon svg { - fill: #585858; -} - -.option-card.radio-button.coming-soon .card-body i { - color: #585858 !important; -} -/* -.option-card.radio-button.non-selected:hover { - background: #fff; - border: 1px solid #20b2aa; -} - - -.option-card.radio-button.non-selected:hover svg{ - fill: -} */ - -#table-current-contributors td { - min-width: 100px; -} - -.card-head { - /* text-align: center; */ - padding-top: 0; - font-size: 11px; - display: flex; - flex-direction: row; - justify-content: space-between; -} - -.card-head h2 { - color: #000; - font-size: 14px; - padding-left: 20px; - padding-top: 5px; -} - -.card-head i { - color: orange; - opacity: 0.7; - font-size: 19px; - margin: 5px; -} - -.option-card.radio-button .card-head { - justify-content: flex-end; -} - -.option-card.radio-button .folder-input-check + label:before { - width: 25px; - height: 25px; -} - -.option-card.radio-button .folder-input-check:checked + label:before { - background-color: var(--color-light-green) !important; - border-color: var(--color-light-green) !important; - color: #fff !important; - font-size: 16px; -} - -.folder-input-check { - position: absolute; - display: none; -} - -.folder-input-check + label { - display: block; - margin: 0.2em; - cursor: pointer; - padding: 0.2em; -} - -.folder-input-check + label:before { - content: "\2714"; - border: 0.1em solid #c0c0c0; - border-radius: 50%; - display: inline-block; - width: 22px; - height: 22px; - float: right; - font-size: 13px; - padding-left: 4px; - padding-bottom: 0; - margin-right: 0.2em; - vertical-align: bottom; - color: transparent; - transition: 0.2s; - font-family: Segoe UI Symbol; -} - -.folder-input-check + label:active:before { - transform: scale(0); -} - -.folder-input-check:checked + label:before { - background-color: var(--color-light-green); - border-color: var(--color-light-green); - color: #fff; -} - -.para-metadata-file-status { - margin-top: 25px; - font-weight: 600; - text-align: center; -} - -.card-body { - text-align: center; - padding: 10px !important; - margin-top: 10px; -} - -.card-body.metadata { - padding-left: 20px !important; - padding-right: 20px !important; -} - -.card-end { - padding: 5px; - padding-bottom: 10px; -} - -.main-buttons { - font-size: 15px; - width: 100%; - height: 35px; - padding: 5px; - border: none; - border-radius: 5px; - color: #fff; - cursor: pointer; - background: #c0c0c0; -} - -.main-buttons:hover { - background: var(--color-light-green); - /* transform: scale(1.1) !important; */ - font-size: 16px; -} - -.main-buttons:focus, -.main-buttons:active { - outline: none !important; - border: none !important; -} - -.main-buttons.add-folders.is-selected { - background: var(--color-light-green) !important; - outline: none; -} - -.container-body { - width: 100%; - max-height: 470px; - padding-right: 10px; - padding-left: 0; - margin-right: auto; - margin-left: auto; - margin-top: 5px; - display: flex; - flex-direction: column; - justify-content: space-around; -} - -.first-three-high-level-folders { - width: auto; - padding-top: 10px; - padding-right: 10px; - padding-left: 0; - margin-right: auto; - margin-left: auto; - margin-top: 5px; - display: flex; - flex-direction: row; - justify-content: center; -} - -.question-title { - text-align: center; - color: var(--color); - font-size: 17px; - margin: 20px; - font-family: "Raleway", sans-serif; - font-weight: 500; -} - -.container-end { - max-height: 90px; - padding: 15px; - padding-top: 30px; -} - -.transition-btn { - background: var(--color-light-green); - font-size: 14px; - font-weight: 600; - width: 130px; - height: 38px; - color: #fff; - cursor: pointer; - padding: 8px 24px; - border: none; - border-radius: 4px; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.transition-btn.prev { - background: #fff; - border: none; - color: #666666; - width: 120px; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.transition-btn:hover { - box-shadow: 0 0 6px #b0b0b0; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.transition-btn.back { - background: #fff; - border: 1px solid #666666; - color: #666666; - width: 135px; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.transition-btn:disabled, -.transition-btn[disabled]:hover { - pointer-events: none; - background: #fff; - color: #cccccc; - border: 1px solid #cccccc; - opacity: 0.8; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.parent-tabs { - opacity: 0; - display: flex; - margin-top: 70px; - flex-direction: column; - width: 100%; - margin-top: 0; - overflow: hidden; - height: 0 !important; - transition: height 0.5s cubic-bezier(0.24, 0.96, 1, 1); -} - -.parent-tabs.condensed { - margin-top: 0; -} - -.parent-tabs.tab-active { - opacity: 1; - display: flex; - visibility: visible; - height: 100% !important; -} - -.sub-tabs { - display: none; - grid-template-columns: 1fr; - grid-template-rows: 20% 80%; - margin-top: 70px; - height: auto; -} - -.sub-tabs.condensed { - margin-top: 20px; -} - -.sub-tabs.tab-active { - display: grid; - visibility: visible; -} - -.form-tabs { - display: none; - flex-direction: column; - justify-content: flex-start; - height: 100%; - margin-top: 140px; -} - -.form-tabs.condensed { - margin-top: 20px; -} - -.form-tabs.tab-active { - display: flex; - visibility: visible; -} - -.loading-tabs { - display: none; -} - -.loading-tabs.active { - display: block; -} - -#validate li { - min-height: 280px; - max-width: 240px; - border: 1px dashed #3d3d3d !important; - margin: 20px auto; -} - -.multi-steps { - display: table; - table-layout: fixed; - width: 90%; - counter-reset: section; - padding-left: 5px; - padding-top: 0; - margin: 0 auto; - font-family: "Raleway", sans-serif; -} - -.multi-steps > li { - text-align: center; - display: table-row; - position: relative; - color: #c0c0c0; - z-index: 0; - cursor: pointer; -} - -.multi-steps > li:before { - content: "\f00c"; - content: "\2713;"; - content: "\10003"; - content: "\10004"; - content: "\2713"; - counter-increment: section; - content: counters(section, ".") " "; - display: block; - margin: 0 auto 4px; - background-color: #fff; - width: 25px; - height: 25px; - line-height: 25px; - text-align: center; - font-weight: bold; - border-width: 2px; - border-style: solid; - border-color: #c0c0c0; - border-radius: 50%; -} - -.multi-steps > li:after { - content: ""; - height: 2px; - width: 100%; - background-color: #c0c0c0; - position: absolute; - top: 16px; - left: 50%; - z-index: -1; -} - -.multi-steps > li:last-child:after { - display: none; -} - -.multi-steps > li.is-done:before { - background-color: var(--color-light-green); - border-color: var(--color-light-green); - color: #fff; - content: "\2713"; - font-size: 18px; - box-shadow: 0 0 4px 0 var(--color-light-green); -} - -.multi-steps > li.is-current:before { - border-color: var(--color-light-green) !important; - color: var(--color-light-green) !important; - background-color: #fff !important; -} - -.multi-steps > li.disabled:before { - pointer-events: none !important; -} - -.multi-steps > li.is-current strong { - color: var(--color-light-green); -} - -.multi-steps > li.is-done:after { - background-color: var(--color-light-green); -} - -.multi-steps > li.disabled:after { - pointer-events: none !important; -} - -.multi-steps > li strong { - font-size: 13px; -} - -.multi-steps > li.is-done strong { - color: var(--color-light-green); -} - -.circle-icon { - background: #f0f0f0; - width: 70px; - height: 70px; - border-radius: 50%; - text-align: center; - line-height: 50px; - vertical-align: middle; - padding: 15px; -} - -.icon-checked { - background: #fff; - color: #258193 !important; - border: 2px solid #258193; -} - -.form-control { - height: 35px !important; - background: #f5f5f5 !important; - border-radius: 5px !important; - text-align: center !important; -} - -.form-group label { - margin: 0 auto; -} - -.label-switch.metadata { - font-size: 14px; - margin: 10px !important; -} - -.input-switch.metadata:checked + label { - font-size: 14px; -} - -.div-metadata-import { - display: none; - width: 100%; - height: 370px; - margin: 0 auto; -} - -.div-metadata-import h5 { - text-align: center; -} - -.div-file-import { - text-align: center; - display: inline-block; - flex-direction: column; - justify-content: flex-start; - border: 1px dashed #258193; - padding: 20px; - padding-top: 15px; - width: 200px; - height: 220px; - border-radius: 5px; - margin-left: 15px; - margin-right: 15px; -} - -.div-file-import p { - margin-top: 0; - font-size: 15px; -} - -.div-file-import-button { - background: var(--color-bg-light-green-button); - color: var(--color-teal); - border: 1px solid var(--color-bg-light-green-button); - border-radius: 5px; - margin: 0 auto; - width: 70%; - padding: 7px; - cursor: pointer; -} - -.div-file-import-button:hover { - background: var(--color-light-green); - color: #fff; - font-weight: 600; - border: 1px solid var(--color-light-green); -} - -/* Hide all steps by default: */ -.tab { - display: none; -} - -.vertical-progress-bar { - /* border: 1px solid red; */ - width: auto; - margin: 0; - display: flex; - flex-direction: column; - justify-content: center; -} - -.vertical-progress-bar-step { - position: relative; - margin-bottom: 35px; - width: 28px; - height: 28px; - border-radius: 50%; - box-shadow: 0px 4px 8px rgba(8, 35, 48, 0.24); -} - -.vertical-progress-bar-step.done span:first-of-type { - background: var(--color-bg-plum); - opacity: 0.9; - font-size: 10px; - line-height: 28px; - letter-spacing: 0.25px; - color: #fff; - font-weight: 600; -} - -.vertical-progress-bar-step.done span:last-of-type { - display: none; - position: relative; - background: #373f51; -} - -.vertical-progress-bar-step.is-current span:first-of-type { - background: #fff; - opacity: 0.9; - font-size: 10px; - line-height: 28px; - border: 1px solid var(--color-bg-plum); - color: var(--color-bg-plum); - font-weight: 600; -} - -.vertical-progress-bar-step.is-current span:last-of-type { - display: none; - position: relative; - background: #373f51; -} - -.vertical-progress-bar-step:after { - content: ""; - position: absolute; - top: 100%; - left: 45%; - width: 1px; - height: 35px; - background: #373f51; - opacity: 0.24; - margin-bottom: 20px; -} - -.vertical-progress-bar-step.done:after { - content: ""; - position: absolute; - top: 100%; - left: 45%; - width: 1px; - height: 35px; - background: var(--color-bg-plum); - opacity: 0.8; - margin-bottom: 20px; -} - -.vertical-progress-bar-step.last:after { - height: 0; -} - -.vertical-progress-bar-step span { - display: inline-block; - width: 100%; - height: 100%; - text-align: center; - border-radius: 50%; -} - -.vertical-progress-bar-step span:first-of-type { - background: none; - opacity: 0.9; - font-size: 10px; - line-height: 32px; - letter-spacing: 0.25px; - color: #ccc; - font-weight: 600; -} - -.vertical-progress-bar-step span:last-of-type { - display: none; - position: relative; - background: transparent; -} - -.vertical-progress-bar-step span svg { - position: absolute; - left: 25%; - top: 25%; -} - -.modal-title { - width: 100%; -} - -.tagify.form-control { - height: auto !important; - max-height: 300px; - overflow-y: auto; -} - -.tagify__tag { - max-width: 280px; -} - -.tagify__tag > div > * { - white-space: pre !important; - display: block !important; -} - -.tagify.form-control { - margin-top: 15px; -} -/* -.not-me:hover span:first-of-type { - display: none; -} - -.not-me:hover span:last-of-type { - display: inline-block; -} */ - -.bi.bi-trash.custom-fields:hover { - animation: shakingeffect 0.4s; -} - -@keyframes shakingeffect { - 0% { - transform: translateY(0px) rotate(0deg); - } - 20% { - transform: translateY(-2px) rotate(-4deg); - } - 40% { - transform: translateY(-2px) rotate(-2deg); - } - 60% { - transform: translateY(2px) rotate(4deg); - } - 80% { - transform: translateY(2px) rotate(2deg); - } - 100% { - transform: translateY(0px) rotate(0deg); - } -} - -.ui.positive.button.active { - background: #e7f1ff !important; - color: #0c63e4 !important; -} - -.individual-question { - display: none; - visibility: visible; - flex-direction: column; - justify-content: center; - /* transition: all 0.3s ease-out !important; */ - margin: 0 auto; - margin-bottom: 3em; - width: calc(100% - 300px); -} - -.individual-question.show { - display: flex; - /* height: 50%; */ -} - -.individual-question.show .ui.form .inline.fields .question-label { - color: var(--color-bg-plum) !important; -} - -.question-buttons.active { - background: var(--color-light-teal); - padding: 20px; -} - -.question-buttons.active p { - color: #fff !important; - font-weight: 600 !important; -} - -.question-buttons.active i { - color: #fff !important; - font-weight: 600 !important; -} - -.inline.fields label { - color: var(--color-bg-plum); - margin-right: 80px; -} - -.ui.radio.checkbox input:checked ~ label:after { - background-color: var(--color-light-green) !important; -} - -.ui.radio.checkbox label:after { - top: -3px !important; - left: -4px !important; - width: 23px !important; - height: 23px !important; -} - -.ui.form .inline.fields { - align-items: baseline !important; -} - -.ui.form { - width: 100% !important; -} - -.question-label { - width: 25% !important; -} - -.field select { - width: 100%; -} - -.field { - width: 50%; -} - -.field-disseminate-dataset { - margin: 15px auto; - width: 450px; -} - -.div-organize-dataset-menu { - float: right; - display: flex; - flex-direction: row; - font-size: 16px; -} - -.div-organize-dataset-menu button { - width: 120px; - height: 35px; - padding: 7px; - padding-left: 15px; - font-size: 13px; - font-weight: 600; - margin-bottom: 10px; - background: #fff; - border-radius: 6px; - border: 1px solid var(--tagify-dd-color-primary); - color: var(--tagify-dd-color-primary); - cursor: pointer; - text-align: center; -} - -.div-organize-dataset-menu button:hover { - box-shadow: 0 0 6px #b0b0b0; -} - -.div-organize-dataset-menu button i { - margin-right: 10px; -} - -.individual-question.prev { - display: flex; - /* border-top: 1px solid #f5f5f5 */ -} - -.button-active-now.active { - background: var(--color-light-green) !important; - color: #fff !important; - font-weight: 600 !important; -} - -.individual-question.test label { - color: #696969 !important; -} - -.individual-question.prev label { - color: #898989 !important; - font-size: 16px !important; -} - -.individual-question.show.test2 { - transform: translateY(-15px) !important; - transition: transform 0.7s ease !important; -} - -#Question-generate-dataset { - display: flex !important; - margin-bottom: 30px; -} - -.individual-question.prepare-submission { - width: 60%; -} - -.individual-question.prepare-submission .field { - margin: 15px !important; - width: 100% !important; -} - -.individual-question.prepare-dd { - width: 60%; -} - -.individual-question.prepare-dd .field { - margin: 15px !important; - width: 100% !important; -} - -.ui.form .grouped.fields { - display: flex !important; - flex-direction: column; -} - -.ui.form .grouped.fields > label { - text-align: center; -} - -.ui.input.modified > input { - border-bottom: 1px solid rgba(34, 36, 38, 0.15) !important; - border-left: none !important; - border-right: none !important; - border-top: none !important; - border-radius: 0 !important; -} - -.ui.input.modified > input:focus { - border-bottom: 1px solid var(--color-light-green) !important; -} - -.ui.styled.accordion .title { - background: #fff !important; -} - -.ui.styled.accordion .title.active { - background: #e7f1ff !important; - color: #0c63e4 !important; -} - -.ui.styled.accordion .accordion .title, -.ui.styled.accordion .title { - color: rgba(0, 0, 0, 0.8) !important; -} - -.invalid { - border-color: #e0b4b4 !important; - background: #fff6f6 !important; -} - -/* Manifest toggle button */ - -.labelradiocurate { - color: #696969; -} - -.labelradiocurate-manifest { - color: #696969; - font-size: 18px; - padding: 10px; - margin-right: 20px; - margin-left: 20px; -} - -#generate-manifest-curate:checked .labelradiocurate-manifest.yes { - color: var(--color-light-green) !important; -} - -/* loading splash screen */ -@keyframes loadingCan { - from { - bottom: -10px; - } - - to { - bottom: 0px; - } -} - -.loading-soda-can { - /* padding: 20px 20px; */ - width: 100px; - height: 100px; - /* margin:0 auto; */ - animation-duration: 0.7s; - animation-name: loadingCan; - animation-iteration-count: infinite; - animation-direction: alternate; - position: relative; - margin: 0 auto; -} - -@keyframes changeWelcomeIcon { - from { - left: -15px; - } - - to { - left: 0px; - } -} - -.fas.fa-hand-point-left.welcome-icon-hand { - animation-duration: 0.7s; - animation-name: changeWelcomeIcon; - animation-iteration-count: infinite; - animation-direction: alternate; - position: relative; - color: var(--color-light-green); - font-size: 21px; - margin-right: 10px; -} - -.ui.icon.button { - background: transparent; - color: var(--color-light-green); - padding: 2px !important; - height: 20px; -} - -.ui.icon.button:hover { - background: transparent; -} - -.ui.icon.button i { - font-size: 16px; - margin-left: 5px; -} - -.div-individual-section { - display: none; -} - -.div-individual-section.show { - display: flex; - flex-direction: column; - margin: 30px auto; -} - -.prepare-dd-cards { - width: 180px; - height: 180px; - border: none; - background-color: #fff; - font-size: 13px; - font-weight: 600; - border-radius: 5px; - padding-top: 0; - padding-bottom: 5px; - padding-right: 20px; - padding-left: 20px; - margin-right: 30px; - color: var(--color-teal); - opacity: 1; - position: relative; - box-shadow: 0px 0px 10px #d5d5d5; -} - -.prepare-dd-cards:hover, -.prepare-dd-cards:active, -.prepare-dd-cards:focus { - outline: none; - border: 1px solid var(--color-light-green); - box-shadow: 0px 0px 3px 0px var(--color-light-green); -} -.prepare-dd-cards p { - color: #000; - font-weight: 500; - font-size: 14px; - line-height: 1.5; -} - -.prepare-dd-cards svg { - margin: 0 auto; -} - -.prepare-dd-cards .prepare-dd-cards-main-icon { - display: block; -} - -.prepare-dd-cards .bi.bi-check2 { - display: none; -} - -.svg-change-current-account { - cursor: pointer; - transition: transform 0.07s ease-out; -} - -.svg-change-current-account:hover { - transform: translateY(-2px); - fill: #000; -} - -.change-current-account { - display: flex; - justify-content: space-between; - cursor: pointer; - transition: transform 0.07s ease-out; -} - -.change-current-account:hover { - transform: translateY(-2px); - fill: #000; -} - -.card-container { - display: flex; - flex-direction: row; - width: 100%; - margin-bottom: 5px; - transform: perspective(1px) translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - position: relative; - background: #ffffff; - transition-property: color; - transition-duration: 0.2s; -} - -.card-container:before { - content: ""; - position: absolute; - z-index: -1; - top: 0; - bottom: 0; - left: 0; - right: 0; - transform: scaleY(0); - background: #fdfdfde5; - transform-origin: 50%; - transition-property: transform; - transition-duration: 0.2s; - transition-timing-function: ease-out; -} - -.card-container:hover, -.card-container:focus, -.card-container:active { - color: white; -} -.card-container:hover:before, -.card-container:focus:before, -.card-container:hover:before { - transform: scaleY(1); -} - -.card-container.manage-dataset div, -.card-container.airtable div { - width: 100%; -} - -.card-left { - color: #808080; - font-size: 15px; - width: 30%; - min-width: 135px; - text-align: left; -} - -.card-container.manage-dataset div .card-left, -.card-container.airtable div .card-left { - float: left; -} - -.card-right.bf-account-span, -.card-right.bf-account-details-span, -.card-right.bf-dataset-span, -.card-right.current-permissions { - width: auto; - margin-left: 5px; - margin-top: 0px; - padding-left: 5px; -} - -.card-container.manage-dataset .card-right.bf-dataset-span { - width: fit-content; -} - -.card-container.prepare-submission .card-left { - /* text-align: right; */ - float: left; - /* width: auto; */ -} - -/* .card-container.prepare-submission .card-right { - text-align: left; - width: 70%; - margin-top: 0; -} */ - -.card-right { - color: #000; - font-weight: 600; - margin-left: 8px; - font-size: 15px; - display: flex; - justify-content: space-between; - word-break: break-word; - text-align: left; -} - -.jump-back { - margin-left: 15px; - cursor: pointer; - right: 10px; - line-height: 1.5 !important; -} - -@-webkit-keyframes jump-back { - 0% { - -webkit-transform: translateY(-4px); - transform: translateY(-4px); - } - 50% { - -webkit-transform: translateY(-2px); - transform: translateY(-2px); - } - 100% { - -webkit-transform: translateY(-4px); - transform: translateY(-4px); - } -} -@keyframes jump-back { - 0% { - -webkit-transform: translateY(-3px); - transform: translateY(-3px); - } - 50% { - -webkit-transform: translateY(-2px); - transform: translateY(-2px); - } - 100% { - -webkit-transform: translateY(-3px); - transform: translateY(-3px); - } -} -@-webkit-keyframes jump-back-float { - 100% { - -webkit-transform: translateY(-3px); - transform: translateY(-3px); - } -} -@keyframes jump-back-float { - 100% { - -webkit-transform: translateY(-3px); - transform: translateY(-3px); - } -} - -.jump-back:hover, -.jump-back:focus, -.jump-back:active { - -webkit-animation-name: jump-back-float, jump-back; - animation-name: jump-back-float, jump-back; - -webkit-animation-duration: 0.3s, 1.5s; - animation-duration: 0.3s, 1.5s; - -webkit-animation-delay: 0s, 0.3s; - animation-delay: 0s, 0.3s; - -webkit-animation-timing-function: ease-out, ease-in-out; - animation-timing-function: ease-out, ease-in-out; - -webkit-animation-iteration-count: 1, infinite; - animation-iteration-count: 1, infinite; - -webkit-animation-fill-mode: forwards; - animation-fill-mode: forwards; - -webkit-animation-direction: normal, alternate; - animation-direction: normal, alternate; -} - -.swal2-title { - margin: 0px !important; - font-size: 16px !important; - margin-bottom: 10px !important; -} - -.swal2-select { - min-width: 100% !important; - font-size: 16px !important; -} - -.swal2-popup { - padding: 20px 5px 15px !important; -} - -.swal2-confirm { - background-color: var(--color-light-green) !important; - /* width: 120px !important; */ -} - -/* .swal2-actions { - justify-content: flex-end !important; -} */ - -/* .swal2-deny { - width: 120px !important; - border: 1px solid #dbdbdb !important; - color: #363636 !important; - font-weight: 400 !important; - /* width: 140px !important; */ -/* font-size: 14px !important; - padding: 8px 10px !important; - background: #fff !important; -} */ - -/* .swal2-cancel { - width: 120px !important; -} */ - -body.swal2-shown > [aria-hidden="true"] { - filter: blur(1px); - transition: 0.1s filter linear; -} - -.swal2-deny:hover { - background-image: linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1)) !important; -} - -.swal2-validation-message { - background: transparent !important; - color: red !important; -} - -.swal2-footer { - color: #363636 !important; - /* justify-content: flex-end !important; */ - /* padding-right: 20px !important; */ -} - -.swal2-footer a { - text-decoration: underline; - /* color: var(--color-light-green) !important; */ -} - -.swal-left-align { - text-align: left !important; -} - -.search-select-box { - width: 100% !important; -} - -.swal2-input { - outline: none !important; - border-width: 0 0 1px !important; - border-color: gray !important; - box-shadow: none !important; - border-radius: 0px !important; -} - -.swal2-input:focus { - outline: none !important; - border-width: 0 0 2px !important; - border-color: #13716d !important; -} - -.swal2-input::-webkit-input-placeholder { - color: black; - font-weight: bold; -} - -.search-select-box button { - background-color: #fff !important; - padding: 10px 15px; - color: #363636 !important; - border-radius: 4px; - border: 1px solid #dbdbdb; -} - -.swal2-actions { - z-index: 0 !important; - /* margin-top: 30px !important; */ -} - -.dropdown-menu.show { - z-index: 1 !important; - width: 70% !important; -} - -/* .swal2-header { - margin-bottom: 15px !important; -} */ - -.jstree-default .jstree-themeicon-custom { - color: var(--color-bg-yellow) !important; - font-size: 18px !important; -} - -.jstree-anchor, -.jstree-anchor:link, -.jstree-anchor:visited, -.jstree-anchor:hover, -.jstree-anchor:active { - color: var(--color) !important; - font-weight: 600; -} - -.jstree-icon.jstree-themeicon.jstree-themeicon-custom { - background-size: cover !important; -} - -.jstree-default .jstree-disabled > .jstree-icon { - filter: none !important; -} - -/* .swal2-content { - text-align: left !important; -} */ -.swal2-content .guided--form-label, -.swal2-content .tagify__input { - text-align: left; -} - -/* Use this for any hide animations on sweet alert. Seems to look okay and makes the message disappear faster */ -.animate_fastest { - --animate-duration: 0.3s; -} - -#data { - font-size: 14px !important; -} - -.jstree-default .jstree-anchor { - line-height: 28px !important; - height: 28px !important; -} -.spinner { - width: 50px; - height: 40px; - text-align: center; - font-size: 10px; - margin: 15px; -} - -.spinner > div { - background-color: #333; - height: 100%; - width: 6px; - display: inline-block; - - -webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out; - animation: sk-stretchdelay 1.2s infinite ease-in-out; -} - -.spinner .rect2 { - -webkit-animation-delay: -1.1s; - animation-delay: -1.1s; -} - -.spinner .rect3 { - -webkit-animation-delay: -1s; - animation-delay: -1s; -} - -.spinner .rect4 { - -webkit-animation-delay: -0.9s; - animation-delay: -0.9s; -} - -.spinner .rect5 { - -webkit-animation-delay: -0.8s; - animation-delay: -0.8s; -} - -@-webkit-keyframes sk-stretchdelay { - 0%, - 40%, - 100% { - -webkit-transform: scaleY(0.4); - } - 20% { - -webkit-transform: scaleY(1); - } -} - -@keyframes sk-stretchdelay { - 0%, - 40%, - 100% { - transform: scaleY(0.4); - -webkit-transform: scaleY(0.4); - } - 20% { - transform: scaleY(1); - -webkit-transform: scaleY(1); - } -} - -.pulse-blue { - box-shadow: 0 0 0 0 rgba(52, 172, 224, 1); - animation: pulse-blue-animation 2s infinite; -} - -@keyframes pulse-blue-animation { - 0% { - box-shadow: 0 0 0 0 rgba(52, 172, 224, 0.7); - } - - 50% { - box-shadow: 0 0 0 10px rgba(52, 172, 224, 0); - } - - 100% { - box-shadow: 0 0 0 0 rgba(52, 172, 224, 0); - } -} - -.isa_warning { - color: #9f6000; - background-color: #feefb3; -} - -.close-btn { - cursor: pointer; - color: rgba(204, 204, 204, 0.774); - margin-left: 90%; - background-color: transparent; - border-color: transparent; - transition: 0.1s ease-out; - font-weight: bold; - line-height: 20px; - font-size: larger; -} - -/* When moving the mouse over the close button */ -.close-btn:hover { - color: black; -} - -.need-help-div { - width: 100%; - border-bottom: 5px solid #b80d49; - margin-bottom: -5px; - display: flex; - flex-direction: row; - /* height: 40px; */ -} - -.need-help-div h2 { - font-size: 14px; - width: 70%; - margin-right: 0; - color: #222; - font-weight: 600; - /* padding: 10px; */ - border: 1px solid transparent; - text-align: left; -} - -.api-width > .modal-dialog { - width: 600px !important; - max-width: 600px !important; -} - -.need-help-div a { - text-decoration: none; - width: 30%; - /* padding-top: 12px; */ - border-bottom: none !important; - text-align: right; -} -.need-help-div a:hover { - text-decoration: underline; -} - -#para-review-dataset-info-disseminate { - color: #000; - font-weight: 600; - margin-left: 8px; - font-size: 15px; - width: 70%; -} - -.anchorPrepareDataset { - text-decoration: none; - border-bottom: none !important; -} -.anchorPrepareDataset:hover { - text-decoration: underline; -} - -.start-over { - cursor: pointer; - border-radius: 5px; - width: 120px; - height: 35px; - background-color: #fff; - color: var(--color-bg-plum); - font-weight: 600; - border: 1px solid var(--color-bg-plum); - font-size: inherit; -} - -.jstree-default > .jstree-container-ul > .jstree-node { - overflow: auto !important; -} - -#div-dataset-tree-preview-manifest .jstree-container-ul.jstree-children { - text-align: left; -} - -#div-dataset-tree-preview-manifest { - margin: 0 auto; -} - -.jstree-anchor.jstree-disabled:link { - color: gray !important; -} - -.popover-tooltip.subjects-form { - padding: 0; - font-size: 16px; -} -.popover-tooltip.subjects-form div { - min-width: 180px; -} -.no_results_species { - line-height: 1.5; - padding: 3px 5px; - background: pink; - cursor: pointer; -} - -.confirm-disabled { - pointer-events: none; - background: #fff; - color: #cccccc; - border: 1px solid #cccccc; - opacity: 0.8; - transition: all 0.25s linear; -} - -.contributor-popup { - max-width: 90%; -} - -.swal-content-additional-link #swal2-content { - margin-top: 30px; - text-align: left; -} - -.swal-content-additional-link #swal2-content label { - font-weight: 600; -} - -.swal-large { - overflow-x: scroll; -} - -#div-manifest-edit td.readonly { - color: #000; -} - -.tagify.form-container-input-bf { - overflow-x: hidden; -} - -#contributor-popup { - text-align: left; - min-width: 400px; - min-height: 400px; - margin-top: 30px; - padding: 0 10px; -} - -#contributor-popup input { - margin-bottom: 20px; - margin-top: 15px; -} - -#contributor-popup select { - margin-bottom: 20px; - margin-top: 15px; - height: 45px; -} - -#contributor-popup label { - font-weight: 600; -} - -.autoComplete_wrapper > ul > li mark, -.mark { - padding: 0 !important; -} - -.autoComplete_wrapper { - width: 100% !important; -} - -.autoComplete_wrapper > input { - width: 100% !important; - font-size: inherit !important; - min-height: 2.71428571em !important; - border: none !important; - border-bottom: 1px solid rgba(34, 36, 38, 0.15) !important; - border-radius: 0 !important; - color: inherit !important; -} - -.button-add-species { - width: 115px; - height: 36px; - border-radius: 10px; - border: none; - background: #e7f1ff; - color: #0c63e4; - font-weight: 600; - font-size: 13px; - margin-left: 10px; -} - -.button-add-species:hover { - background: #0c63e4; - color: #e7f1ff; -} - -#prepublishing-checklist button { - text-decoration: none; - cursor: pointer; - background: none; - border: none; - color: #4183c4; - display: inline-block; - position: relative; - z-index: 1; - padding: 2em; - padding-right: 3em; - margin: -2em; -} - -#prepublishing-checklist button:hover { - text-decoration: underline; -} - -#begin-prepublishing-button { - margin: 0 auto; -} - -#begin-prepublishing-button-container { - display: flex; - justify-content: center; -} - -.pre-publishing-continue-container { - margin-bottom: 10px; - margin-top: 10px; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; -} - -#pre-publication-items-container { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - position: relative; - box-shadow: 0px 0px 10px #d5d5d5; - margin-top: 1rem; -} - -#items-pre-publication { - min-height: 230px; - height: 230px; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - margin-left: 38%; - margin-right: auto; -} - -.pre-publishing-file-viewer-file-selected { - font-weight: bold; -} - -.pre-publishing-metadata-file-input { - margin-right: 0.2rem; - font-size: 20px; -} - -.pre-publishing-metadata-file-label { - position: absolute; - bottom: 0.3rem; - margin-left: 0.3rem; - font-size: 1.1rem; - color: black; -} - -.pre-publishing-metadata-file-container { - width: 300px; - position: relative; -} - -#gather-logs-btn { - background: var(--color-light-green); - font-size: 14px; - font-weight: 600; - color: #fff; - width: 130px; - height: 38px; - border: none; - cursor: pointer !important; - border-radius: 4px; -} - -#gather-logs-btn:hover { - box-shadow: 0 0 6px #b0b0b0; -} +.option-card { + max-height: 160px; + min-height: 140px; + max-width: 160px; + flex-direction: column; + justify-content: space-between; + display: grid; + grid-template-columns: 1fr; + grid-template-rows: 20% auto; + padding: 5px; + border-radius: 5px; + font-size: 12px; + background: #fff; + margin: 10px; + color: white; + opacity: 0.9; + border: 1px transparent; + position: relative; + box-shadow: 0px 0px 10px #d5d5d5; + cursor: pointer; + pointer-events: auto; +} + +.option-card:hover { + /* border: 1px solid var(--color-light-green); */ + box-shadow: 0px 0px 10px 0px var(--color-light-green); + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.option-card.checked { + border: 1px solid var(--color-light-green); + box-shadow: 0px 0px 3px 0px var(--color-light-green); + opacity: 1; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.option-card.disabled { + pointer-events: none; + opacity: 0.6; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.option-card.radio-button { + width: 180px !important; + height: 180px !important; + grid-template-rows: 10% auto !important; + pointer-events: auto; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.option-card.radio-button .card-body { + padding-top: 0 !important; + margin-top: 3px; + color: #585858; +} + +.option-card.radio-button .card-body i { + font-size: 39px; + color: green; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.option-card.radio-button .card-body h2 { + font-size: 14px; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.option-card.radio-button .card-head { + justify-content: flex-end; +} + +.option-card.radio-button:hover, +.option-card.radio-button:focus, +.option-card.radio-button:active { + color: var(--color-light-green); + /* border: 1px solid var(--color-light-green); */ + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.option-card.radio-button:hover, +.option-card.radio-button:focus, +.option-card.radio-button:active i { + color: var(--color-light-green); + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.option-card.radio-button.checked { + border: 1px solid var(--color-light-green); + box-shadow: 0px 0px 3px 0px var(--color-light-green); + opacity: 1; + pointer-events: none; +} + +.option-card.radio-button.non-selected { + /* pointer-events: none; */ + color: #585858; + opacity: 0.7; +} + +.option-card.radio-button.non-selected svg { + fill: #585858; +} + +.option-card.radio-button.non-selected svg path { + fill: #585858; +} + +.option-card.radio-button.non-selected .card-body i { + color: #585858 !important; +} + +.option-card.radio-button.coming-soon { + background: #f6f6f6; + pointer-events: none; + color: #585858; +} + +.option-card.radio-button.coming-soon svg { + fill: #585858; +} + +.option-card.radio-button.coming-soon .card-body i { + color: #585858 !important; +} +/* +.option-card.radio-button.non-selected:hover { + background: #fff; + border: 1px solid #20b2aa; +} + + +.option-card.radio-button.non-selected:hover svg{ + fill: +} */ + +#table-current-contributors td { + min-width: 100px; +} + +.card-head { + /* text-align: center; */ + padding-top: 0; + font-size: 11px; + display: flex; + flex-direction: row; + justify-content: space-between; +} + +.card-head h2 { + color: #000; + font-size: 14px; + padding-left: 20px; + padding-top: 5px; +} + +.card-head i { + color: orange; + opacity: 0.7; + font-size: 19px; + margin: 5px; +} + +.option-card.radio-button .card-head { + justify-content: flex-end; +} + +.option-card.radio-button .folder-input-check + label:before { + width: 25px; + height: 25px; +} + +.option-card.radio-button .folder-input-check:checked + label:before { + background-color: var(--color-light-green) !important; + border-color: var(--color-light-green) !important; + color: #fff !important; + font-size: 16px; +} + +.folder-input-check { + position: absolute; + display: none; +} + +.folder-input-check + label { + display: block; + margin: 0.2em; + cursor: pointer; + padding: 0.2em; +} + +.folder-input-check + label:before { + content: "\2714"; + border: 0.1em solid #c0c0c0; + border-radius: 50%; + display: inline-block; + width: 22px; + height: 22px; + float: right; + font-size: 13px; + padding-left: 4px; + padding-bottom: 0; + margin-right: 0.2em; + vertical-align: bottom; + color: transparent; + transition: 0.2s; + font-family: Segoe UI Symbol; +} + +.folder-input-check + label:active:before { + transform: scale(0); +} + +.folder-input-check:checked + label:before { + background-color: var(--color-light-green); + border-color: var(--color-light-green); + color: #fff; +} + +.para-metadata-file-status { + margin-top: 25px; + font-weight: 600; + text-align: center; +} + +.card-body { + text-align: center; + padding: 10px !important; + margin-top: 10px; +} + +.card-body.metadata { + padding-left: 20px !important; + padding-right: 20px !important; +} + +.card-end { + padding: 5px; + padding-bottom: 10px; +} + +.main-buttons { + font-size: 15px; + width: 100%; + height: 35px; + padding: 5px; + border: none; + border-radius: 5px; + color: #fff; + cursor: pointer; + background: #c0c0c0; +} + +.main-buttons:hover { + background: var(--color-light-green); + /* transform: scale(1.1) !important; */ + font-size: 16px; +} + +.main-buttons:focus, +.main-buttons:active { + outline: none !important; + border: none !important; +} + +.main-buttons.add-folders.is-selected { + background: var(--color-light-green) !important; + outline: none; +} + +.container-body { + width: 100%; + max-height: 470px; + padding-right: 10px; + padding-left: 0; + margin-right: auto; + margin-left: auto; + margin-top: 5px; + display: flex; + flex-direction: column; + justify-content: space-around; +} + +.first-three-high-level-folders { + width: auto; + padding-top: 10px; + padding-right: 10px; + padding-left: 0; + margin-right: auto; + margin-left: auto; + margin-top: 5px; + display: flex; + flex-direction: row; + justify-content: center; +} + +.question-title { + text-align: center; + color: var(--color); + font-size: 17px; + margin: 20px; + font-family: "Raleway", sans-serif; + font-weight: 500; +} + +.container-end { + max-height: 90px; + padding: 15px; + padding-top: 30px; +} + +.transition-btn { + background: var(--color-light-green); + font-size: 14px; + font-weight: 600; + width: 130px; + height: 38px; + color: #fff; + cursor: pointer; + padding: 8px 24px; + border: none; + border-radius: 4px; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.transition-btn.prev { + background: #fff; + border: none; + color: #666666; + width: 120px; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.transition-btn:hover { + box-shadow: 0 0 6px #b0b0b0; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.transition-btn.back { + background: #fff; + border: 1px solid #666666; + color: #666666; + width: 135px; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.transition-btn:disabled, +.transition-btn[disabled]:hover { + pointer-events: none; + background: #fff; + color: #cccccc; + border: 1px solid #cccccc; + opacity: 0.8; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.parent-tabs { + opacity: 0; + display: flex; + margin-top: 70px; + flex-direction: column; + width: 100%; + margin-top: 0; + overflow: hidden; + height: 0 !important; + transition: height 0.5s cubic-bezier(0.24, 0.96, 1, 1); +} + +.parent-tabs.condensed { + margin-top: 0; +} + +.parent-tabs.tab-active { + opacity: 1; + display: flex; + visibility: visible; + height: 100% !important; +} + +.sub-tabs { + display: none; + grid-template-columns: 1fr; + grid-template-rows: 20% 80%; + margin-top: 70px; + height: auto; +} + +.sub-tabs.condensed { + margin-top: 20px; +} + +.sub-tabs.tab-active { + display: grid; + visibility: visible; +} + +.form-tabs { + display: none; + flex-direction: column; + justify-content: flex-start; + height: 100%; + margin-top: 140px; +} + +.form-tabs.condensed { + margin-top: 20px; +} + +.form-tabs.tab-active { + display: flex; + visibility: visible; +} + +.loading-tabs { + display: none; +} + +.loading-tabs.active { + display: block; +} + +#validate li { + min-height: 280px; + max-width: 240px; + border: 1px dashed #3d3d3d !important; + margin: 20px auto; +} + +.multi-steps { + display: table; + table-layout: fixed; + width: 90%; + counter-reset: section; + padding-left: 5px; + padding-top: 0; + margin: 0 auto; + font-family: "Raleway", sans-serif; +} + +.multi-steps > li { + text-align: center; + display: table-row; + position: relative; + color: #c0c0c0; + z-index: 0; + cursor: pointer; +} + +.multi-steps > li:before { + content: "\f00c"; + content: "\2713;"; + content: "\10003"; + content: "\10004"; + content: "\2713"; + counter-increment: section; + content: counters(section, ".") " "; + display: block; + margin: 0 auto 4px; + background-color: #fff; + width: 25px; + height: 25px; + line-height: 25px; + text-align: center; + font-weight: bold; + border-width: 2px; + border-style: solid; + border-color: #c0c0c0; + border-radius: 50%; +} + +.multi-steps > li:after { + content: ""; + height: 2px; + width: 100%; + background-color: #c0c0c0; + position: absolute; + top: 16px; + left: 50%; + z-index: -1; +} + +.multi-steps > li:last-child:after { + display: none; +} + +.multi-steps > li.is-done:before { + background-color: var(--color-light-green); + border-color: var(--color-light-green); + color: #fff; + content: "\2713"; + font-size: 18px; + box-shadow: 0 0 4px 0 var(--color-light-green); +} + +.multi-steps > li.is-current:before { + border-color: var(--color-light-green) !important; + color: var(--color-light-green) !important; + background-color: #fff !important; +} + +.multi-steps > li.disabled:before { + pointer-events: none !important; +} + +.multi-steps > li.is-current strong { + color: var(--color-light-green); +} + +.multi-steps > li.is-done:after { + background-color: var(--color-light-green); +} + +.multi-steps > li.disabled:after { + pointer-events: none !important; +} + +.multi-steps > li strong { + font-size: 13px; +} + +.multi-steps > li.is-done strong { + color: var(--color-light-green); +} + +.circle-icon { + background: #f0f0f0; + width: 70px; + height: 70px; + border-radius: 50%; + text-align: center; + line-height: 50px; + vertical-align: middle; + padding: 15px; +} + +.icon-checked { + background: #fff; + color: #258193 !important; + border: 2px solid #258193; +} + +.form-control { + height: 35px !important; + background: #f5f5f5 !important; + border-radius: 5px !important; + text-align: center !important; +} + +.form-group label { + margin: 0 auto; +} + +.label-switch.metadata { + font-size: 14px; + margin: 10px !important; +} + +.input-switch.metadata:checked + label { + font-size: 14px; +} + +.div-metadata-import { + display: none; + width: 100%; + height: 370px; + margin: 0 auto; +} + +.div-metadata-import h5 { + text-align: center; +} + +.div-file-import { + text-align: center; + display: inline-block; + flex-direction: column; + justify-content: flex-start; + border: 1px dashed #258193; + padding: 20px; + padding-top: 15px; + width: 200px; + height: 220px; + border-radius: 5px; + margin-left: 15px; + margin-right: 15px; +} + +.div-file-import p { + margin-top: 0; + font-size: 15px; +} + +.div-file-import-button { + background: var(--color-bg-light-green-button); + color: var(--color-teal); + border: 1px solid var(--color-bg-light-green-button); + border-radius: 5px; + margin: 0 auto; + width: 70%; + padding: 7px; + cursor: pointer; +} + +.div-file-import-button:hover { + background: var(--color-light-green); + color: #fff; + font-weight: 600; + border: 1px solid var(--color-light-green); +} + +/* Hide all steps by default: */ +.tab { + display: none; +} + +.vertical-progress-bar { + /* border: 1px solid red; */ + width: auto; + margin: 0; + display: flex; + flex-direction: column; + justify-content: center; +} + +.vertical-progress-bar-step { + position: relative; + margin-bottom: 35px; + width: 28px; + height: 28px; + border-radius: 50%; + box-shadow: 0px 4px 8px rgba(8, 35, 48, 0.24); +} + +.vertical-progress-bar-step.done span:first-of-type { + background: var(--color-bg-plum); + opacity: 0.9; + font-size: 10px; + line-height: 28px; + letter-spacing: 0.25px; + color: #fff; + font-weight: 600; +} + +.vertical-progress-bar-step.done span:last-of-type { + display: none; + position: relative; + background: #373f51; +} + +.vertical-progress-bar-step.is-current span:first-of-type { + background: #fff; + opacity: 0.9; + font-size: 10px; + line-height: 28px; + border: 1px solid var(--color-bg-plum); + color: var(--color-bg-plum); + font-weight: 600; +} + +.vertical-progress-bar-step.is-current span:last-of-type { + display: none; + position: relative; + background: #373f51; +} + +.vertical-progress-bar-step:after { + content: ""; + position: absolute; + top: 100%; + left: 45%; + width: 1px; + height: 35px; + background: #373f51; + opacity: 0.24; + margin-bottom: 20px; +} + +.vertical-progress-bar-step.done:after { + content: ""; + position: absolute; + top: 100%; + left: 45%; + width: 1px; + height: 35px; + background: var(--color-bg-plum); + opacity: 0.8; + margin-bottom: 20px; +} + +.vertical-progress-bar-step.last:after { + height: 0; +} + +.vertical-progress-bar-step span { + display: inline-block; + width: 100%; + height: 100%; + text-align: center; + border-radius: 50%; +} + +.vertical-progress-bar-step span:first-of-type { + background: none; + opacity: 0.9; + font-size: 10px; + line-height: 32px; + letter-spacing: 0.25px; + color: #ccc; + font-weight: 600; +} + +.vertical-progress-bar-step span:last-of-type { + display: none; + position: relative; + background: transparent; +} + +.vertical-progress-bar-step span svg { + position: absolute; + left: 25%; + top: 25%; +} + +.modal-title { + width: 100%; +} + +.tagify.form-control { + height: auto !important; + max-height: 300px; + overflow-y: auto; +} + +.tagify__tag { + max-width: 280px; +} + +.tagify__tag > div > * { + white-space: pre !important; + display: block !important; +} + +.tagify.form-control { + margin-top: 15px; +} +/* +.not-me:hover span:first-of-type { + display: none; +} + +.not-me:hover span:last-of-type { + display: inline-block; +} */ + +.bi.bi-trash.custom-fields:hover { + animation: shakingeffect 0.4s; +} + +@keyframes shakingeffect { + 0% { + transform: translateY(0px) rotate(0deg); + } + 20% { + transform: translateY(-2px) rotate(-4deg); + } + 40% { + transform: translateY(-2px) rotate(-2deg); + } + 60% { + transform: translateY(2px) rotate(4deg); + } + 80% { + transform: translateY(2px) rotate(2deg); + } + 100% { + transform: translateY(0px) rotate(0deg); + } +} + +.ui.positive.button.active { + background: #e7f1ff !important; + color: #0c63e4 !important; +} + +.individual-question { + display: none; + visibility: visible; + flex-direction: column; + justify-content: center; + /* transition: all 0.3s ease-out !important; */ + margin: 0 auto; + margin-bottom: 3em; + width: calc(100% - 300px); +} + +.individual-question.show { + display: flex; + /* height: 50%; */ +} + +.individual-question.show .ui.form .inline.fields .question-label { + color: var(--color-bg-plum) !important; +} + +.question-buttons.active { + background: var(--color-light-teal); + padding: 20px; +} + +.question-buttons.active p { + color: #fff !important; + font-weight: 600 !important; +} + +.question-buttons.active i { + color: #fff !important; + font-weight: 600 !important; +} + +.inline.fields label { + color: var(--color-bg-plum); + margin-right: 80px; +} + +.ui.radio.checkbox input:checked ~ label:after { + background-color: var(--color-light-green) !important; +} + +.ui.radio.checkbox label:after { + top: -3px !important; + left: -4px !important; + width: 23px !important; + height: 23px !important; +} + +.ui.form .inline.fields { + align-items: baseline !important; +} + +.ui.form { + width: 100% !important; +} + +.question-label { + width: 25% !important; +} + +.field select { + width: 100%; +} + +.field { + width: 50%; +} + +.field-disseminate-dataset { + margin: 15px auto; + width: 450px; +} + +.div-organize-dataset-menu { + float: right; + display: flex; + flex-direction: row; + font-size: 16px; +} + +.div-organize-dataset-menu button { + width: 120px; + height: 35px; + padding: 7px; + padding-left: 15px; + font-size: 13px; + font-weight: 600; + margin-bottom: 10px; + background: #fff; + border-radius: 6px; + border: 1px solid var(--tagify-dd-color-primary); + color: var(--tagify-dd-color-primary); + cursor: pointer; + text-align: center; +} + +.div-organize-dataset-menu button:hover { + box-shadow: 0 0 6px #b0b0b0; +} + +.div-organize-dataset-menu button i { + margin-right: 10px; +} + +.individual-question.prev { + display: flex; + /* border-top: 1px solid #f5f5f5 */ +} + +.button-active-now.active { + background: var(--color-light-green) !important; + color: #fff !important; + font-weight: 600 !important; +} + +.individual-question.test label { + color: #696969 !important; +} + +.individual-question.prev label { + color: #898989 !important; + font-size: 16px !important; +} + +.individual-question.show.test2 { + transform: translateY(-15px) !important; + transition: transform 0.7s ease !important; +} + +#Question-generate-dataset { + display: flex !important; + margin-bottom: 30px; +} + +.individual-question.prepare-submission { + width: 60%; +} + +.individual-question.prepare-submission .field { + margin: 15px !important; + width: 100% !important; +} + +.individual-question.prepare-dd { + width: 60%; +} + +.individual-question.prepare-dd .field { + margin: 15px !important; + width: 100% !important; +} + +.ui.form .grouped.fields { + display: flex !important; + flex-direction: column; +} + +.ui.form .grouped.fields > label { + text-align: center; +} + +.ui.input.modified > input { + border-bottom: 1px solid rgba(34, 36, 38, 0.15) !important; + border-left: none !important; + border-right: none !important; + border-top: none !important; + border-radius: 0 !important; +} + +.ui.input.modified > input:focus { + border-bottom: 1px solid var(--color-light-green) !important; +} + +.ui.styled.accordion .title { + background: #fff !important; +} + +.ui.styled.accordion .title.active { + background: #e7f1ff !important; + color: #0c63e4 !important; +} + +.ui.styled.accordion .accordion .title, +.ui.styled.accordion .title { + color: rgba(0, 0, 0, 0.8) !important; +} + +.invalid { + border-color: #e0b4b4 !important; + background: #fff6f6 !important; +} + +/* Manifest toggle button */ + +.labelradiocurate { + color: #696969; +} + +.labelradiocurate-manifest { + color: #696969; + font-size: 18px; + padding: 10px; + margin-right: 20px; + margin-left: 20px; +} + +#generate-manifest-curate:checked .labelradiocurate-manifest.yes { + color: var(--color-light-green) !important; +} + +/* loading splash screen */ +@keyframes loadingCan { + from { + bottom: -10px; + } + + to { + bottom: 0px; + } +} + +.loading-soda-can { + /* padding: 20px 20px; */ + width: 100px; + height: 100px; + /* margin:0 auto; */ + animation-duration: 0.7s; + animation-name: loadingCan; + animation-iteration-count: infinite; + animation-direction: alternate; + position: relative; + margin: 0 auto; +} + +@keyframes changeWelcomeIcon { + from { + left: -15px; + } + + to { + left: 0px; + } +} + +.fas.fa-hand-point-left.welcome-icon-hand { + animation-duration: 0.7s; + animation-name: changeWelcomeIcon; + animation-iteration-count: infinite; + animation-direction: alternate; + position: relative; + color: var(--color-light-green); + font-size: 21px; + margin-right: 10px; +} + +.ui.icon.button { + background: transparent; + color: var(--color-light-green); + padding: 2px !important; + height: 20px; +} + +.ui.icon.button:hover { + background: transparent; +} + +.ui.icon.button i { + font-size: 16px; + margin-left: 5px; +} + +.div-individual-section { + display: none; +} + +.div-individual-section.show { + display: flex; + flex-direction: column; + margin: 30px auto; +} + +.prepare-dd-cards { + width: 180px; + height: 180px; + border: none; + background-color: #fff; + font-size: 13px; + font-weight: 600; + border-radius: 5px; + padding-top: 0; + padding-bottom: 5px; + padding-right: 20px; + padding-left: 20px; + margin-right: 30px; + color: var(--color-teal); + opacity: 1; + position: relative; + box-shadow: 0px 0px 10px #d5d5d5; +} + +.prepare-dd-cards:hover, +.prepare-dd-cards:active, +.prepare-dd-cards:focus { + outline: none; + border: 1px solid var(--color-light-green); + box-shadow: 0px 0px 3px 0px var(--color-light-green); +} +.prepare-dd-cards p { + color: #000; + font-weight: 500; + font-size: 14px; + line-height: 1.5; +} + +.prepare-dd-cards svg { + margin: 0 auto; +} + +.prepare-dd-cards .prepare-dd-cards-main-icon { + display: block; +} + +.prepare-dd-cards .bi.bi-check2 { + display: none; +} + +.svg-change-current-account { + cursor: pointer; + transition: transform 0.07s ease-out; +} + +.svg-change-current-account:hover { + transform: translateY(-2px); + fill: #000; +} + +.change-current-account { + display: flex; + justify-content: space-between; + cursor: pointer; + transition: transform 0.07s ease-out; +} + +.change-current-account:hover { + transform: translateY(-2px); + fill: #000; +} + +.card-container { + display: flex; + flex-direction: row; + width: 100%; + margin-bottom: 5px; + transform: perspective(1px) translateZ(0); + box-shadow: 0 0 1px rgba(0, 0, 0, 0); + position: relative; + background: #ffffff; + transition-property: color; + transition-duration: 0.2s; +} + +.card-container:before { + content: ""; + position: absolute; + z-index: -1; + top: 0; + bottom: 0; + left: 0; + right: 0; + transform: scaleY(0); + background: #fdfdfde5; + transform-origin: 50%; + transition-property: transform; + transition-duration: 0.2s; + transition-timing-function: ease-out; +} + +.card-container:hover, +.card-container:focus, +.card-container:active { + color: white; +} +.card-container:hover:before, +.card-container:focus:before, +.card-container:hover:before { + transform: scaleY(1); +} + +.card-container.manage-dataset div, +.card-container.airtable div { + width: 100%; +} + +.card-left { + color: #808080; + font-size: 15px; + width: 30%; + min-width: 135px; + text-align: left; +} + +.card-container.manage-dataset div .card-left, +.card-container.airtable div .card-left { + float: left; +} + +.card-right.bf-account-span, +.card-right.bf-account-details-span, +.card-right.bf-dataset-span, +.card-right.current-permissions { + width: auto; + margin-left: 5px; + margin-top: 0px; + padding-left: 5px; +} + +.card-container.manage-dataset .card-right.bf-dataset-span { + width: fit-content; +} + +.card-container.prepare-submission .card-left { + /* text-align: right; */ + float: left; + /* width: auto; */ +} + +/* .card-container.prepare-submission .card-right { + text-align: left; + width: 70%; + margin-top: 0; +} */ + +.card-right { + color: #000; + font-weight: 600; + margin-left: 8px; + font-size: 15px; + display: flex; + justify-content: space-between; + word-break: break-word; + text-align: left; +} + +.jump-back { + margin-left: 15px; + cursor: pointer; + right: 10px; + line-height: 1.5 !important; +} + +@-webkit-keyframes jump-back { + 0% { + -webkit-transform: translateY(-4px); + transform: translateY(-4px); + } + 50% { + -webkit-transform: translateY(-2px); + transform: translateY(-2px); + } + 100% { + -webkit-transform: translateY(-4px); + transform: translateY(-4px); + } +} +@keyframes jump-back { + 0% { + -webkit-transform: translateY(-3px); + transform: translateY(-3px); + } + 50% { + -webkit-transform: translateY(-2px); + transform: translateY(-2px); + } + 100% { + -webkit-transform: translateY(-3px); + transform: translateY(-3px); + } +} +@-webkit-keyframes jump-back-float { + 100% { + -webkit-transform: translateY(-3px); + transform: translateY(-3px); + } +} +@keyframes jump-back-float { + 100% { + -webkit-transform: translateY(-3px); + transform: translateY(-3px); + } +} + +.jump-back:hover, +.jump-back:focus, +.jump-back:active { + -webkit-animation-name: jump-back-float, jump-back; + animation-name: jump-back-float, jump-back; + -webkit-animation-duration: 0.3s, 1.5s; + animation-duration: 0.3s, 1.5s; + -webkit-animation-delay: 0s, 0.3s; + animation-delay: 0s, 0.3s; + -webkit-animation-timing-function: ease-out, ease-in-out; + animation-timing-function: ease-out, ease-in-out; + -webkit-animation-iteration-count: 1, infinite; + animation-iteration-count: 1, infinite; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-direction: normal, alternate; + animation-direction: normal, alternate; +} + +.swal2-title { + margin: 0px !important; + font-size: 16px !important; + margin-bottom: 10px !important; +} + +.swal2-select { + min-width: 100% !important; + font-size: 16px !important; +} + +.swal2-popup { + padding: 20px 5px 15px !important; +} + +.swal2-confirm { + background-color: var(--color-light-green) !important; + /* width: 120px !important; */ +} + +/* .swal2-actions { + justify-content: flex-end !important; +} */ + +/* .swal2-deny { + width: 120px !important; + border: 1px solid #dbdbdb !important; + color: #363636 !important; + font-weight: 400 !important; + /* width: 140px !important; */ +/* font-size: 14px !important; + padding: 8px 10px !important; + background: #fff !important; +} */ + +/* .swal2-cancel { + width: 120px !important; +} */ + +body.swal2-shown > [aria-hidden="true"] { + filter: blur(1px); + transition: 0.1s filter linear; +} + +.swal2-deny:hover { + background-image: linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1)) !important; +} + +.swal2-validation-message { + background: transparent !important; + color: red !important; +} + +.swal2-footer { + color: #363636 !important; + /* justify-content: flex-end !important; */ + /* padding-right: 20px !important; */ +} + +.swal2-footer a { + text-decoration: underline; + /* color: var(--color-light-green) !important; */ +} + +.swal-left-align { + text-align: left !important; +} + +.search-select-box { + width: 100% !important; +} + +.swal2-input { + outline: none !important; + border-width: 0 0 1px !important; + border-color: gray !important; + box-shadow: none !important; + border-radius: 0px !important; +} + +.swal2-input:focus { + outline: none !important; + border-width: 0 0 2px !important; + border-color: #13716d !important; +} + +.swal2-input::-webkit-input-placeholder { + color: black; + font-weight: bold; +} + +.search-select-box button { + background-color: #fff !important; + padding: 10px 15px; + color: #363636 !important; + border-radius: 4px; + border: 1px solid #dbdbdb; +} + +.swal2-actions { + z-index: 0 !important; + /* margin-top: 30px !important; */ +} + +.dropdown-menu.show { + z-index: 1 !important; + width: 70% !important; +} + +/* .swal2-header { + margin-bottom: 15px !important; +} */ + +.jstree-default .jstree-themeicon-custom { + color: var(--color-bg-yellow) !important; + font-size: 18px !important; +} + +.jstree-anchor, +.jstree-anchor:link, +.jstree-anchor:visited, +.jstree-anchor:hover, +.jstree-anchor:active { + color: var(--color) !important; + font-weight: 600; +} + +.jstree-icon.jstree-themeicon.jstree-themeicon-custom { + background-size: cover !important; +} + +.jstree-default .jstree-disabled > .jstree-icon { + filter: none !important; +} + +/* .swal2-content { + text-align: left !important; +} */ +.swal2-content .guided--form-label, +.swal2-content .tagify__input { + text-align: left; +} + +/* Use this for any hide animations on sweet alert. Seems to look okay and makes the message disappear faster */ +.animate_fastest { + --animate-duration: 0.3s; +} + +#data { + font-size: 14px !important; +} + +.jstree-default .jstree-anchor { + line-height: 28px !important; + height: 28px !important; +} +.spinner { + width: 50px; + height: 40px; + text-align: center; + font-size: 10px; + margin: 15px; +} + +.spinner > div { + background-color: #333; + height: 100%; + width: 6px; + display: inline-block; + + -webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out; + animation: sk-stretchdelay 1.2s infinite ease-in-out; +} + +.spinner .rect2 { + -webkit-animation-delay: -1.1s; + animation-delay: -1.1s; +} + +.spinner .rect3 { + -webkit-animation-delay: -1s; + animation-delay: -1s; +} + +.spinner .rect4 { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; +} + +.spinner .rect5 { + -webkit-animation-delay: -0.8s; + animation-delay: -0.8s; +} + +@-webkit-keyframes sk-stretchdelay { + 0%, + 40%, + 100% { + -webkit-transform: scaleY(0.4); + } + 20% { + -webkit-transform: scaleY(1); + } +} + +@keyframes sk-stretchdelay { + 0%, + 40%, + 100% { + transform: scaleY(0.4); + -webkit-transform: scaleY(0.4); + } + 20% { + transform: scaleY(1); + -webkit-transform: scaleY(1); + } +} + +.pulse-blue { + box-shadow: 0 0 0 0 rgba(52, 172, 224, 1); + animation: pulse-blue-animation 2s infinite; +} + +@keyframes pulse-blue-animation { + 0% { + box-shadow: 0 0 0 0 rgba(52, 172, 224, 0.7); + } + + 50% { + box-shadow: 0 0 0 10px rgba(52, 172, 224, 0); + } + + 100% { + box-shadow: 0 0 0 0 rgba(52, 172, 224, 0); + } +} + +.isa_warning { + color: #9f6000; + background-color: #feefb3; +} + +.close-btn { + cursor: pointer; + color: rgba(204, 204, 204, 0.774); + margin-left: 90%; + background-color: transparent; + border-color: transparent; + transition: 0.1s ease-out; + font-weight: bold; + line-height: 20px; + font-size: larger; +} + +/* When moving the mouse over the close button */ +.close-btn:hover { + color: black; +} + +.need-help-div { + width: 100%; + border-bottom: 5px solid #b80d49; + margin-bottom: -5px; + display: flex; + flex-direction: row; + /* height: 40px; */ +} + +.need-help-div h2 { + font-size: 14px; + width: 70%; + margin-right: 0; + color: #222; + font-weight: 600; + /* padding: 10px; */ + border: 1px solid transparent; + text-align: left; +} + +.api-width > .modal-dialog { + width: 600px !important; + max-width: 600px !important; +} + +.need-help-div a { + text-decoration: none; + width: 30%; + /* padding-top: 12px; */ + border-bottom: none !important; + text-align: right; +} +.need-help-div a:hover { + text-decoration: underline; +} + +#para-review-dataset-info-disseminate { + color: #000; + font-weight: 600; + margin-left: 8px; + font-size: 15px; + width: 70%; +} + +.anchorPrepareDataset { + text-decoration: none; + border-bottom: none !important; +} +.anchorPrepareDataset:hover { + text-decoration: underline; +} + +.start-over { + cursor: pointer; + border-radius: 5px; + width: 120px; + height: 35px; + background-color: #fff; + color: var(--color-bg-plum); + font-weight: 600; + border: 1px solid var(--color-bg-plum); + font-size: inherit; +} + +.jstree-default > .jstree-container-ul > .jstree-node { + overflow: auto !important; +} + +#div-dataset-tree-preview-manifest .jstree-container-ul.jstree-children { + text-align: left; +} + +#div-dataset-tree-preview-manifest { + margin: 0 auto; +} + +.jstree-anchor.jstree-disabled:link { + color: gray !important; +} + +.popover-tooltip.subjects-form { + padding: 0; + font-size: 16px; +} +.popover-tooltip.subjects-form div { + min-width: 180px; +} +.no_results_species { + line-height: 1.5; + padding: 3px 5px; + background: pink; + cursor: pointer; +} + +.confirm-disabled { + pointer-events: none; + background: #fff; + color: #cccccc; + border: 1px solid #cccccc; + opacity: 0.8; + transition: all 0.25s linear; +} + +.contributor-popup { + max-width: 90%; +} + +.swal-content-additional-link #swal2-content { + margin-top: 30px; + text-align: left; +} + +.swal-content-additional-link #swal2-content label { + font-weight: 600; +} + +.swal-large { + overflow-x: scroll; +} + +#div-manifest-edit td.readonly { + color: #000; +} + +.tagify.form-container-input-bf { + overflow-x: hidden; +} + +#contributor-popup { + text-align: left; + min-width: 400px; + min-height: 400px; + margin-top: 30px; + padding: 0 10px; +} + +#contributor-popup input { + margin-bottom: 20px; + margin-top: 15px; +} + +#contributor-popup select { + margin-bottom: 20px; + margin-top: 15px; + height: 45px; +} + +#contributor-popup label { + font-weight: 600; +} + +.autoComplete_wrapper > ul > li mark, +.mark { + padding: 0 !important; +} + +.autoComplete_wrapper { + width: 100% !important; +} + +.autoComplete_wrapper > input { + width: 100% !important; + font-size: inherit !important; + min-height: 2.71428571em !important; + border: none !important; + border-bottom: 1px solid rgba(34, 36, 38, 0.15) !important; + border-radius: 0 !important; + color: inherit !important; +} + +.button-add-species { + width: 115px; + height: 36px; + border-radius: 10px; + border: none; + background: #e7f1ff; + color: #0c63e4; + font-weight: 600; + font-size: 13px; + margin-left: 10px; +} + +.button-add-species:hover { + background: #0c63e4; + color: #e7f1ff; +} + +#prepublishing-checklist button { + text-decoration: none; + cursor: pointer; + background: none; + border: none; + color: #4183c4; + display: inline-block; + position: relative; + z-index: 1; + padding: 2em; + padding-right: 3em; + margin: -2em; +} + +#prepublishing-checklist button:hover { + text-decoration: underline; +} + +#begin-prepublishing-button { + margin: 0 auto; +} + +#begin-prepublishing-button-container { + display: flex; + justify-content: center; +} + +.pre-publishing-continue-container { + margin-bottom: 10px; + margin-top: 10px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +#pre-publication-items-container { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + position: relative; + box-shadow: 0px 0px 10px #d5d5d5; + margin-top: 1rem; +} + +#items-pre-publication { + min-height: 230px; + height: 230px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + margin-left: 38%; + margin-right: auto; +} + +.pre-publishing-file-viewer-file-selected { + font-weight: bold; +} + +.pre-publishing-metadata-file-input { + margin-right: 0.2rem; + font-size: 20px; +} + +.pre-publishing-metadata-file-label { + position: absolute; + bottom: 0.3rem; + margin-left: 0.3rem; + font-size: 1.1rem; + color: black; +} + +.pre-publishing-metadata-file-container { + width: 300px; + position: relative; +} + +#gather-logs-btn { + background: var(--color-light-green); + font-size: 14px; + font-weight: 600; + color: #fff; + width: 130px; + height: 38px; + border: none; + cursor: pointer !important; + border-radius: 4px; +} + +#gather-logs-btn:hover { + box-shadow: 0 0 6px #b0b0b0; +} diff --git a/src/electron/renderer/assets/css/main.css b/src/electron/renderer/assets/css/main.css index 59bba82c5..2ae4d3e73 100644 --- a/src/electron/renderer/assets/css/main.css +++ b/src/electron/renderer/assets/css/main.css @@ -1,1918 +1,1918 @@ -body { - margin: 0; - font-family: sans-serif; -} - -button:focus { - outline: none; -} - -/* SODA */ - -.wide-swal { - width: auto !important; - height: auto !important; - justify-content: space-between; - display: block; -} - -.checkbox-design { - -webkit-appearance: none; - margin: 0; - appearance: none; - background-color: #fff; - font: inherit; - color: currentColor; - width: 1.15em; - height: 1.15em; - border: 0.15em solid currentColor; - border-radius: 0.15em; - transform: translateY(-0.075em); - display: grid; - place-content: center; - align-self: center; - margin-right: 10px; - cursor: pointer; -} - -.checkbox-design::before { - content: ""; - width: 0.65em; - height: 0.65em; - transform: scale(0); - transition: 120ms transform ease-in-out; - background-color: var(--color-light-green); -} - -.checkbox-design:checked::before { - transform: scale(1); -} - -.skip-btn { - margin-right: 15px; - background-color: #fff; - border: solid 1px var(--color-light-green); - color: var(--color-light-green); - border-radius: 8px; -} - -.skip-btn:hover { - background-color: var(--color-light-green); - color: #fff; -} - -.replace-btn { - background-color: var(--color-bg-plum); - color: white; - border-radius: 8px; -} - -#selectAll { - display: flex; - justify-content: space-between; -} - -.update-file:before { - opacity: 0.5; -} - -.update-file:after { - content: "\f24d"; - position: absolute; - top: 42px; - right: 24px; - color: var(--color-bg-plum); - z-index: 5; - font-size: 21px; - font-family: "Font Awesome 5 Free"; - font-weight: 900; - text-shadow: - -1px 0 white, - 0 1px white, - 1px 0 white, - 0 -1px white; - pointer-events: none; -} - -.input-name { - color: black; - align-self: center; -} - -.selectAll-container { - margin-top: 5px; - margin-bottom: 0px; - margin-left: 38px; -} - -.selectAll-checkbox { - margin-left: 40px; - margin-right: 74px; -} - -.input-field-design { - margin-bottom: 1px; - margin-right: 10px; - margin-left: 10px; - align-self: center; - text-align: center; -} - -.jexcel_container { - margin-right: 20px; -} - -.checkbox-design:focus { - outline: none; -} - -.input-container { - display: flex; - justify-content: flex-end; - margin-top: 10px; - margin-bottom: 10px; - margin-right: 60px; - margin-left: 25px; - align-items: start; - border-radius: 8px; - background-color: #f7f7f7; -} - -.selectAll-text { - display: flex; - justify-content: space-between; - margin: 0; - margin: 10px; - margin-left: 38px; -} - -.checkbox-container { - display: flex; - justify-content: space-between; - margin-top: 10px; - margin-bottom: 10px; - margin-right: 60px; - margin-left: 25px; - border-radius: 8px; -} - -.checkbox-container:hover { - background-color: #f7f7f7; -} - -#container { - max-height: 300px; - overflow: overlay; - margin: 5px; -} - -.rename-btn { - margin-left: 15px; - background-color: var(--color-light-green); - color: white; - border-radius: 8px; -} - -.cancel-btn { - margin-left: 100px; - background-color: #757575; - color: white; - border-radius: 8px; -} - -.wide-swal-auto { - width: auto !important; - height: auto !important; - display: block; -} - -.swal-button-container { - display: flex; - justify-content: center; - overflow: visible; - margin-top: 5px; -} - -.caption { - max-height: 250px; - overflow-y: overlay; -} - -.rename-input { - outline: none !important; - border-width: 0 0 1px !important; - border-color: gray !important; - box-shadow: none !important; - border-radius: 0px !important; -} - -.rename-input:focus { - outline: none !important; - border-width: 0 0 2px !important; - border-color: #13716d !important; -} - -.rename-input::-webkit-input-placeholder { - color: rgb(139, 139, 139); -} - -.container-fluid { - width: 100%; - height: 85%; - padding-right: 10px; - padding-left: 0; - margin-right: auto; - margin-left: auto; - margin-top: 5px; -} - -.div-organize-items { - min-height: 428px; - padding-top: 0; - width: 100%; - float: left; - border: 1px solid #f0f0f0; - box-shadow: 0 0 2px #d5d5d5; -} - -.div-organize-items.full { - width: 100%; -} - -.button-grp { - display: inline-block; - margin-right: 30px; -} - -a { - border: none; -} - -.button-grp button { - border: 1px #dbdbdb solid; - border-radius: 5px; - font-size: 12px; - background-color: #f8f8f8; - outline: none; - color: #575757; - margin-right: 0px; - padding: 5px 10px; -} - -.button-grp button:disabled, -button[disabled] { - border: 1px solid #999999; - background-color: #cccccc; - color: #666666; -} - -.active-btn { - background-color: #6c6c6c !important; - border: 1px #6c6c6c solid !important; - color: white !important; -} - -button[data-id="bf_list_users"], -button[data-id="bf_list_roles_user"], -button[data-id="bf_list_teams"], -button[data-id="bf_list_roles_team"] { - border: 1px solid rgba(34, 36, 38, 0.15); - border-radius: 7px; - width: 90% !important; -} -button[data-id="guided-sparc-award-dropdown"], -button[data-id="bf_list_users_pi"], -button[data-id="guided_bf_list_users_pi"], -button[data-id="guided_bf_list_users_and_teams"] { - border: 1px solid rgba(34, 36, 38, 0.15); - border-radius: 7px; - height: 35px; -} - -#pi_bootstrap_select_div > .dropdown.bootstrap-select { - width: 550px; -} - -#guided_sparc_award_bootstrap_select_div > .dropdown.bootstrap-select, -#guided_pi_bootstrap_select_div > .dropdown.bootstrap-select, -#guided_permissions_select_div > .dropdown.bootstrap-select { - width: 100%; -} - -.sidebar { - background-color: var(--color-teal); - height: 100%; -} - -.sidebar_title { - color: #f3f3f3; - text-transform: uppercase; - padding: 20px 0px 0px 20px; - margin-top: 0px; - font-size: 11px; - font-weight: 900; - user-select: none; - -webkit-user-select: none; -} - -.sidebar_links { - list-style-type: none; - padding: 0; - margin: 0; - user-select: none; - -webkit-user-select: none; -} - -.active_link { - background-color: #252525; -} - -.window { - padding: 20px; - height: calc(100vh - 110px); - overflow: scroll; -} - -.menu { - background-color: #fff; - color: #333; - list-style: none; - position: absolute; - padding: 6px 0; - text-align: left; - border-radius: 5px; - cursor: pointer; - word-wrap: break-word; - margin-bottom: 0; - margin-top: 0; - margin-right: 4px; - z-index: 1000; - border: 1px solid rgba(0, 0, 0, 0.15); -} - -.menu.reg-folder { - width: 110px; - height: auto; -} - -.menu.reg-folder li { - padding: 3px 10px; - background-color: #fff; - font-size: 13px; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, - "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; -} - -.menu.file { - width: 110px; - height: auto; -} - -.menu.file li { - padding: 3px 10px; - background-color: #fff; - color: black; - font-size: 13px; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, - "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; -} - -.menu.file li:hover { - background-color: #f0f0f0; -} - -.menu.reg-folder li:hover { - background-color: #f0f0f0; -} - -.menu.high-level-folder li:hover { - background-color: #f0f0f0; -} - -.menu.high-level-folder.off { - display: none; - top: -200%; - left: -200%; -} - -.menu.high-level-folder { - width: 110px; - height: auto; -} - -.menu.high-level-folder li { - padding: 3px 10px; - background-color: #fff; - font-size: 13px; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, - "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; -} - -.menu.reg-folder.off { - display: none; - top: -200%; - left: -200%; -} - -.menu.file.off { - display: none; - top: -210%; - left: -210%; - position: absolute; -} - -.menu.file li { - width: 108px; - background-color: #fff; -} - -.modal-content textarea { - font-size: 11px !important; -} - -.modal-body { - padding: 10px 10px; - font-size: 15px; -} - -.modal-title { - margin-top: 10px; - font-size: 17px; -} - -.modal-header { - font-size: 17px; - font-weight: bold; - height: 60px; - padding: 8px 10px !important; - text-align: center; - vertical-align: middle; -} - -.modal-footer { - padding: 10px 12px !important; -} - -.modal-footer button { - /* width: 30% !important; */ - padding: 4px 10px !important; - font-weight: 400 !important; - font-size: 14px !important; -} - -.dropdown-item { - font-size: 13px !important; - line-height: 2; - color: #404040; -} - -.hoverPath { - width: auto; - min-height: auto; - background-color: #f4f4f4; - color: #333; - border: 1px solid #aaa; - /* box-shadow: 2px 2px 2px #999; */ - border-radius: 3px; - position: fixed; - padding: 5px 5px; - font-size: 12px; - z-index: 5; - overflow: hidden; -} - -.hoverFullName { - max-width: auto; - min-height: auto; - background-color: #f4f4f4; - color: #333; - border: 1px solid #aaa; - border-radius: 3px; - position: absolute; - padding: 5px 5px; - font-size: 12px; - z-index: 1000; -} - -.single-item { - display: inline-block; - text-align: center; - width: 120px; - height: 100px; - position: relative !important; - margin-right: 5px; - margin-top: 5px; - padding: 10px 0px 10px 0px; -} - -.single-item.selected-item:hover { - border: #c0c0c0; - background-color: #d8d7d7; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.single-item.selected-item:focus { - border: #c0c0c0; - background-color: #eeeaea; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -@-o-keyframes fadeIt { - 0% { - background-color: #ffffff; - } - - 50% { - background-color: #85ceff; - } - - 100% { - background-color: #ffffff; - } -} - -@keyframes fadeIt { - 0% { - background-color: #ffffff; - } - - 50% { - background-color: #85ceff; - } - - 100% { - background-color: #ffffff; - } -} - -.backgroundAnimate { - background-image: none !important; - -o-animation: fadeIt 3s ease-in-out; - animation: fadeIt 3s ease-in-out; -} - -.ds-selected { - border: #c0c0c0; - background-color: #eeeaea; - /* transform: translateY(-6px); */ -} - -.single-item:active { - transform: all 3s; - -webkit-transform: all 3s; -} - -/*Pre publishing submission flow file viewer uses .single-item but allows a user to select a file UI element. - When the element is selected it adds styling. This sets it up to ignore the hover effect styling once selected. -*/ -.single-item:not(.pre-publishing-file-viewer-file-selected):hover { - border: #c0c0c0; - background-color: #f5f5f5; - transition: all 0.15s linear; - -webkit-transition: all 0.15s linear; -} - -.single-item:hover + #myspan { - display: block; -} - -.folder_desc { - text-align: center; - font-size: 13px; - width: 110px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - user-select: none; - -webkit-user-select: none; - padding: 0px 4px 0px 4px; - /* word-wrap: break-word; */ - line-height: 1.5; - margin-right: 5px; - margin-left: 5px; - color: black; - pointer-events: none; -} - -.blue { - color: rgb(255, 165, 0, 0.8); -} - -.switch { - position: relative; - display: inline-block; - width: 45px; - height: 20px; - padding: 5px; -} - -.btn.btn-success:hover { - border: 5px solid #3b5998; - box-shadow: 0 0 5px #3b5998; - transition: all 0.5s ease; -} - -.button-back { - color: #666666; - background-color: #fff; - border: 1px solid #666666; - border-radius: 5px; - height: 35px; - width: 40px; - font-size: 14px; - background-position: center; - transition: background 0.8s; -} - -.button-back:hover { - box-shadow: 0 0 3px 0px #666666; -} - -.button-back:active { - transform: translateY(-4px); -} - -.button-back:focus { - outline: none; -} - -.myButton { - margin-right: 3px; - font-size: 13px; - font-weight: 600; - color: #fff; - background-color: #bf3062; - border: 1px solid transparent; - border-radius: 5px; - cursor: pointer; - height: 35px; - width: 110px; - box-shadow: 0 0 2px #999; - background-position: center; - transition: background 0.8s; -} - -.myButton.second { - background-color: #bf3062; - color: #fff; -} - -.myButton:hover { - background: var(--color-teal) radial-gradient(circle, transparent 1%, var(--color-teal) 1%) center/15000%; - color: white; - box-shadow: 0 0 5px #3b5998; - transition: all 0.5s ease; -} - -.myButton:active { - background-color: #292d3e; - background-size: 100%; - transition: background 0s; - transform: translateY(-3px); -} - -.myButton:focus { - outline: none; -} - -.myButton.second:hover { - background: var(--color-teal) radial-gradient(circle, transparent 1%, var(--color-teal) 1%) center/15000%; - color: #fff; - box-shadow: 0 0 5px #3b5998; - transition: all 0.5s ease; -} - -.confirmButton { - left: 89%; - top: 93%; - position: absolute; - font-family: "Montserrat", sans-serif; - width: 190px; - font-size: 14px; - font-weight: 600; - color: var(--color-light-green); - background-color: #fff; - border: 2px solid var(--color-light-green); - margin: 0 0; - height: 35px; - cursor: pointer; - border-radius: 5px; - background: linear-gradient(to left, #fff 50%, var(--color-light-green) 50%) right; - background-size: 200%; - transition: 0.5s ease-out; -} - -.confirmButton:hover { - color: #fff; - background-position: left; -} - -.confirmButton:active { - background-size: 100%; - transform: translateY(-3px); -} - -.confirmButton:focus { - outline: none; -} - -.div-organize-generate-dataset { - text-align: center; - min-width: 450px; - margin-top: 20px; - display: flex; - flex-direction: column; - justify-content: center; -} - -.div-organize-generate-dataset.metadata { - justify-content: space-around; - flex-wrap: wrap; - /* margin-top: 50px !important; */ - margin: 0 auto; -} - -.div-organize-generate-dataset.metadata.hide { - display: none; -} - -.div-organize-generate-dataset.metadata button { - width: 150px; - height: 155px; -} - -.div-organize-generate-dataset.metadata i { - color: var(--tagify-dd-color-primary) !important; - font-size: 50px !important; -} - -.div-organize-generate-dataset.metadata p { - /* color: orange; */ - font-size: 13px; - margin-top: 20px !important; -} - -.content-header.metadata-step4 { - font-weight: 600; - color: #000; -} - -.div-file-import.pennsieve { - display: none; -} - -.flex-row-container.code-metadata { - display: none; -} - -.div-individual-metadata { - display: none; -} - -.div-individual-metadata.show { - display: flex; - flex-direction: column; - margin: 30px auto; -} - -.button-generate-dataset { - width: 200px; - height: 200px; - border: none; - background-color: #fff; - font-size: 13px; - font-weight: 600; - border-radius: 5px; - padding-top: 0; - padding-bottom: 5px; - padding-right: 20px; - padding-left: 20px; - margin-right: 30px; - color: var(--color-teal); - opacity: 1; - position: relative; - box-shadow: 0px 0px 10px #d5d5d5; -} - -.button-generate-dataset:hover { - outline: none; - /* border: 1px solid var(--color-light-green); */ - box-shadow: 0px 0px 10px 0px var(--color-light-green); - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.button-generate-dataset:active, -.button-generate-dataset:focus { - outline: none; - border: 1px solid var(--color-light-green); - box-shadow: 0px 0px 3px 0px var(--color-light-green); - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.button-generate-dataset p { - color: #000; - font-weight: 500; - font-size: 14px; - line-height: 1.5; -} - -.button-generate-dataset svg { - margin: 0 auto; -} - -.button-generate-dataset .bi.bi-file-earmark-plus { - display: block; -} - -.button-generate-dataset .bi.bi-check2 { - display: none; -} - -.drag-drop-container-instructions { - display: flex; - flex-direction: column; - align-items: center; - width: 100%; - padding: 25px; - opacity: 0.55; -} - -.file-templates-button { - width: 160px; - height: 160px; - border: none; - background-color: #fff; - font-size: 13px; - font-weight: 600; - border-radius: 5px; - padding-top: 5px; - padding-bottom: 5px; - padding-right: 20px; - padding-left: 20px; - margin-right: 30px; - color: var(--color-teal); - opacity: 1; - position: relative; - box-shadow: 0px 0px 10px #d5d5d5; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.file-templates-button svg { - margin: 0 auto; - fill: var(--tagify-dd-color-primary); - width: 45px; - height: 45px; - pointer-events: none; -} - -.file-templates-button:hover { - outline: none; - box-shadow: 0px 0px 10px 0px var(--color-light-green); - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.file-templates-button:active { - border: 1px solid var(--color-light-green); - box-shadow: 0px 0px 3px 0px var(--color-light-green); - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.metadata-button.button-generate-dataset.code-metadata { - display: none; -} - -.metadata-button.button-generate-dataset.done { - border: 1px solid var(--color-light-green); - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.metadata-button.button-generate-dataset.done p { - color: var(--color-light-green); - font-weight: 600; -} - -.metadata-button.button-generate-dataset.done .bi.bi-file-earmark-plus { - display: none; -} - -.metadata-button.button-generate-dataset.done .bi.bi-check2 { - color: var(--color-light-green); - display: block !important; - margin: 0 auto; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.form-group.row { - margin-bottom: 10px; - margin-left: 5px; -} - -.folder_desc.pennsieve_folder:after { - content: "\f0c2"; - position: absolute; - bottom: 34px; - left: 18px; - color: rgb(81, 176, 240); - z-index: 5; - font-size: 21px; - font-family: "Font Awesome 5 Free"; - font-weight: 900; - text-shadow: - -1px 0 white, - 0 1px white, - 1px 0 white, - 0 -1px white; - pointer-events: none; -} - -.pennsieve_folder_deleted { - color: rgba(0, 0, 0, 0.5); -} - -.folder_desc.local_folder:after { - content: "\f7c2"; - position: absolute; - bottom: 34px; - left: 18px; - color: rgb(81, 176, 240); - z-index: 5; - font-size: 21px; - font-family: "Font Awesome 5 Free"; - font-weight: 900; - text-shadow: - -1px 0 white, - 0 1px white, - 1px 0 white, - 0 -1px white; - pointer-events: none; -} - -.local_folder_deleted { - color: rgba(0, 0, 0, 0.5); -} - -.folder_desc.pennsieve_folder_deleted:after { - content: "\f0c2"; - position: absolute; - bottom: 34px; - left: 18px; - color: rgb(185, 221, 245); - z-index: 5; - font-size: 21px; - font-family: "Font Awesome 5 Free"; - font-weight: 900; - text-shadow: - -1px 0 white, - 0 1px white, - 1px 0 white, - 0 -1px white; - pointer-events: none; -} - -.folder_desc.local_folder_deleted:after { - content: "\f7c2"; - position: absolute; - bottom: 34px; - left: 18px; - color: rgb(185, 221, 245); - z-index: 5; - font-size: 21px; - font-family: "Font Awesome 5 Free"; - font-weight: 900; - text-shadow: - -1px 0 white, - 0 1px white, - 1px 0 white, - 0 -1px white; - pointer-events: none; -} - -.folder_desc.pennsieve_file:after { - content: "\f0c2"; - position: absolute; - bottom: 27px; - left: 34px; - color: rgb(81, 176, 240); - z-index: 5; - font-size: 21px; - font-family: "Font Awesome 5 Free"; - font-weight: 900; - text-shadow: - -1px 0 white, - 0 1px white, - 1px 0 white, - 0 -1px white; - pointer-events: none; -} - -.folder_desc.local_file:after { - content: "\f7c2"; - position: absolute; - bottom: 27px; - left: 34px; - color: rgb(81, 176, 240); - z-index: 5; - font-size: 21px; - font-family: "Font Awesome 5 Free"; - font-weight: 900; - text-shadow: - -1px 0 white, - 0 1px white, - 1px 0 white, - 0 -1px white; - pointer-events: none; -} - -.pennsieve_file_deleted { - color: rgba(0, 0, 0, 0.5); -} - -.local_file_deleted { - color: rgba(0, 0, 0, 0.5); -} - -.folder_desc.pennsieve_file_deleted:after { - content: "\f0c2"; - position: absolute; - bottom: 27px; - left: 34px; - color: rgb(185, 221, 245); - z-index: 5; - font-size: 21px; - font-family: "Font Awesome 5 Free"; - font-weight: 900; - text-shadow: - -1px 0 white, - 0 1px white, - 1px 0 white, - 0 -1px white; - pointer-events: none; -} - -.folder_desc.local_file_deleted:after { - content: "\f7c2"; - position: absolute; - bottom: 27px; - left: 34px; - color: rgb(185, 221, 245); - z-index: 5; - font-size: 21px; - font-family: "Font Awesome 5 Free"; - font-weight: 900; - text-shadow: - -1px 0 white, - 0 1px white, - 1px 0 white, - 0 -1px white; - pointer-events: none; -} - -.menu-toggle { - transition: transform 1s ease-in-out !important; -} - -.step-dot { - height: 12px; - width: 12px; - background-color: #bbb; - border-radius: 50%; - display: inline-block; - /* visibility: hidden; */ -} - -.step-dot.active { - box-shadow: 0 0 5px #3b5998; - background-color: var(--color-teal); -} - -#metadata_progress { - width: 100%; - height: 100%; - overflow: hidden; - margin: 0px auto; - position: relative; - /* background: url('http://www.csslab.cl/ejemplos/timelinr/latest/images/dot.gif') 3px top repeat-y; */ -} - -#metadata-content { - max-width: 100%; - height: auto; - overflow: hidden; - margin: 10px auto; - /* float:left */ - padding: 0; -} - -#metadata-content h1 { - font-size: 16px; - text-align: center; - padding-top: 30px; -} - -#metadata-content li { - list-style: none; - text-align: center; - display: none; - min-height: 260px; - max-width: 240px; - border: 1px dashed #3d3d3d !important; - margin: 20px auto; - border-radius: 5px; -} - -#metadata-content li i { - color: #c0c0c0; -} - -#metadata-content li p { - font-size: 23px; - margin: 0; -} - -#metadata-content li button { - width: 90px; - height: 25px; - background: #fff; - color: var(--color-light-green); - border: 1px solid var(--color-light-green); - border-radius: 3px; - box-shadow: 0 0 3px 0 var(--color-light-green); - margin: 0 auto; - cursor: pointer; -} - -#metadata-content li.selected { - list-style: none; - text-align: center; - display: block; -} - -.folder-upload-div { - list-style: none; - text-align: center; - width: 200px; - height: 210px; - border: 1px dashed #c0c0c0; - background-color: #fff; - font-size: 13px; - font-weight: 600; - border-radius: 5px; - padding: 5px 10px; - margin: 0 auto; - color: var(--color-teal); - opacity: 1; - position: relative; -} - -.folder-upload-div button { - width: 100px; - height: 25px; - background: #fff; - color: var(--color-light-green); - border: 1px solid var(--color-light-green); - border-radius: 3px; - box-shadow: 0 0 3px 0 var(--color-light-green); - margin: 0 auto; - cursor: pointer; -} - -.folder-upload-div p { - margin: 5px auto; - font-size: 16px; - opacity: 0.7; - color: #000; -} - -.progress-box { - float: left; - height: 25px; - width: 25px; - margin-bottom: 10px; - margin-right: 10px; - border: 1px solid transparent; - clear: both; - font-size: 13px; - border-radius: 3px; - color: #9e9e9e; - text-align: center; - background: #e0e0e0; -} - -.progress-box span { - color: #333333; -} - -.progress-box.checked { - content: "\2713"; - background: var(--color-light-green); - color: #fff; - text-align: center; - border-color: var(--color-light-green); -} - -.progress-box.checked span { - opacity: 1; - color: var(--color-light-green); -} - -.metadata-progress-box { - padding-top: 20px; - width: 100%; - border-bottom: 1px solid #e0e0e0; - display: flex; - flex-direction: row; - justify-content: space-between; -} - -.metadata-progress-box span { - color: #000; - font-weight: 600; - font-size: 13px; - opacity: 0.5; -} - -.div-display-details { - position: absolute; - width: 350px; - height: auto; - bottom: 70px; - right: 0; - bottom: 70px; - border-radius: 10px 0 0 10px; - border: 1px solid #f0f0f0; - background: #f5f5f5; - color: #000; - padding: 20px; - line-height: 1.5; - float: right; - transform: translateX(350px); - transition: transform 1.4s ease-in-out; - display: none; - grid-template-rows: auto; - text-align: center; - overflow-wrap: break-word; - z-index: 10; -} - -.div-display-details div { - max-width: 90%; - margin-right: 10px; - margin-left: 10px; - overflow-x: auto; -} - -.div-display-details.folders { - grid-template-rows: 50% 50%; -} - -.div-display-details p { - font-family: inherit; - margin-top: 25px; - margin-bottom: 5px; - font-size: 13px; -} - -.div-display-details textarea { - font-family: inherit; - max-height: 60px; - overflow-y: scroll; - resize: vertical; - width: 100%; - margin-top: 10px; -} - -.div-display-details.show { - transform: translateX(0); - display: grid; -} - -.button-display-details { - position: absolute; - top: 10px; - left: 10px; - width: 25px; - height: 25px; - opacity: 0.8; - background: var(--color-bg-plum); - color: #fff; - border-radius: 50%; - border: 1px solid var(--color-bg-plum); - cursor: pointer; - box-shadow: 0 0 3px 0 var(--color-bg-plum); -} - -#div-manifest-edit { - margin-top: 20px; - max-height: 70vh; - overflow-y: scroll; -} - -.sparc-logo { - margin: 5px; - position: absolute; - margin-left: 39px; - width: 146px; - padding-left: 6px; - bottom: 0; -} - -#items_container { - display: flex; - justify-content: center; - margin: 10px; -} - -#items_loading_container { - position: absolute; - top: 50%; - left: 50%; - z-index: 9999; - margin: 10px; - display: none; -} - -#item_load { - color: rgb(78, 166, 255); -} - -.loading-items-background { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: 9999; - background-color: darkgray; - opacity: 0.5; - display: flex; - justify-content: center; -} - -details > summary { - list-style-type: none; -} - -details > summary::-webkit-details-marker { - display: none; -} - -details > summary::before { - content: url("data:image/svg+xml,%3Csvg style='transform: scale(0.2);' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512'%3E%3C!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --%3E%3Cpath d='M416 288h-95.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H416c17.67 0 32-14.33 32-32S433.7 288 416 288zM544 32h-223.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H544c17.67 0 32-14.33 32-32S561.7 32 544 32zM352 416h-32c-17.67 0-32 14.33-32 32s14.33 32 32 32h32c17.67 0 31.1-14.33 31.1-32S369.7 416 352 416zM480 160h-159.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H480c17.67 0 32-14.33 32-32S497.7 160 480 160zM192.4 330.7L160 366.1V64.03C160 46.33 145.7 32 128 32S96 46.33 96 64.03v302L63.6 330.7c-6.312-6.883-14.94-10.38-23.61-10.38c-7.719 0-15.47 2.781-21.61 8.414c-13.03 11.95-13.9 32.22-1.969 45.27l87.1 96.09c12.12 13.26 35.06 13.26 47.19 0l87.1-96.09c11.94-13.05 11.06-33.31-1.969-45.27C224.6 316.8 204.4 317.7 192.4 330.7z'/%3E%3C/svg%3E"); -} - -details[open] > summary::before { - content: none; -} - -.info-container { - align-self: center; - width: 573px; - margin-top: 1rem; -} - -.info-container-wrapper { - position: relative; - max-width: 95%; - margin-top: 1rem; - margin: 0 auto; - font-size: smaller; - color: #666666; -} - -.info-summary { - margin: 0; - font-size: unset; - font-weight: unset; - position: relative; - display: block; - padding: 0.5em 1.5em; - line-height: 1.5; - text-align: left; - border: none; - color: inherit; - background-color: transparent; - transition: border-color 0.12s; - outline: none; - border-color: #f8f8f9; -} - -.info-summary:before { - top: 0; - transform-origin: bottom center; - transform: translateX(0.7em) rotate(-30deg) scale(0.5); - content: ""; - position: absolute; - left: 0; - width: 2px; - height: 50%; - background-color: hsl(0, 0%, 88%); - transition: transform 0.2s cubic-bezier(0.4, 0.1, 0, 1); -} - -.info-summary:after { - bottom: 0; - transform-origin: top center; - transform: translateX(0.7em) rotate(30deg) scale(0.5); -} - -.is-open .info-summary:before, -.is-open .info-summary:after { - transform: rotate(0deg); - transform: scale(0.7); -} - -.details-box { - display: none; - position: relative; - box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.1); - padding: 2em; - margin-top: 1rem; - margin-bottom: 2rem; - border-radius: 0.4rem; - background-color: #f8f8f9; - border-color: #f8f8f9; -} - -.is-open .details-box { - display: block; - animation: demo-box-fade-in 0.2s cubic-bezier(0, 0.2, 0.2, 0.96); -} - -.overview-column { - display: flex; - margin: 15px; - border: solid; - border-color: #f2f2f2; - height: 95% !important; - border-radius: 2rem; - align-items: center; - border-width: 1px !important; - justify-content: center; - flex-direction: column; - text-align: center; - padding: 1.5rem; - --tw-border-opacity: 1; - border-color: rgb(244 244 245 / var(--tw-border-opacity)); - --tw-shadow-color: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1); - --tw-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.getting-started { - width: 100%; - display: flex; - flex-direction: column; - align-items: center; -} - -.overview-card-layout { - display: grid; - color: black; - padding-left: 2rem; - padding-right: 2rem; - grid-template-columns: repeat(3, minmax(0, 1fr)); - width: 100%; - height: 60% !important; - max-width: 1000px; - place-self: center; -} - -.overview-lottie { - height: 100%; -} - -.getting-started-buttons { - display: flex; - justify-content: center; - height: 50% !important; - margin-top: 25px; -} - -.about-title { - font-size: 17px; - font-weight: 700; - color: var(--color-bg-plum) !important; - margin-bottom: 0; -} - -.about-container { - border-radius: 0.5rem; - margin-top: 7px; - display: flex; - flex-direction: column; - align-items: center; - width: 550px; - margin-bottom: 3rem; - align-self: center; -} - -.about-text { - color: dimgray !important; - text-align: justify; - font-size: 1rem !important; - font-weight: 500 !important; -} - -.tip-content { - text-align: justify; - color: #898989 !important; - font-size: 12px; - font-weight: 700; -} - -.sodaVideo-button { - display: flex; - background: white; - width: 14rem; - justify-content: center; - justify-self: center; - border-radius: 0.25rem; - align-items: center; - height: 3.5rem; - margin-right: 1rem; - color: #666666; - border-width: 1px; - border-color: var(--color-accent) !important; -} - -.sodaVideo-button:hover { - box-shadow: 0 0 6px #b0b0b0; -} - -.direct-to-doc-btn:hover { - box-shadow: 0 0 6px #b0b0b0; -} - -.getting-started-btn:hover { - box-shadow: 0 0 6px #b0b0b0; -} - -.direct-to-doc-btn { - color: #666666; - display: flex; - background: white; - font-weight: bold; - line-height: 1rem; - font-size: 1rem; - width: 18rem !important; - height: 3.5rem; - margin-right: 1rem; - justify-content: center; - align-items: center; - border-radius: 0.25rem; - border-width: 1px; - border-color: #b80d49; -} - -.getting-started-btn { - display: flex; - background: white; - width: 14rem; - justify-self: center; - border-radius: 0.25rem; - justify-content: center; - align-items: center; - height: 3.5rem; - color: #666666; - border-width: 1px; - border-color: var(--color-accent); - margin: 8px; - width: 250px; -} - -.getting-started-btn-txt { - margin: 0; - font-weight: bold !important; - margin-right: 2px; - font-weight: 500; - line-height: 1.5rem; -} - -.interface-btn-txt { - margin: 0; - font-weight: bold !important; - margin-right: 6px; - font-weight: 500; - line-height: 1rem; -} - -@media (min-height: 1200px) { - .getting-started-buttons { - margin-top: -17rem !important; - } -} - -@media (min-height: 900px) { - /* .getting-started-header { - margin-top: 8rem; - } - - .getting-started-buttons { - margin-top: -7rem; - } */ - - /* .getting-started-overview { - grid-template-rows: 12% 65% 10% 21%; - } */ - - .front-page_logo { - width: 80rem; - } -} - -.overview_lottie_header { - margin: 0; - font-weight: 600; - font-size: 16px; -} - -.heart-lottie { - --lottie-animation-container-width: 20px; - --lottie-animation-container-height: 20px; - --lottie-animation-container-background-color: transparent; - width: var(--lottie-animation-container-width); - height: var(--lottie-animation-container-height); - background: var(--lottie-animation-container-background-color); - overflow: hidden; - margin: 0 !important; -} - -.documentation_container { - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; - width: 100%; - height: 100%; - max-height: 1000px; -} - -.document_container { - overflow-y: auto; - justify-content: center; - width: 100%; - height: 100%; - display: flex; -} - -.doc_container { - padding-right: 1.25rem; - padding-top: 0.5rem; - justify-content: center; - align-items: center; - padding: 0.75rem; - flex-direction: column; - max-width: 1024px; - width: 100%; - height: 100%; - display: flex; -} - -.dc_con { - flex-direction: column; - width: 100%; - height: 100%; - display: flex; -} - -.doc_header { - font-weight: 700; - font-size: 1.875rem !important; - line-height: 2.25rem; - padding-bottom: 0.25rem; - margin: 0; -} - -.docu_divide { - margin-top: 1rem; - margin-bottom: 1rem; - height: 0; - color: inherit; - border-top-width: 1px; -} - -.document-content { - align-items: center; - flex-direction: column; - width: 100%; - height: 40%; - display: flex; - justify-content: center; -} - -.button_container_contact { - display: flex; - justify-content: center; - margin-bottom: 3rem; -} - -.docu-content-container { - padding-top: 1rem; - margin-bottom: 1rem; - display: flex; - flex-direction: column; - justify-content: center; -} - -.documentation-lottie_style { - width: 100%; - height: 100%; - overflow: hidden; -} - -.api_key-btn { - background: #fff !important; - color: #666666 !important; - display: inline !important; - margin-top: 1rem !important; - align-self: center !important; - width: 258px !important; - border: none !important; -} - -.api_key-btn:hover { - border: 1px solid #666666 !important; -} - -.view_doc_button { - transition-property: all; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; - border-width: 1px; - --tw-border-opacity: 1; - border-color: rgb(147 197 253 / var(--tw-border-opacity)); - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - border-radius: 0.25rem; - padding-left: 1.25rem; - padding-right: 1.25rem; - padding-top: 0.5rem; - padding-bottom: 0.5rem; - min-width: 130px; - font-size: 14px; - font-weight: 500; - --tw-text-opacity: 1; - color: rgb(17 24 39 / var(--tw-text-opacity)); - cursor: pointer; - -webkit-appearance: button; - background-color: transparent; - background-image: none; -} - -.document_text { - font-size: 1.3rem !important; - color: black !important; - font-weight: 500; - margin-top: 0 !important; -} - -.circular { - height: 100px; - width: 100px; - position: relative; - transform: scale(1); -} - -.circular .inner { - position: relative; - z-index: 6; - top: 110%; - left: 50%; - height: 80px; - width: 80px; - margin: -40px 0 0 -40px; - background: #f5f5f5; - border-radius: 100%; -} - -.circular .number { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - z-index: 10; - font-size: 18px; - font-weight: 500; - color: black; -} - -.circular .fix { - position: relative !important; - top: 60% !important; - z-index: 100 !important; /* left: 40% !important; */ - text-align: center; -} - -.circular .bar { - position: absolute; - height: 100%; - width: 100%; - background: #fff; - -webkit-border-radius: 100%; - clip: rect(0px, 100px, 100px, 50px); -} - -.circle .bar .progress { - position: absolute; - height: 100%; - width: 100%; - -webkit-border-radius: 100%; - clip: rect(0px, 50px, 100px, 0px); - background: var(--color-light-green); -} - -.circle .left .progress { - z-index: 1; - transition: transform 600ms ease; -} - -.circle .right { - transform: rotate(180deg); - transition: linear; - z-index: 3; -} - -.circle .right .progress { - transition: transform 600ms ease; -} - -#Question-getting-started-locally-destination { - text-align: -webkit-center; -} - -.notransition { - -webkit-transition: none !important; - -moz-transition: none !important; - -o-transition: none !important; - transition: none !important; -} - -.freeform-file-explorer { - border: 2px solid lightgray; - margin-top: 5px; - height: auto; - border-radius: 3px; -} - -.freeform-file-explorer { - border: 2px solid lightgray; - margin-top: 5px; - height: auto; - border-radius: 3px; -} - -.freeform-file-explorer-buttons { - display: flex; - margin-top: 0.5rem; - padding-left: 1rem; - padding-right: 1rem; - width: 100%; - border-bottom: 2px solid lightgray; -} - -#guided-pennsieve-copy-dataset-link { - background: var(--button-color); - border: none; - color: white; - height: 40px; - width: 45px; - margin-left: 2px; -} - -#guided-pennsieve-copy-dataset-link:hover { - background: #1c687e !important; -} - -#guided-pennsieve-dataset-link { - border-bottom: none !important; - width: 431px; - display: inline-flex; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; -} - -#guided-pennsieve-dataset-link:hover { - border-bottom: 1px solid !important; -} - -#other-dataset-information-container { - display: flex; - flex-direction: column; - align-self: center; -} +body { + margin: 0; + font-family: sans-serif; +} + +button:focus { + outline: none; +} + +/* SODA */ + +.wide-swal { + width: auto !important; + height: auto !important; + justify-content: space-between; + display: block; +} + +.checkbox-design { + -webkit-appearance: none; + margin: 0; + appearance: none; + background-color: #fff; + font: inherit; + color: currentColor; + width: 1.15em; + height: 1.15em; + border: 0.15em solid currentColor; + border-radius: 0.15em; + transform: translateY(-0.075em); + display: grid; + place-content: center; + align-self: center; + margin-right: 10px; + cursor: pointer; +} + +.checkbox-design::before { + content: ""; + width: 0.65em; + height: 0.65em; + transform: scale(0); + transition: 120ms transform ease-in-out; + background-color: var(--color-light-green); +} + +.checkbox-design:checked::before { + transform: scale(1); +} + +.skip-btn { + margin-right: 15px; + background-color: #fff; + border: solid 1px var(--color-light-green); + color: var(--color-light-green); + border-radius: 8px; +} + +.skip-btn:hover { + background-color: var(--color-light-green); + color: #fff; +} + +.replace-btn { + background-color: var(--color-bg-plum); + color: white; + border-radius: 8px; +} + +#selectAll { + display: flex; + justify-content: space-between; +} + +.update-file:before { + opacity: 0.5; +} + +.update-file:after { + content: "\f24d"; + position: absolute; + top: 42px; + right: 24px; + color: var(--color-bg-plum); + z-index: 5; + font-size: 21px; + font-family: "Font Awesome 5 Free"; + font-weight: 900; + text-shadow: + -1px 0 white, + 0 1px white, + 1px 0 white, + 0 -1px white; + pointer-events: none; +} + +.input-name { + color: black; + align-self: center; +} + +.selectAll-container { + margin-top: 5px; + margin-bottom: 0px; + margin-left: 38px; +} + +.selectAll-checkbox { + margin-left: 40px; + margin-right: 74px; +} + +.input-field-design { + margin-bottom: 1px; + margin-right: 10px; + margin-left: 10px; + align-self: center; + text-align: center; +} + +.jexcel_container { + margin-right: 20px; +} + +.checkbox-design:focus { + outline: none; +} + +.input-container { + display: flex; + justify-content: flex-end; + margin-top: 10px; + margin-bottom: 10px; + margin-right: 60px; + margin-left: 25px; + align-items: start; + border-radius: 8px; + background-color: #f7f7f7; +} + +.selectAll-text { + display: flex; + justify-content: space-between; + margin: 0; + margin: 10px; + margin-left: 38px; +} + +.checkbox-container { + display: flex; + justify-content: space-between; + margin-top: 10px; + margin-bottom: 10px; + margin-right: 60px; + margin-left: 25px; + border-radius: 8px; +} + +.checkbox-container:hover { + background-color: #f7f7f7; +} + +#container { + max-height: 300px; + overflow: overlay; + margin: 5px; +} + +.rename-btn { + margin-left: 15px; + background-color: var(--color-light-green); + color: white; + border-radius: 8px; +} + +.cancel-btn { + margin-left: 100px; + background-color: #757575; + color: white; + border-radius: 8px; +} + +.wide-swal-auto { + width: auto !important; + height: auto !important; + display: block; +} + +.swal-button-container { + display: flex; + justify-content: center; + overflow: visible; + margin-top: 5px; +} + +.caption { + max-height: 250px; + overflow-y: overlay; +} + +.rename-input { + outline: none !important; + border-width: 0 0 1px !important; + border-color: gray !important; + box-shadow: none !important; + border-radius: 0px !important; +} + +.rename-input:focus { + outline: none !important; + border-width: 0 0 2px !important; + border-color: #13716d !important; +} + +.rename-input::-webkit-input-placeholder { + color: rgb(139, 139, 139); +} + +.container-fluid { + width: 100%; + height: 85%; + padding-right: 10px; + padding-left: 0; + margin-right: auto; + margin-left: auto; + margin-top: 5px; +} + +.div-organize-items { + min-height: 428px; + padding-top: 0; + width: 100%; + float: left; + border: 1px solid #f0f0f0; + box-shadow: 0 0 2px #d5d5d5; +} + +.div-organize-items.full { + width: 100%; +} + +.button-grp { + display: inline-block; + margin-right: 30px; +} + +a { + border: none; +} + +.button-grp button { + border: 1px #dbdbdb solid; + border-radius: 5px; + font-size: 12px; + background-color: #f8f8f8; + outline: none; + color: #575757; + margin-right: 0px; + padding: 5px 10px; +} + +.button-grp button:disabled, +button[disabled] { + border: 1px solid #999999; + background-color: #cccccc; + color: #666666; +} + +.active-btn { + background-color: #6c6c6c !important; + border: 1px #6c6c6c solid !important; + color: white !important; +} + +button[data-id="bf_list_users"], +button[data-id="bf_list_roles_user"], +button[data-id="bf_list_teams"], +button[data-id="bf_list_roles_team"] { + border: 1px solid rgba(34, 36, 38, 0.15); + border-radius: 7px; + width: 90% !important; +} +button[data-id="guided-sparc-award-dropdown"], +button[data-id="bf_list_users_pi"], +button[data-id="guided_bf_list_users_pi"], +button[data-id="guided_bf_list_users_and_teams"] { + border: 1px solid rgba(34, 36, 38, 0.15); + border-radius: 7px; + height: 35px; +} + +#pi_bootstrap_select_div > .dropdown.bootstrap-select { + width: 550px; +} + +#guided_sparc_award_bootstrap_select_div > .dropdown.bootstrap-select, +#guided_pi_bootstrap_select_div > .dropdown.bootstrap-select, +#guided_permissions_select_div > .dropdown.bootstrap-select { + width: 100%; +} + +.sidebar { + background-color: var(--color-teal); + height: 100%; +} + +.sidebar_title { + color: #f3f3f3; + text-transform: uppercase; + padding: 20px 0px 0px 20px; + margin-top: 0px; + font-size: 11px; + font-weight: 900; + user-select: none; + -webkit-user-select: none; +} + +.sidebar_links { + list-style-type: none; + padding: 0; + margin: 0; + user-select: none; + -webkit-user-select: none; +} + +.active_link { + background-color: #252525; +} + +.window { + padding: 20px; + height: calc(100vh - 110px); + overflow: scroll; +} + +.menu { + background-color: #fff; + color: #333; + list-style: none; + position: absolute; + padding: 6px 0; + text-align: left; + border-radius: 5px; + cursor: pointer; + word-wrap: break-word; + margin-bottom: 0; + margin-top: 0; + margin-right: 4px; + z-index: 1000; + border: 1px solid rgba(0, 0, 0, 0.15); +} + +.menu.reg-folder { + width: 110px; + height: auto; +} + +.menu.reg-folder li { + padding: 3px 10px; + background-color: #fff; + font-size: 13px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, + "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; +} + +.menu.file { + width: 110px; + height: auto; +} + +.menu.file li { + padding: 3px 10px; + background-color: #fff; + color: black; + font-size: 13px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, + "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; +} + +.menu.file li:hover { + background-color: #f0f0f0; +} + +.menu.reg-folder li:hover { + background-color: #f0f0f0; +} + +.menu.high-level-folder li:hover { + background-color: #f0f0f0; +} + +.menu.high-level-folder.off { + display: none; + top: -200%; + left: -200%; +} + +.menu.high-level-folder { + width: 110px; + height: auto; +} + +.menu.high-level-folder li { + padding: 3px 10px; + background-color: #fff; + font-size: 13px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, + "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; +} + +.menu.reg-folder.off { + display: none; + top: -200%; + left: -200%; +} + +.menu.file.off { + display: none; + top: -210%; + left: -210%; + position: absolute; +} + +.menu.file li { + width: 108px; + background-color: #fff; +} + +.modal-content textarea { + font-size: 11px !important; +} + +.modal-body { + padding: 10px 10px; + font-size: 15px; +} + +.modal-title { + margin-top: 10px; + font-size: 17px; +} + +.modal-header { + font-size: 17px; + font-weight: bold; + height: 60px; + padding: 8px 10px !important; + text-align: center; + vertical-align: middle; +} + +.modal-footer { + padding: 10px 12px !important; +} + +.modal-footer button { + /* width: 30% !important; */ + padding: 4px 10px !important; + font-weight: 400 !important; + font-size: 14px !important; +} + +.dropdown-item { + font-size: 13px !important; + line-height: 2; + color: #404040; +} + +.hoverPath { + width: auto; + min-height: auto; + background-color: #f4f4f4; + color: #333; + border: 1px solid #aaa; + /* box-shadow: 2px 2px 2px #999; */ + border-radius: 3px; + position: fixed; + padding: 5px 5px; + font-size: 12px; + z-index: 5; + overflow: hidden; +} + +.hoverFullName { + max-width: auto; + min-height: auto; + background-color: #f4f4f4; + color: #333; + border: 1px solid #aaa; + border-radius: 3px; + position: absolute; + padding: 5px 5px; + font-size: 12px; + z-index: 1000; +} + +.single-item { + display: inline-block; + text-align: center; + width: 120px; + height: 100px; + position: relative !important; + margin-right: 5px; + margin-top: 5px; + padding: 10px 0px 10px 0px; +} + +.single-item.selected-item:hover { + border: #c0c0c0; + background-color: #d8d7d7; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.single-item.selected-item:focus { + border: #c0c0c0; + background-color: #eeeaea; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +@-o-keyframes fadeIt { + 0% { + background-color: #ffffff; + } + + 50% { + background-color: #85ceff; + } + + 100% { + background-color: #ffffff; + } +} + +@keyframes fadeIt { + 0% { + background-color: #ffffff; + } + + 50% { + background-color: #85ceff; + } + + 100% { + background-color: #ffffff; + } +} + +.backgroundAnimate { + background-image: none !important; + -o-animation: fadeIt 3s ease-in-out; + animation: fadeIt 3s ease-in-out; +} + +.ds-selected { + border: #c0c0c0; + background-color: #eeeaea; + /* transform: translateY(-6px); */ +} + +.single-item:active { + transform: all 3s; + -webkit-transform: all 3s; +} + +/*Pre publishing submission flow file viewer uses .single-item but allows a user to select a file UI element. + When the element is selected it adds styling. This sets it up to ignore the hover effect styling once selected. +*/ +.single-item:not(.pre-publishing-file-viewer-file-selected):hover { + border: #c0c0c0; + background-color: #f5f5f5; + transition: all 0.15s linear; + -webkit-transition: all 0.15s linear; +} + +.single-item:hover + #myspan { + display: block; +} + +.folder_desc { + text-align: center; + font-size: 13px; + width: 110px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + user-select: none; + -webkit-user-select: none; + padding: 0px 4px 0px 4px; + /* word-wrap: break-word; */ + line-height: 1.5; + margin-right: 5px; + margin-left: 5px; + color: black; + pointer-events: none; +} + +.blue { + color: rgb(255, 165, 0, 0.8); +} + +.switch { + position: relative; + display: inline-block; + width: 45px; + height: 20px; + padding: 5px; +} + +.btn.btn-success:hover { + border: 5px solid #3b5998; + box-shadow: 0 0 5px #3b5998; + transition: all 0.5s ease; +} + +.button-back { + color: #666666; + background-color: #fff; + border: 1px solid #666666; + border-radius: 5px; + height: 35px; + width: 40px; + font-size: 14px; + background-position: center; + transition: background 0.8s; +} + +.button-back:hover { + box-shadow: 0 0 3px 0px #666666; +} + +.button-back:active { + transform: translateY(-4px); +} + +.button-back:focus { + outline: none; +} + +.myButton { + margin-right: 3px; + font-size: 13px; + font-weight: 600; + color: #fff; + background-color: #bf3062; + border: 1px solid transparent; + border-radius: 5px; + cursor: pointer; + height: 35px; + width: 110px; + box-shadow: 0 0 2px #999; + background-position: center; + transition: background 0.8s; +} + +.myButton.second { + background-color: #bf3062; + color: #fff; +} + +.myButton:hover { + background: var(--color-teal) radial-gradient(circle, transparent 1%, var(--color-teal) 1%) center/15000%; + color: white; + box-shadow: 0 0 5px #3b5998; + transition: all 0.5s ease; +} + +.myButton:active { + background-color: #292d3e; + background-size: 100%; + transition: background 0s; + transform: translateY(-3px); +} + +.myButton:focus { + outline: none; +} + +.myButton.second:hover { + background: var(--color-teal) radial-gradient(circle, transparent 1%, var(--color-teal) 1%) center/15000%; + color: #fff; + box-shadow: 0 0 5px #3b5998; + transition: all 0.5s ease; +} + +.confirmButton { + left: 89%; + top: 93%; + position: absolute; + font-family: "Montserrat", sans-serif; + width: 190px; + font-size: 14px; + font-weight: 600; + color: var(--color-light-green); + background-color: #fff; + border: 2px solid var(--color-light-green); + margin: 0 0; + height: 35px; + cursor: pointer; + border-radius: 5px; + background: linear-gradient(to left, #fff 50%, var(--color-light-green) 50%) right; + background-size: 200%; + transition: 0.5s ease-out; +} + +.confirmButton:hover { + color: #fff; + background-position: left; +} + +.confirmButton:active { + background-size: 100%; + transform: translateY(-3px); +} + +.confirmButton:focus { + outline: none; +} + +.div-organize-generate-dataset { + text-align: center; + min-width: 450px; + margin-top: 20px; + display: flex; + flex-direction: column; + justify-content: center; +} + +.div-organize-generate-dataset.metadata { + justify-content: space-around; + flex-wrap: wrap; + /* margin-top: 50px !important; */ + margin: 0 auto; +} + +.div-organize-generate-dataset.metadata.hide { + display: none; +} + +.div-organize-generate-dataset.metadata button { + width: 150px; + height: 155px; +} + +.div-organize-generate-dataset.metadata i { + color: var(--tagify-dd-color-primary) !important; + font-size: 50px !important; +} + +.div-organize-generate-dataset.metadata p { + /* color: orange; */ + font-size: 13px; + margin-top: 20px !important; +} + +.content-header.metadata-step4 { + font-weight: 600; + color: #000; +} + +.div-file-import.pennsieve { + display: none; +} + +.flex-row-container.code-metadata { + display: none; +} + +.div-individual-metadata { + display: none; +} + +.div-individual-metadata.show { + display: flex; + flex-direction: column; + margin: 30px auto; +} + +.button-generate-dataset { + width: 200px; + height: 200px; + border: none; + background-color: #fff; + font-size: 13px; + font-weight: 600; + border-radius: 5px; + padding-top: 0; + padding-bottom: 5px; + padding-right: 20px; + padding-left: 20px; + margin-right: 30px; + color: var(--color-teal); + opacity: 1; + position: relative; + box-shadow: 0px 0px 10px #d5d5d5; +} + +.button-generate-dataset:hover { + outline: none; + /* border: 1px solid var(--color-light-green); */ + box-shadow: 0px 0px 10px 0px var(--color-light-green); + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.button-generate-dataset:active, +.button-generate-dataset:focus { + outline: none; + border: 1px solid var(--color-light-green); + box-shadow: 0px 0px 3px 0px var(--color-light-green); + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.button-generate-dataset p { + color: #000; + font-weight: 500; + font-size: 14px; + line-height: 1.5; +} + +.button-generate-dataset svg { + margin: 0 auto; +} + +.button-generate-dataset .bi.bi-file-earmark-plus { + display: block; +} + +.button-generate-dataset .bi.bi-check2 { + display: none; +} + +.drag-drop-container-instructions { + display: flex; + flex-direction: column; + align-items: center; + width: 100%; + padding: 25px; + opacity: 0.55; +} + +.file-templates-button { + width: 160px; + height: 160px; + border: none; + background-color: #fff; + font-size: 13px; + font-weight: 600; + border-radius: 5px; + padding-top: 5px; + padding-bottom: 5px; + padding-right: 20px; + padding-left: 20px; + margin-right: 30px; + color: var(--color-teal); + opacity: 1; + position: relative; + box-shadow: 0px 0px 10px #d5d5d5; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.file-templates-button svg { + margin: 0 auto; + fill: var(--tagify-dd-color-primary); + width: 45px; + height: 45px; + pointer-events: none; +} + +.file-templates-button:hover { + outline: none; + box-shadow: 0px 0px 10px 0px var(--color-light-green); + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.file-templates-button:active { + border: 1px solid var(--color-light-green); + box-shadow: 0px 0px 3px 0px var(--color-light-green); + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.metadata-button.button-generate-dataset.code-metadata { + display: none; +} + +.metadata-button.button-generate-dataset.done { + border: 1px solid var(--color-light-green); + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.metadata-button.button-generate-dataset.done p { + color: var(--color-light-green); + font-weight: 600; +} + +.metadata-button.button-generate-dataset.done .bi.bi-file-earmark-plus { + display: none; +} + +.metadata-button.button-generate-dataset.done .bi.bi-check2 { + color: var(--color-light-green); + display: block !important; + margin: 0 auto; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.form-group.row { + margin-bottom: 10px; + margin-left: 5px; +} + +.folder_desc.pennsieve_folder:after { + content: "\f0c2"; + position: absolute; + bottom: 34px; + left: 18px; + color: rgb(81, 176, 240); + z-index: 5; + font-size: 21px; + font-family: "Font Awesome 5 Free"; + font-weight: 900; + text-shadow: + -1px 0 white, + 0 1px white, + 1px 0 white, + 0 -1px white; + pointer-events: none; +} + +.pennsieve_folder_deleted { + color: rgba(0, 0, 0, 0.5); +} + +.folder_desc.local_folder:after { + content: "\f7c2"; + position: absolute; + bottom: 34px; + left: 18px; + color: rgb(81, 176, 240); + z-index: 5; + font-size: 21px; + font-family: "Font Awesome 5 Free"; + font-weight: 900; + text-shadow: + -1px 0 white, + 0 1px white, + 1px 0 white, + 0 -1px white; + pointer-events: none; +} + +.local_folder_deleted { + color: rgba(0, 0, 0, 0.5); +} + +.folder_desc.pennsieve_folder_deleted:after { + content: "\f0c2"; + position: absolute; + bottom: 34px; + left: 18px; + color: rgb(185, 221, 245); + z-index: 5; + font-size: 21px; + font-family: "Font Awesome 5 Free"; + font-weight: 900; + text-shadow: + -1px 0 white, + 0 1px white, + 1px 0 white, + 0 -1px white; + pointer-events: none; +} + +.folder_desc.local_folder_deleted:after { + content: "\f7c2"; + position: absolute; + bottom: 34px; + left: 18px; + color: rgb(185, 221, 245); + z-index: 5; + font-size: 21px; + font-family: "Font Awesome 5 Free"; + font-weight: 900; + text-shadow: + -1px 0 white, + 0 1px white, + 1px 0 white, + 0 -1px white; + pointer-events: none; +} + +.folder_desc.pennsieve_file:after { + content: "\f0c2"; + position: absolute; + bottom: 27px; + left: 34px; + color: rgb(81, 176, 240); + z-index: 5; + font-size: 21px; + font-family: "Font Awesome 5 Free"; + font-weight: 900; + text-shadow: + -1px 0 white, + 0 1px white, + 1px 0 white, + 0 -1px white; + pointer-events: none; +} + +.folder_desc.local_file:after { + content: "\f7c2"; + position: absolute; + bottom: 27px; + left: 34px; + color: rgb(81, 176, 240); + z-index: 5; + font-size: 21px; + font-family: "Font Awesome 5 Free"; + font-weight: 900; + text-shadow: + -1px 0 white, + 0 1px white, + 1px 0 white, + 0 -1px white; + pointer-events: none; +} + +.pennsieve_file_deleted { + color: rgba(0, 0, 0, 0.5); +} + +.local_file_deleted { + color: rgba(0, 0, 0, 0.5); +} + +.folder_desc.pennsieve_file_deleted:after { + content: "\f0c2"; + position: absolute; + bottom: 27px; + left: 34px; + color: rgb(185, 221, 245); + z-index: 5; + font-size: 21px; + font-family: "Font Awesome 5 Free"; + font-weight: 900; + text-shadow: + -1px 0 white, + 0 1px white, + 1px 0 white, + 0 -1px white; + pointer-events: none; +} + +.folder_desc.local_file_deleted:after { + content: "\f7c2"; + position: absolute; + bottom: 27px; + left: 34px; + color: rgb(185, 221, 245); + z-index: 5; + font-size: 21px; + font-family: "Font Awesome 5 Free"; + font-weight: 900; + text-shadow: + -1px 0 white, + 0 1px white, + 1px 0 white, + 0 -1px white; + pointer-events: none; +} + +.menu-toggle { + transition: transform 1s ease-in-out !important; +} + +.step-dot { + height: 12px; + width: 12px; + background-color: #bbb; + border-radius: 50%; + display: inline-block; + /* visibility: hidden; */ +} + +.step-dot.active { + box-shadow: 0 0 5px #3b5998; + background-color: var(--color-teal); +} + +#metadata_progress { + width: 100%; + height: 100%; + overflow: hidden; + margin: 0px auto; + position: relative; + /* background: url('http://www.csslab.cl/ejemplos/timelinr/latest/images/dot.gif') 3px top repeat-y; */ +} + +#metadata-content { + max-width: 100%; + height: auto; + overflow: hidden; + margin: 10px auto; + /* float:left */ + padding: 0; +} + +#metadata-content h1 { + font-size: 16px; + text-align: center; + padding-top: 30px; +} + +#metadata-content li { + list-style: none; + text-align: center; + display: none; + min-height: 260px; + max-width: 240px; + border: 1px dashed #3d3d3d !important; + margin: 20px auto; + border-radius: 5px; +} + +#metadata-content li i { + color: #c0c0c0; +} + +#metadata-content li p { + font-size: 23px; + margin: 0; +} + +#metadata-content li button { + width: 90px; + height: 25px; + background: #fff; + color: var(--color-light-green); + border: 1px solid var(--color-light-green); + border-radius: 3px; + box-shadow: 0 0 3px 0 var(--color-light-green); + margin: 0 auto; + cursor: pointer; +} + +#metadata-content li.selected { + list-style: none; + text-align: center; + display: block; +} + +.folder-upload-div { + list-style: none; + text-align: center; + width: 200px; + height: 210px; + border: 1px dashed #c0c0c0; + background-color: #fff; + font-size: 13px; + font-weight: 600; + border-radius: 5px; + padding: 5px 10px; + margin: 0 auto; + color: var(--color-teal); + opacity: 1; + position: relative; +} + +.folder-upload-div button { + width: 100px; + height: 25px; + background: #fff; + color: var(--color-light-green); + border: 1px solid var(--color-light-green); + border-radius: 3px; + box-shadow: 0 0 3px 0 var(--color-light-green); + margin: 0 auto; + cursor: pointer; +} + +.folder-upload-div p { + margin: 5px auto; + font-size: 16px; + opacity: 0.7; + color: #000; +} + +.progress-box { + float: left; + height: 25px; + width: 25px; + margin-bottom: 10px; + margin-right: 10px; + border: 1px solid transparent; + clear: both; + font-size: 13px; + border-radius: 3px; + color: #9e9e9e; + text-align: center; + background: #e0e0e0; +} + +.progress-box span { + color: #333333; +} + +.progress-box.checked { + content: "\2713"; + background: var(--color-light-green); + color: #fff; + text-align: center; + border-color: var(--color-light-green); +} + +.progress-box.checked span { + opacity: 1; + color: var(--color-light-green); +} + +.metadata-progress-box { + padding-top: 20px; + width: 100%; + border-bottom: 1px solid #e0e0e0; + display: flex; + flex-direction: row; + justify-content: space-between; +} + +.metadata-progress-box span { + color: #000; + font-weight: 600; + font-size: 13px; + opacity: 0.5; +} + +.div-display-details { + position: absolute; + width: 350px; + height: auto; + bottom: 70px; + right: 0; + bottom: 70px; + border-radius: 10px 0 0 10px; + border: 1px solid #f0f0f0; + background: #f5f5f5; + color: #000; + padding: 20px; + line-height: 1.5; + float: right; + transform: translateX(350px); + transition: transform 1.4s ease-in-out; + display: none; + grid-template-rows: auto; + text-align: center; + overflow-wrap: break-word; + z-index: 10; +} + +.div-display-details div { + max-width: 90%; + margin-right: 10px; + margin-left: 10px; + overflow-x: auto; +} + +.div-display-details.folders { + grid-template-rows: 50% 50%; +} + +.div-display-details p { + font-family: inherit; + margin-top: 25px; + margin-bottom: 5px; + font-size: 13px; +} + +.div-display-details textarea { + font-family: inherit; + max-height: 60px; + overflow-y: scroll; + resize: vertical; + width: 100%; + margin-top: 10px; +} + +.div-display-details.show { + transform: translateX(0); + display: grid; +} + +.button-display-details { + position: absolute; + top: 10px; + left: 10px; + width: 25px; + height: 25px; + opacity: 0.8; + background: var(--color-bg-plum); + color: #fff; + border-radius: 50%; + border: 1px solid var(--color-bg-plum); + cursor: pointer; + box-shadow: 0 0 3px 0 var(--color-bg-plum); +} + +#div-manifest-edit { + margin-top: 20px; + max-height: 70vh; + overflow-y: scroll; +} + +.sparc-logo { + margin: 5px; + position: absolute; + margin-left: 39px; + width: 146px; + padding-left: 6px; + bottom: 0; +} + +#items_container { + display: flex; + justify-content: center; + margin: 10px; +} + +#items_loading_container { + position: absolute; + top: 50%; + left: 50%; + z-index: 9999; + margin: 10px; + display: none; +} + +#item_load { + color: rgb(78, 166, 255); +} + +.loading-items-background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 9999; + background-color: darkgray; + opacity: 0.5; + display: flex; + justify-content: center; +} + +details > summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details > summary::before { + content: url("data:image/svg+xml,%3Csvg style='transform: scale(0.2);' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512'%3E%3C!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --%3E%3Cpath d='M416 288h-95.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H416c17.67 0 32-14.33 32-32S433.7 288 416 288zM544 32h-223.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H544c17.67 0 32-14.33 32-32S561.7 32 544 32zM352 416h-32c-17.67 0-32 14.33-32 32s14.33 32 32 32h32c17.67 0 31.1-14.33 31.1-32S369.7 416 352 416zM480 160h-159.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H480c17.67 0 32-14.33 32-32S497.7 160 480 160zM192.4 330.7L160 366.1V64.03C160 46.33 145.7 32 128 32S96 46.33 96 64.03v302L63.6 330.7c-6.312-6.883-14.94-10.38-23.61-10.38c-7.719 0-15.47 2.781-21.61 8.414c-13.03 11.95-13.9 32.22-1.969 45.27l87.1 96.09c12.12 13.26 35.06 13.26 47.19 0l87.1-96.09c11.94-13.05 11.06-33.31-1.969-45.27C224.6 316.8 204.4 317.7 192.4 330.7z'/%3E%3C/svg%3E"); +} + +details[open] > summary::before { + content: none; +} + +.info-container { + align-self: center; + width: 573px; + margin-top: 1rem; +} + +.info-container-wrapper { + position: relative; + max-width: 95%; + margin-top: 1rem; + margin: 0 auto; + font-size: smaller; + color: #666666; +} + +.info-summary { + margin: 0; + font-size: unset; + font-weight: unset; + position: relative; + display: block; + padding: 0.5em 1.5em; + line-height: 1.5; + text-align: left; + border: none; + color: inherit; + background-color: transparent; + transition: border-color 0.12s; + outline: none; + border-color: #f8f8f9; +} + +.info-summary:before { + top: 0; + transform-origin: bottom center; + transform: translateX(0.7em) rotate(-30deg) scale(0.5); + content: ""; + position: absolute; + left: 0; + width: 2px; + height: 50%; + background-color: hsl(0, 0%, 88%); + transition: transform 0.2s cubic-bezier(0.4, 0.1, 0, 1); +} + +.info-summary:after { + bottom: 0; + transform-origin: top center; + transform: translateX(0.7em) rotate(30deg) scale(0.5); +} + +.is-open .info-summary:before, +.is-open .info-summary:after { + transform: rotate(0deg); + transform: scale(0.7); +} + +.details-box { + display: none; + position: relative; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.1); + padding: 2em; + margin-top: 1rem; + margin-bottom: 2rem; + border-radius: 0.4rem; + background-color: #f8f8f9; + border-color: #f8f8f9; +} + +.is-open .details-box { + display: block; + animation: demo-box-fade-in 0.2s cubic-bezier(0, 0.2, 0.2, 0.96); +} + +.overview-column { + display: flex; + margin: 15px; + border: solid; + border-color: #f2f2f2; + height: 95% !important; + border-radius: 2rem; + align-items: center; + border-width: 1px !important; + justify-content: center; + flex-direction: column; + text-align: center; + padding: 1.5rem; + --tw-border-opacity: 1; + border-color: rgb(244 244 245 / var(--tw-border-opacity)); + --tw-shadow-color: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1); + --tw-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.getting-started { + width: 100%; + display: flex; + flex-direction: column; + align-items: center; +} + +.overview-card-layout { + display: grid; + color: black; + padding-left: 2rem; + padding-right: 2rem; + grid-template-columns: repeat(3, minmax(0, 1fr)); + width: 100%; + height: 60% !important; + max-width: 1000px; + place-self: center; +} + +.overview-lottie { + height: 100%; +} + +.getting-started-buttons { + display: flex; + justify-content: center; + height: 50% !important; + margin-top: 25px; +} + +.about-title { + font-size: 17px; + font-weight: 700; + color: var(--color-bg-plum) !important; + margin-bottom: 0; +} + +.about-container { + border-radius: 0.5rem; + margin-top: 7px; + display: flex; + flex-direction: column; + align-items: center; + width: 550px; + margin-bottom: 3rem; + align-self: center; +} + +.about-text { + color: dimgray !important; + text-align: justify; + font-size: 1rem !important; + font-weight: 500 !important; +} + +.tip-content { + text-align: justify; + color: #898989 !important; + font-size: 12px; + font-weight: 700; +} + +.sodaVideo-button { + display: flex; + background: white; + width: 14rem; + justify-content: center; + justify-self: center; + border-radius: 0.25rem; + align-items: center; + height: 3.5rem; + margin-right: 1rem; + color: #666666; + border-width: 1px; + border-color: var(--color-accent) !important; +} + +.sodaVideo-button:hover { + box-shadow: 0 0 6px #b0b0b0; +} + +.direct-to-doc-btn:hover { + box-shadow: 0 0 6px #b0b0b0; +} + +.getting-started-btn:hover { + box-shadow: 0 0 6px #b0b0b0; +} + +.direct-to-doc-btn { + color: #666666; + display: flex; + background: white; + font-weight: bold; + line-height: 1rem; + font-size: 1rem; + width: 18rem !important; + height: 3.5rem; + margin-right: 1rem; + justify-content: center; + align-items: center; + border-radius: 0.25rem; + border-width: 1px; + border-color: #b80d49; +} + +.getting-started-btn { + display: flex; + background: white; + width: 14rem; + justify-self: center; + border-radius: 0.25rem; + justify-content: center; + align-items: center; + height: 3.5rem; + color: #666666; + border-width: 1px; + border-color: var(--color-accent); + margin: 8px; + width: 250px; +} + +.getting-started-btn-txt { + margin: 0; + font-weight: bold !important; + margin-right: 2px; + font-weight: 500; + line-height: 1.5rem; +} + +.interface-btn-txt { + margin: 0; + font-weight: bold !important; + margin-right: 6px; + font-weight: 500; + line-height: 1rem; +} + +@media (min-height: 1200px) { + .getting-started-buttons { + margin-top: -17rem !important; + } +} + +@media (min-height: 900px) { + /* .getting-started-header { + margin-top: 8rem; + } + + .getting-started-buttons { + margin-top: -7rem; + } */ + + /* .getting-started-overview { + grid-template-rows: 12% 65% 10% 21%; + } */ + + .front-page_logo { + width: 80rem; + } +} + +.overview_lottie_header { + margin: 0; + font-weight: 600; + font-size: 16px; +} + +.heart-lottie { + --lottie-animation-container-width: 20px; + --lottie-animation-container-height: 20px; + --lottie-animation-container-background-color: transparent; + width: var(--lottie-animation-container-width); + height: var(--lottie-animation-container-height); + background: var(--lottie-animation-container-background-color); + overflow: hidden; + margin: 0 !important; +} + +.documentation_container { + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + width: 100%; + height: 100%; + max-height: 1000px; +} + +.document_container { + overflow-y: auto; + justify-content: center; + width: 100%; + height: 100%; + display: flex; +} + +.doc_container { + padding-right: 1.25rem; + padding-top: 0.5rem; + justify-content: center; + align-items: center; + padding: 0.75rem; + flex-direction: column; + max-width: 1024px; + width: 100%; + height: 100%; + display: flex; +} + +.dc_con { + flex-direction: column; + width: 100%; + height: 100%; + display: flex; +} + +.doc_header { + font-weight: 700; + font-size: 1.875rem !important; + line-height: 2.25rem; + padding-bottom: 0.25rem; + margin: 0; +} + +.docu_divide { + margin-top: 1rem; + margin-bottom: 1rem; + height: 0; + color: inherit; + border-top-width: 1px; +} + +.document-content { + align-items: center; + flex-direction: column; + width: 100%; + height: 40%; + display: flex; + justify-content: center; +} + +.button_container_contact { + display: flex; + justify-content: center; + margin-bottom: 3rem; +} + +.docu-content-container { + padding-top: 1rem; + margin-bottom: 1rem; + display: flex; + flex-direction: column; + justify-content: center; +} + +.documentation-lottie_style { + width: 100%; + height: 100%; + overflow: hidden; +} + +.api_key-btn { + background: #fff !important; + color: #666666 !important; + display: inline !important; + margin-top: 1rem !important; + align-self: center !important; + width: 258px !important; + border: none !important; +} + +.api_key-btn:hover { + border: 1px solid #666666 !important; +} + +.view_doc_button { + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(147 197 253 / var(--tw-border-opacity)); + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + border-radius: 0.25rem; + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + min-width: 130px; + font-size: 14px; + font-weight: 500; + --tw-text-opacity: 1; + color: rgb(17 24 39 / var(--tw-text-opacity)); + cursor: pointer; + -webkit-appearance: button; + background-color: transparent; + background-image: none; +} + +.document_text { + font-size: 1.3rem !important; + color: black !important; + font-weight: 500; + margin-top: 0 !important; +} + +.circular { + height: 100px; + width: 100px; + position: relative; + transform: scale(1); +} + +.circular .inner { + position: relative; + z-index: 6; + top: 110%; + left: 50%; + height: 80px; + width: 80px; + margin: -40px 0 0 -40px; + background: #f5f5f5; + border-radius: 100%; +} + +.circular .number { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + z-index: 10; + font-size: 18px; + font-weight: 500; + color: black; +} + +.circular .fix { + position: relative !important; + top: 60% !important; + z-index: 100 !important; /* left: 40% !important; */ + text-align: center; +} + +.circular .bar { + position: absolute; + height: 100%; + width: 100%; + background: #fff; + -webkit-border-radius: 100%; + clip: rect(0px, 100px, 100px, 50px); +} + +.circle .bar .progress { + position: absolute; + height: 100%; + width: 100%; + -webkit-border-radius: 100%; + clip: rect(0px, 50px, 100px, 0px); + background: var(--color-light-green); +} + +.circle .left .progress { + z-index: 1; + transition: transform 600ms ease; +} + +.circle .right { + transform: rotate(180deg); + transition: linear; + z-index: 3; +} + +.circle .right .progress { + transition: transform 600ms ease; +} + +#Question-getting-started-locally-destination { + text-align: -webkit-center; +} + +.notransition { + -webkit-transition: none !important; + -moz-transition: none !important; + -o-transition: none !important; + transition: none !important; +} + +.freeform-file-explorer { + border: 2px solid lightgray; + margin-top: 5px; + height: auto; + border-radius: 3px; +} + +.freeform-file-explorer { + border: 2px solid lightgray; + margin-top: 5px; + height: auto; + border-radius: 3px; +} + +.freeform-file-explorer-buttons { + display: flex; + margin-top: 0.5rem; + padding-left: 1rem; + padding-right: 1rem; + width: 100%; + border-bottom: 2px solid lightgray; +} + +#guided-pennsieve-copy-dataset-link { + background: var(--button-color); + border: none; + color: white; + height: 40px; + width: 45px; + margin-left: 2px; +} + +#guided-pennsieve-copy-dataset-link:hover { + background: #1c687e !important; +} + +#guided-pennsieve-dataset-link { + border-bottom: none !important; + width: 431px; + display: inline-flex; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +#guided-pennsieve-dataset-link:hover { + border-bottom: 1px solid !important; +} + +#other-dataset-information-container { + display: flex; + flex-direction: column; + align-self: center; +} diff --git a/src/electron/renderer/assets/css/main_tabs.css b/src/electron/renderer/assets/css/main_tabs.css index ec86a8fe4..748c5a716 100755 --- a/src/electron/renderer/assets/css/main_tabs.css +++ b/src/electron/renderer/assets/css/main_tabs.css @@ -1,535 +1,535 @@ -@import url("https://netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.css"); -@import url("https://fonts.googleapis.com/css?family=Open+Sans:400,600,700"); - -.top-menu { - margin-left: 25px; -} -.tab-input { - display: none; -} - -.tab-label { - display: inline-block; - margin: 0 0 -1px; - width: 24%; - min-width: 175px; - font-weight: 600; - font-size: 14px; - padding: 10px 9px; - text-align: center; - color: #999; - border: 1px solid transparent; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.inside { - pointer-events: none; -} - -.tab-label:before { - font-family: fontawesome; - font-weight: normal; - margin-right: 10px; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.tab-label:hover { - cursor: pointer; - background-color: rgb(243, 243, 243); - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.tab-input:checked + .tab-label { - color: #222; - border-bottom: 5px solid #b80d49; - margin-bottom: -5px; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -#tab_info_text { - color: #4d4a4a; - font-family: "Lato", sans-serif; - font-weight: 400; - font-size: 14px; - padding-top: 20px; - padding-bottom: 13px; - border-bottom: 1px solid var(--color-border); - border-top: 1px solid #ddd; - margin-right: 30px; - text-align: center; - margin-left: 25px; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.tab-info-p { - color: rgb(77, 74, 74); - font-family: "Lato", sans-serif; - font-weight: 400; - font-size: 14px; - padding-top: 20px; - padding-bottom: 13px; - border-bottom: 1px solid var(--color-border); - margin-bottom: 30px; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.section-header > div { - margin-left: 15px; - margin-right: 15px; -} - -.section-header > div > svg { - margin-right: 25px; -} - -.main-tabs-section { - /* display: none; */ - position: absolute; - top: 100px; - left: 0; - right: 0; - bottom: 0; - padding-top: 40px; - overflow-x: hidden; - overflow-y: auto; - margin-top: 1px; - /* margin-left: -10px; */ -} - -.hide { - pointer-events: none; - visibility: hidden; - opacity: 0; - transform: translateX(-20px); - transition: - visibility 0s 0.12s linear, - opacity 0.12s ease-in, - transform 0.12s ease-in-out; -} - -.show { - pointer-events: auto; - visibility: visible; - opacity: 1; - z-index: 1000; - transform: translateX(0); - transition: - visibility 0s 0s linear, - opacity 0.36s ease-out, - transform 0.36s ease-out; -} - -.flex-main-container { - margin: auto; - overflow: auto; -} - -/* #prepare_metadata_main_container, */ -/* #prepare_dataset_main_container { - transform: translate(-50%, -50%); - position: absolute; - top: 50%; - left: 50%; -} */ - -.flex-row-container { - margin: auto; - padding-bottom: 35px; - display: flex; - justify-content: center; -} - -.flex-content-container { - display: inline-block; - width: max-content; - margin-left: 20px; - margin-right: 20px; -} - -.content-header { - width: 100%; - text-align: center; - white-space: nowrap; - padding-bottom: 3px; -} - -.disabled-content-button { - width: 150px; - height: 150px; - border: none; - background-color: #fff; - font-size: 13px; - font-weight: 600; - border-radius: 5px; - padding-top: 5px; - padding-bottom: 5px; - padding-right: 20px; - padding-left: 20px; - margin-right: 10px; - margin-left: 10px; - color: var(--color-teal); - opacity: 1; - position: relative; - box-shadow: 0px 0px 10px #d5d5d5; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.disabled-content-button h2 { - color: #4d4a4a; - font-weight: 400; - font-size: 14px; - bottom: -1em; - font-family: "Raleway", sans-serif; - pointer-events: none; - text-align: center; - margin-top: 1em; -} - -.disabled-generate-button { - background: #f6f6f6; - margin: 5px; - width: 120px; - height: 40px; - font-size: 15px; - border: none !important; - border-radius: 8px; - font-weight: 600; - position: relative; - overflow: hidden; -} - -.disabled-animated-div { - padding-top: 10px; - background: #f6f6f6; - color: #4d4a4a; - width: inherit; - height: inherit; - border-radius: 8px; - overflow: hidden; -} - -#returnButton { - margin-left: 34px; - border-radius: 5px; - margin-top: 3px; - background: var(--color-teal); - color: #fff; - height: 30px; -} - -.content-button { - width: 150px; - height: 150px; - border: none; - background-color: #fff; - font-size: 13px; - font-weight: 600; - border-radius: 5px; - padding-top: 5px; - padding-bottom: 5px; - padding-right: 20px; - padding-left: 20px; - margin-right: 10px; - margin-left: 10px; - color: var(--color-teal); - opacity: 1; - position: relative; - box-shadow: 0px 0px 10px #d5d5d5; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.content-button p { - color: #222c3c; - font-size: 14px; - margin-top: 25px; - font-family: "Raleway", sans-serif; - pointer-events: none; -} - -.content-button:hover { - outline: none; - box-shadow: 0px 0px 10px 0px var(--color-light-green); - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.content-button:active { - border: 1px solid var(--color-light-green); - box-shadow: 0px 0px 3px 0px var(--color-light-green); - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.content-button h2, -.tile-button h2 { - color: #4d4a4a; - font-weight: 400; - font-size: 14px; - bottom: -1em; - font-family: "Raleway", sans-serif; - pointer-events: none; - text-align: center; - margin-top: 1em; -} - -.footer-div { - border-top: 1px solid #f0f0f0; - padding: 15px 10px 10px 10px; - margin-bottom: 10px; - height: 50px; - display: flex; - flex-direction: row; - justify-content: space-between; - width: 95%; - bottom: 0px; - background-color: white; - position: absolute; -} - -.transition-btn i { - pointer-events: none; -} - -.content-button svg { - margin: 0 auto; - pointer-events: none; -} - -.header-container { - padding-bottom: 20px; -} - -.button-container { - display: flex; - justify-content: center; -} - -.main-tabs { - display: none; -} - -.main-tabs.show { - display: flex; - flex-direction: column; -} - -.dataset-status-container { - display: block; - position: relative; -} - -.dataset-status-container ul { - list-style: none; -} - -.dataset-status-container ul li { - color: #565454; - display: block; - position: relative; -} - -.dataset-status-container ul li input[type="radio"] { - position: absolute; - visibility: hidden; -} - -.dataset-status-container ul li label { - display: block; - position: relative; - font-weight: 300; - font-size: 15px; - padding: 0px 10px 0px 15px; - margin: 0px 15px 0px 15px; - height: 30px; - cursor: pointer; - transition: all 0.25s linear; - -webkit-transition: all 0.25s linear; -} - -.dataset-status-container ul li:hover label { - color: #6f6f6f; -} - -.dataset-status-container ul li:hover input[name="dataset_status_radio"]:checked ~ label { - color: var(--color-teal); -} - -.popover-header { - margin-top: 0px; -} - -.popover-tooltip { - padding-left: 10px; -} - -ul li .check { - display: block; - position: absolute; - border: 3px solid #565454; - border-radius: 100%; - height: 20px; - width: 20px; - top: 0px; - left: 2px; - transition: border 0.2s ease-in-out; - -webkit-transition: border 0.2s ease-in-out; -} - -ul li:hover .check { - border: 7px solid #6f6f6f; -} - -ul li .check::before { - display: block; - position: absolute; - content: ""; - border-radius: 100%; - height: 8px; - width: 8px; - top: 3px; - left: 3px; - margin: auto; - transition: background 0.25s linear; - -webkit-transition: background 0.25s linear; -} - -input[name="dataset_status_radio"]:checked ~ .check { - border: 3px solid var(--color-teal); -} - -input[name="dataset_status_radio"]:checked ~ .check::before { - background: var(--color-teal); -} - -input[name="dataset_status_radio"]:checked ~ label { - color: var(--color-teal); -} - -.btn_animated.md .btn_animated-inside { - padding-top: 10px; -} -.btn_animated.lg .btn_animated-inside { - padding: 6px; -} - -.btn_animated.skip .btn_animated-inside { - background: white; - color: red; - margin-top: -1px; -} - -.btn_animated.skip .ripple.effect { - opacity: 0; - background: red; -} - -.btn_animated.start_over .btn_animated-inside { - background: white; - color: #b80d49; - margin-top: -1px; -} - -.btn_animated.start_over .ripple.effect { - opacity: 0; - background: #b80d49; -} - -.btn_animated-inside { - -webkit-mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC); - overflow: hidden; - border-radius: 8px; - transition: all 0.25s; - color: white; - user-select: none; - cursor: pointer; - background: var(--color-light-green); - width: inherit; - height: inherit; - margin-left: -8px; - padding-top: 8px; -} - -.btn_animated .ripple { - width: 0px; - height: 0px; - position: absolute; - transition: all 0.75s; - display: inline-block; - opacity: 1; - transform: translate(-50%, -50%); - pointer-events: none; -} - -.btn_animated .ripple.effect { - width: 400px; - height: 400px; - color: #000; - opacity: 0; - background: black; - border-radius: 100%; -} - -.btn_animated { - cursor: pointer; - border-radius: 8px; - margin: 0px 10px; - height: 35px; - background: var(--color-light-green); - color: #fff; - font-weight: 600; - border: none; - font-size: 14px; - transition: all 0.2s; - overflow: hidden; - position: relative; -} - -.btn_animated:hover { - box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.5); -} - -.btn_animated.generate-btn { - background: var(--color-bg-plum); -} - -.btn_animated.generate-btn .btn_animated-inside { - padding-top: 10px; - background: var(--color-bg-plum); -} - -.btn_animated.return-btn .btn_animated-inside { - padding-top: 10px; - margin: 0px -8px; -} - -.btn_animated.exit .btn_animated-inside { - display: flex; - flex-direction: row; - justify-content: center; - margin-right: -10px; - padding-top: 10px; -} - -.btn_question:hover { - box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.5); -} - -.swal-wide { - width: 500px !important; -} +@import url("https://netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.css"); +@import url("https://fonts.googleapis.com/css?family=Open+Sans:400,600,700"); + +.top-menu { + margin-left: 25px; +} +.tab-input { + display: none; +} + +.tab-label { + display: inline-block; + margin: 0 0 -1px; + width: 24%; + min-width: 175px; + font-weight: 600; + font-size: 14px; + padding: 10px 9px; + text-align: center; + color: #999; + border: 1px solid transparent; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.inside { + pointer-events: none; +} + +.tab-label:before { + font-family: fontawesome; + font-weight: normal; + margin-right: 10px; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.tab-label:hover { + cursor: pointer; + background-color: rgb(243, 243, 243); + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.tab-input:checked + .tab-label { + color: #222; + border-bottom: 5px solid #b80d49; + margin-bottom: -5px; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +#tab_info_text { + color: #4d4a4a; + font-family: "Lato", sans-serif; + font-weight: 400; + font-size: 14px; + padding-top: 20px; + padding-bottom: 13px; + border-bottom: 1px solid var(--color-border); + border-top: 1px solid #ddd; + margin-right: 30px; + text-align: center; + margin-left: 25px; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.tab-info-p { + color: rgb(77, 74, 74); + font-family: "Lato", sans-serif; + font-weight: 400; + font-size: 14px; + padding-top: 20px; + padding-bottom: 13px; + border-bottom: 1px solid var(--color-border); + margin-bottom: 30px; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.section-header > div { + margin-left: 15px; + margin-right: 15px; +} + +.section-header > div > svg { + margin-right: 25px; +} + +.main-tabs-section { + /* display: none; */ + position: absolute; + top: 100px; + left: 0; + right: 0; + bottom: 0; + padding-top: 40px; + overflow-x: hidden; + overflow-y: auto; + margin-top: 1px; + /* margin-left: -10px; */ +} + +.hide { + pointer-events: none; + visibility: hidden; + opacity: 0; + transform: translateX(-20px); + transition: + visibility 0s 0.12s linear, + opacity 0.12s ease-in, + transform 0.12s ease-in-out; +} + +.show { + pointer-events: auto; + visibility: visible; + opacity: 1; + z-index: 1000; + transform: translateX(0); + transition: + visibility 0s 0s linear, + opacity 0.36s ease-out, + transform 0.36s ease-out; +} + +.flex-main-container { + margin: auto; + overflow: auto; +} + +/* #prepare_metadata_main_container, */ +/* #prepare_dataset_main_container { + transform: translate(-50%, -50%); + position: absolute; + top: 50%; + left: 50%; +} */ + +.flex-row-container { + margin: auto; + padding-bottom: 35px; + display: flex; + justify-content: center; +} + +.flex-content-container { + display: inline-block; + width: max-content; + margin-left: 20px; + margin-right: 20px; +} + +.content-header { + width: 100%; + text-align: center; + white-space: nowrap; + padding-bottom: 3px; +} + +.disabled-content-button { + width: 150px; + height: 150px; + border: none; + background-color: #fff; + font-size: 13px; + font-weight: 600; + border-radius: 5px; + padding-top: 5px; + padding-bottom: 5px; + padding-right: 20px; + padding-left: 20px; + margin-right: 10px; + margin-left: 10px; + color: var(--color-teal); + opacity: 1; + position: relative; + box-shadow: 0px 0px 10px #d5d5d5; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.disabled-content-button h2 { + color: #4d4a4a; + font-weight: 400; + font-size: 14px; + bottom: -1em; + font-family: "Raleway", sans-serif; + pointer-events: none; + text-align: center; + margin-top: 1em; +} + +.disabled-generate-button { + background: #f6f6f6; + margin: 5px; + width: 120px; + height: 40px; + font-size: 15px; + border: none !important; + border-radius: 8px; + font-weight: 600; + position: relative; + overflow: hidden; +} + +.disabled-animated-div { + padding-top: 10px; + background: #f6f6f6; + color: #4d4a4a; + width: inherit; + height: inherit; + border-radius: 8px; + overflow: hidden; +} + +#returnButton { + margin-left: 34px; + border-radius: 5px; + margin-top: 3px; + background: var(--color-teal); + color: #fff; + height: 30px; +} + +.content-button { + width: 150px; + height: 150px; + border: none; + background-color: #fff; + font-size: 13px; + font-weight: 600; + border-radius: 5px; + padding-top: 5px; + padding-bottom: 5px; + padding-right: 20px; + padding-left: 20px; + margin-right: 10px; + margin-left: 10px; + color: var(--color-teal); + opacity: 1; + position: relative; + box-shadow: 0px 0px 10px #d5d5d5; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.content-button p { + color: #222c3c; + font-size: 14px; + margin-top: 25px; + font-family: "Raleway", sans-serif; + pointer-events: none; +} + +.content-button:hover { + outline: none; + box-shadow: 0px 0px 10px 0px var(--color-light-green); + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.content-button:active { + border: 1px solid var(--color-light-green); + box-shadow: 0px 0px 3px 0px var(--color-light-green); + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.content-button h2, +.tile-button h2 { + color: #4d4a4a; + font-weight: 400; + font-size: 14px; + bottom: -1em; + font-family: "Raleway", sans-serif; + pointer-events: none; + text-align: center; + margin-top: 1em; +} + +.footer-div { + border-top: 1px solid #f0f0f0; + padding: 15px 10px 10px 10px; + margin-bottom: 10px; + height: 50px; + display: flex; + flex-direction: row; + justify-content: space-between; + width: 95%; + bottom: 0px; + background-color: white; + position: absolute; +} + +.transition-btn i { + pointer-events: none; +} + +.content-button svg { + margin: 0 auto; + pointer-events: none; +} + +.header-container { + padding-bottom: 20px; +} + +.button-container { + display: flex; + justify-content: center; +} + +.main-tabs { + display: none; +} + +.main-tabs.show { + display: flex; + flex-direction: column; +} + +.dataset-status-container { + display: block; + position: relative; +} + +.dataset-status-container ul { + list-style: none; +} + +.dataset-status-container ul li { + color: #565454; + display: block; + position: relative; +} + +.dataset-status-container ul li input[type="radio"] { + position: absolute; + visibility: hidden; +} + +.dataset-status-container ul li label { + display: block; + position: relative; + font-weight: 300; + font-size: 15px; + padding: 0px 10px 0px 15px; + margin: 0px 15px 0px 15px; + height: 30px; + cursor: pointer; + transition: all 0.25s linear; + -webkit-transition: all 0.25s linear; +} + +.dataset-status-container ul li:hover label { + color: #6f6f6f; +} + +.dataset-status-container ul li:hover input[name="dataset_status_radio"]:checked ~ label { + color: var(--color-teal); +} + +.popover-header { + margin-top: 0px; +} + +.popover-tooltip { + padding-left: 10px; +} + +ul li .check { + display: block; + position: absolute; + border: 3px solid #565454; + border-radius: 100%; + height: 20px; + width: 20px; + top: 0px; + left: 2px; + transition: border 0.2s ease-in-out; + -webkit-transition: border 0.2s ease-in-out; +} + +ul li:hover .check { + border: 7px solid #6f6f6f; +} + +ul li .check::before { + display: block; + position: absolute; + content: ""; + border-radius: 100%; + height: 8px; + width: 8px; + top: 3px; + left: 3px; + margin: auto; + transition: background 0.25s linear; + -webkit-transition: background 0.25s linear; +} + +input[name="dataset_status_radio"]:checked ~ .check { + border: 3px solid var(--color-teal); +} + +input[name="dataset_status_radio"]:checked ~ .check::before { + background: var(--color-teal); +} + +input[name="dataset_status_radio"]:checked ~ label { + color: var(--color-teal); +} + +.btn_animated.md .btn_animated-inside { + padding-top: 10px; +} +.btn_animated.lg .btn_animated-inside { + padding: 6px; +} + +.btn_animated.skip .btn_animated-inside { + background: white; + color: red; + margin-top: -1px; +} + +.btn_animated.skip .ripple.effect { + opacity: 0; + background: red; +} + +.btn_animated.start_over .btn_animated-inside { + background: white; + color: #b80d49; + margin-top: -1px; +} + +.btn_animated.start_over .ripple.effect { + opacity: 0; + background: #b80d49; +} + +.btn_animated-inside { + -webkit-mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC); + overflow: hidden; + border-radius: 8px; + transition: all 0.25s; + color: white; + user-select: none; + cursor: pointer; + background: var(--color-light-green); + width: inherit; + height: inherit; + margin-left: -8px; + padding-top: 8px; +} + +.btn_animated .ripple { + width: 0px; + height: 0px; + position: absolute; + transition: all 0.75s; + display: inline-block; + opacity: 1; + transform: translate(-50%, -50%); + pointer-events: none; +} + +.btn_animated .ripple.effect { + width: 400px; + height: 400px; + color: #000; + opacity: 0; + background: black; + border-radius: 100%; +} + +.btn_animated { + cursor: pointer; + border-radius: 8px; + margin: 0px 10px; + height: 35px; + background: var(--color-light-green); + color: #fff; + font-weight: 600; + border: none; + font-size: 14px; + transition: all 0.2s; + overflow: hidden; + position: relative; +} + +.btn_animated:hover { + box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.5); +} + +.btn_animated.generate-btn { + background: var(--color-bg-plum); +} + +.btn_animated.generate-btn .btn_animated-inside { + padding-top: 10px; + background: var(--color-bg-plum); +} + +.btn_animated.return-btn .btn_animated-inside { + padding-top: 10px; + margin: 0px -8px; +} + +.btn_animated.exit .btn_animated-inside { + display: flex; + flex-direction: row; + justify-content: center; + margin-right: -10px; + padding-top: 10px; +} + +.btn_question:hover { + box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.5); +} + +.swal-wide { + width: 500px !important; +} diff --git a/src/electron/renderer/assets/css/nativize.css b/src/electron/renderer/assets/css/nativize.css index b28352133..c11448eb0 100755 --- a/src/electron/renderer/assets/css/nativize.css +++ b/src/electron/renderer/assets/css/nativize.css @@ -1,69 +1,69 @@ -/* -** nativize.css -** Makes the UI feel more native -*/ - -html { - font-family: sans-serif; - -webkit-user-drag: none; /* disable dragging */ - cursor: default; /* use default cursor */ -} - -body { - margin: 0; /* remove default margin */ -} - -/* enable text selection */ - -.is-selectable, -pre, -code { - -webkit-user-select: auto; - cursor: auto; -} - -/* Buttons and links */ - -button { - cursor: default; -} - -/* Internal links */ -a { - cursor: pointer; - text-decoration: none; - outline: none; -} - -/* New window (target) + external links */ -a[target], -a[href^="https://"], -a[href^="http://"] -{ - border-bottom: 1px solid; -} -/* For YouTube Video links */ -a[href^="https://www.youtube.com"] -{ - border-bottom: 0px solid; -} - -.github-wiki-link { - text-decoration: none; - border: 0px !important; - outline: none; - border-width: 0px; - outline-width: 0px; - border-bottom: none; -} - -a:hover, -a:focus { - border-bottom: none; -} - -/* Images */ - -img { - -webkit-user-drag: none; /* disable dragging */ -} +/* +** nativize.css +** Makes the UI feel more native +*/ + +html { + font-family: sans-serif; + -webkit-user-drag: none; /* disable dragging */ + cursor: default; /* use default cursor */ +} + +body { + margin: 0; /* remove default margin */ +} + +/* enable text selection */ + +.is-selectable, +pre, +code { + -webkit-user-select: auto; + cursor: auto; +} + +/* Buttons and links */ + +button { + cursor: default; +} + +/* Internal links */ +a { + cursor: pointer; + text-decoration: none; + outline: none; +} + +/* New window (target) + external links */ +a[target], +a[href^="https://"], +a[href^="http://"] +{ + border-bottom: 1px solid; +} +/* For YouTube Video links */ +a[href^="https://www.youtube.com"] +{ + border-bottom: 0px solid; +} + +.github-wiki-link { + text-decoration: none; + border: 0px !important; + outline: none; + border-width: 0px; + outline-width: 0px; + border-bottom: none; +} + +a:hover, +a:focus { + border-bottom: none; +} + +/* Images */ + +img { + -webkit-user-drag: none; /* disable dragging */ +} diff --git a/src/electron/renderer/assets/css/nav.css b/src/electron/renderer/assets/css/nav.css index 50d67e6fb..f0f0576c9 100755 --- a/src/electron/renderer/assets/css/nav.css +++ b/src/electron/renderer/assets/css/nav.css @@ -1,479 +1,479 @@ -/* Nav bootstrap */ -/* toggle button */ -#sidebarCollapse { - width: 35px; - height: 35px; - border-radius: 50%; - background: transparent; - position: absolute; - top: 8px; - left: 200px; - cursor: pointer; - border: none; - z-index: 2; - transition: all 0.25s linear; -} - -#sidebarCollapse span { - width: 80%; - height: 2px; - margin: 0 auto; - display: block; - background: var(--color-light-green); - transition: all 0.25s linear; - /* transition: all 0.1s cubic-bezier(0.81, -0.33, 0.345, 1.375); */ -} -/* animate toggle button */ -#sidebarCollapse span:first-of-type { - transition: all 0.25s linear; - transform: rotate(45deg) translate(2px, 2px); -} -#sidebarCollapse span:nth-of-type(2) { - transition: all 0.25s linear; - opacity: 0; -} -#sidebarCollapse span:last-of-type { - transition: all 0.25s linear; - transform: rotate(-45deg) translate(1px, -1px); -} - -#sidebarCollapse.active span { - transition: all 0.25s linear; - transform: none; - opacity: 1; - margin: 5px auto; -} - -#main-nav { - background: var(--color-sidebar); - border-top: 1px solid #d5d5d5; - color: black; - font-family: "Source Sans Pro", sans-serif; - transition: all 0.25s linear; - transform-origin: 0 50%; /* Set the transformed position of sidebar to center left side. */ -} - -#main-nav.active { - width: 0px; - overflow: hidden; - /* transform: rotateY(150deg); */ -} - -.navbar-btn { - transition: margin-left 600ms ease; -} - -.navbar-btn.active { - margin-left: -190px; - transition: all 0.25s linear; -} - -.navbar-btn:focus { - outline: none; -} - -.navbar-btn.active:focus { - outline: none; -} - -.dash-content.active { - margin-left: -230px; -} - -a[data-toggle="collapse"] { - position: relative; -} - -.dropdown-toggle::after { - display: block; - position: absolute; - top: 50%; - right: 20px; - transform: translateY(-50%); -} - -#main-nav { - height: 100%; -} - -#nav-items { - height: 100%; - display: flex; - flex-direction: column; -} - -#main-nav .sidebar-header { - padding: 20px; - padding-bottom: 0px; -} - -#main-nav .sidebar-header img { - cursor: pointer; -} - -#main-nav .sidebar-body { - display: flex; - flex-direction: column; - justify-content: space-between; - overflow-y: auto; - margin-top: 15px; - flex-grow: 1; - border-top: 1px solid #8f8f8f; -} - -#main-nav .sidebar-body > *:last-child { - border-top: 1px solid #8f8f8f; - padding-top: 10px; - position: sticky; - bottom: 0; - background: var(--color-sidebar); -} - -#main-nav ul.components { - background: var(--color-sidebar); - padding: 3px; - padding-top: 8px; -} - -#main-nav .sidebar-body > *:last-child h4 { - margin-top: 0px !important; -} - -#main-nav .sidebar-body li { - list-style: none; -} - -#main-nav ul { - padding-right: 10px; - padding-left: 3px; - margin-right: 0; - margin-bottom: 0; - overflow-y: auto; -} - -#main-nav ul p { - color: #000; - padding: 10px; -} - -#main-nav .sidebar-body a { - font-size: 14px; - display: block; - line-height: 45px; - padding-left: 20px; - margin-bottom: 5px; - text-align: left; - padding-right: 10px; - color: #000; - border: none; - border-radius: 4px; - border-left: 4px solid transparent; -} - -#main-nav .sidebar-body svg { - fill: #000; -} - -#main-nav .sidebar-body a a { - padding-left: 10px; - text-align: left; - padding-right: 10px; -} - -#main-nav .sidebar-body a i { - margin-right: 25px; - font-size: 20px; -} - -#main-nav .sidebar-body a:hover { - text-decoration: none; - background: none; - font-weight: 600; -} - -#main-nav .sidebar-body a.is-selected { - color: var(--color-light-green); - background: none; - font-weight: 600; - border-left: 4px solid var(--color-light-green); - /* margin-left: -3px; */ - border-radius: 0; -} - -#main-nav .sidebar-body a.is-selected svg { - fill: var(--color-light-green); -} - -.help-section { - bottom: 2px; - position: absolute; - width: 230px; -} - -.help-section ul { - padding-left: 15px !important; -} - -.help-section a { - text-decoration: none; - line-height: 5px; - border: none; - color: #f0f0f0; - width: 35px !important; - padding-right: 3px !important; - padding-left: 3px !important; - z-index: 200; -} - -.help-section a i { - font-size: 17px; - opacity: 0.7; -} - -.help-section a:hover { - background: none !important; - border: none !important; -} - -.help-section a:hover i { - opacity: 1; -} - -.help-section a.is-selected { - color: #000 !important; - background: none !important; - border: none !important; -} - -.list-unstyled { - list-style: none; - border-bottom: none; -} - -.list-unstyled.components li a { - -webkit-user-drag: none; -} - -.collapse:not(.show) { - display: none; -} - -.collapse.show { - display: block; -} - -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition: height 0.35s ease; - -o-transition: height 0.35s ease; - transition: height 0.35s ease; -} -@media (prefers-reduced-motion: reduce) { - .collapsing { - -webkit-transition: none; - -o-transition: none; - transition: none; - } -} - -.nav { - padding: 0px 0px; - /* position: fixed; */ - width: 240px; - min-height: 100vh; - color: var(--color-subtle); - visibility: visible; - left: 0; - z-index: 1; - align-items: stretch; - /* display: flex; */ - transition: 0.5s; -} - -@media screen and (max-height: 500px) { - #main-nav { - padding-top: 15px; - } - #main-nav a { - font-size: 13px; - } -} - -.nav.is-shown { - visibility: visible; - opacity: 1; -} - -.nav-header { - position: relative; - padding: 10px 10px; - margin-top: 10px; - margin-bottom: 30px; -} - -.nav-title strong { - color: var(--color-light-green); - opacity: 0.8; - transition: color 0.1s ease-in; -} - -.nav-title strong:hover { - color: linear-gradient(90deg, rgba(37, 129, 147, 1) 0%, rgba(52, 207, 196, 1) 51%); -} - -.nav-header-icon { - position: absolute; - width: 165px; - height: 70px; - top: 1.3rem; - right: 1.8rem; -} - -.nav-item { - width: 240px !important; -} - -.nav-icon { - width: 30px; - height: 30px; - margin-right: 27px; - padding-bottom: 1px; - padding-top: 1px; - margin-left: -22px; - margin-top: 10px; - margin-bottom: 10px; - vertical-align: middle; -} - -.nav-icon.logo { - width: 45px; - height: 45px; - margin-right: 24px; - margin-left: 15px; - margin-bottom: 75px; - vertical-align: middle; -} - -.nav-video { - width: 18px; - height: 21px; - vertical-align: sub; - text-decoration: none; -} - -.nav-category { - margin: 0.2em 0; - padding-left: 2rem; - font-size: 11px; - font-weight: normal; - text-transform: uppercase; -} - -.nav-button { - display: block; - width: 100%; - padding: 0.5rem; - padding-left: calc(5rem + 5px + 0.5rem); /* padding + icon + magic */ - padding-top: 0.8rem; - padding-bottom: 0.8rem; - line-height: 2; - text-align: left; - font-size: 16px; - color: white; - border: none; - background-color: transparent; - outline: none; - opacity: 0.8; - cursor: pointer; - font-family: "Open Sans", sans-serif; - background-size: 30px 30px; - background-repeat: no-repeat; - background-position: 22px center; -} - -.nav-button:hover, -.nav-button:focus:not(.is-selected) { - background-color: hsla(0, 0%, 0%, 0.1); - color: white; - opacity: 1; -} - -.nav-button.is-selected { - background-color: var(--color-accent); -} - -.nav-button.is-selected, -.nav-button.is-selected em { - color: white; - font-weight: 500; - opacity: 1; -} - -.nav-button.is-selected:focus { - opacity: 1; -} - -.nav-button em { - font-style: normal; - font-weight: 600; - color: var(--color-strong); - pointer-events: none; /* makes it invisible to clicks */ -} - -.nav-footer { - margin-top: 1rem; - padding: 2rem; - border-top: 1px solid var(--color-border); - text-align: center; -} - -.nav-footer-icon { - width: calc(770px / 6.5); - height: calc(88px / 6.5); -} - -.nav-footer a { - outline: none; -} - -.nav-footer-button { - display: block; - width: 100%; - padding: 0; - margin-bottom: 0.75rem; - line-height: 2; - text-align: left; - font: inherit; - font-size: 15px; - color: inherit; - border: none; - background-color: transparent; - cursor: default; - outline: none; - text-align: center; -} - -.nav-footer-button:focus { - color: var(--color-strong); -} - -.nav-footer-logo { - color: hsl(0, 0%, 66%); -} - -.nav-footer-logo:focus { - color: hsl(0, 0%, 33%); -} - -/* Remove border on the logo */ -.nav-footer-logo.nav-footer-logo { - border-bottom: none; -} - -.nav-center-logo-image { - display: block; - width: 100%; - padding: 0px 25px; -} +/* Nav bootstrap */ +/* toggle button */ +#sidebarCollapse { + width: 35px; + height: 35px; + border-radius: 50%; + background: transparent; + position: absolute; + top: 8px; + left: 200px; + cursor: pointer; + border: none; + z-index: 2; + transition: all 0.25s linear; +} + +#sidebarCollapse span { + width: 80%; + height: 2px; + margin: 0 auto; + display: block; + background: var(--color-light-green); + transition: all 0.25s linear; + /* transition: all 0.1s cubic-bezier(0.81, -0.33, 0.345, 1.375); */ +} +/* animate toggle button */ +#sidebarCollapse span:first-of-type { + transition: all 0.25s linear; + transform: rotate(45deg) translate(2px, 2px); +} +#sidebarCollapse span:nth-of-type(2) { + transition: all 0.25s linear; + opacity: 0; +} +#sidebarCollapse span:last-of-type { + transition: all 0.25s linear; + transform: rotate(-45deg) translate(1px, -1px); +} + +#sidebarCollapse.active span { + transition: all 0.25s linear; + transform: none; + opacity: 1; + margin: 5px auto; +} + +#main-nav { + background: var(--color-sidebar); + border-top: 1px solid #d5d5d5; + color: black; + font-family: "Source Sans Pro", sans-serif; + transition: all 0.25s linear; + transform-origin: 0 50%; /* Set the transformed position of sidebar to center left side. */ +} + +#main-nav.active { + width: 0px; + overflow: hidden; + /* transform: rotateY(150deg); */ +} + +.navbar-btn { + transition: margin-left 600ms ease; +} + +.navbar-btn.active { + margin-left: -190px; + transition: all 0.25s linear; +} + +.navbar-btn:focus { + outline: none; +} + +.navbar-btn.active:focus { + outline: none; +} + +.dash-content.active { + margin-left: -230px; +} + +a[data-toggle="collapse"] { + position: relative; +} + +.dropdown-toggle::after { + display: block; + position: absolute; + top: 50%; + right: 20px; + transform: translateY(-50%); +} + +#main-nav { + height: 100%; +} + +#nav-items { + height: 100%; + display: flex; + flex-direction: column; +} + +#main-nav .sidebar-header { + padding: 20px; + padding-bottom: 0px; +} + +#main-nav .sidebar-header img { + cursor: pointer; +} + +#main-nav .sidebar-body { + display: flex; + flex-direction: column; + justify-content: space-between; + overflow-y: auto; + margin-top: 15px; + flex-grow: 1; + border-top: 1px solid #8f8f8f; +} + +#main-nav .sidebar-body > *:last-child { + border-top: 1px solid #8f8f8f; + padding-top: 10px; + position: sticky; + bottom: 0; + background: var(--color-sidebar); +} + +#main-nav ul.components { + background: var(--color-sidebar); + padding: 3px; + padding-top: 8px; +} + +#main-nav .sidebar-body > *:last-child h4 { + margin-top: 0px !important; +} + +#main-nav .sidebar-body li { + list-style: none; +} + +#main-nav ul { + padding-right: 10px; + padding-left: 3px; + margin-right: 0; + margin-bottom: 0; + overflow-y: auto; +} + +#main-nav ul p { + color: #000; + padding: 10px; +} + +#main-nav .sidebar-body a { + font-size: 14px; + display: block; + line-height: 45px; + padding-left: 20px; + margin-bottom: 5px; + text-align: left; + padding-right: 10px; + color: #000; + border: none; + border-radius: 4px; + border-left: 4px solid transparent; +} + +#main-nav .sidebar-body svg { + fill: #000; +} + +#main-nav .sidebar-body a a { + padding-left: 10px; + text-align: left; + padding-right: 10px; +} + +#main-nav .sidebar-body a i { + margin-right: 25px; + font-size: 20px; +} + +#main-nav .sidebar-body a:hover { + text-decoration: none; + background: none; + font-weight: 600; +} + +#main-nav .sidebar-body a.is-selected { + color: var(--color-light-green); + background: none; + font-weight: 600; + border-left: 4px solid var(--color-light-green); + /* margin-left: -3px; */ + border-radius: 0; +} + +#main-nav .sidebar-body a.is-selected svg { + fill: var(--color-light-green); +} + +.help-section { + bottom: 2px; + position: absolute; + width: 230px; +} + +.help-section ul { + padding-left: 15px !important; +} + +.help-section a { + text-decoration: none; + line-height: 5px; + border: none; + color: #f0f0f0; + width: 35px !important; + padding-right: 3px !important; + padding-left: 3px !important; + z-index: 200; +} + +.help-section a i { + font-size: 17px; + opacity: 0.7; +} + +.help-section a:hover { + background: none !important; + border: none !important; +} + +.help-section a:hover i { + opacity: 1; +} + +.help-section a.is-selected { + color: #000 !important; + background: none !important; + border: none !important; +} + +.list-unstyled { + list-style: none; + border-bottom: none; +} + +.list-unstyled.components li a { + -webkit-user-drag: none; +} + +.collapse:not(.show) { + display: none; +} + +.collapse.show { + display: block; +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing { + -webkit-transition: none; + -o-transition: none; + transition: none; + } +} + +.nav { + padding: 0px 0px; + /* position: fixed; */ + width: 240px; + min-height: 100vh; + color: var(--color-subtle); + visibility: visible; + left: 0; + z-index: 1; + align-items: stretch; + /* display: flex; */ + transition: 0.5s; +} + +@media screen and (max-height: 500px) { + #main-nav { + padding-top: 15px; + } + #main-nav a { + font-size: 13px; + } +} + +.nav.is-shown { + visibility: visible; + opacity: 1; +} + +.nav-header { + position: relative; + padding: 10px 10px; + margin-top: 10px; + margin-bottom: 30px; +} + +.nav-title strong { + color: var(--color-light-green); + opacity: 0.8; + transition: color 0.1s ease-in; +} + +.nav-title strong:hover { + color: linear-gradient(90deg, rgba(37, 129, 147, 1) 0%, rgba(52, 207, 196, 1) 51%); +} + +.nav-header-icon { + position: absolute; + width: 165px; + height: 70px; + top: 1.3rem; + right: 1.8rem; +} + +.nav-item { + width: 240px !important; +} + +.nav-icon { + width: 30px; + height: 30px; + margin-right: 27px; + padding-bottom: 1px; + padding-top: 1px; + margin-left: -22px; + margin-top: 10px; + margin-bottom: 10px; + vertical-align: middle; +} + +.nav-icon.logo { + width: 45px; + height: 45px; + margin-right: 24px; + margin-left: 15px; + margin-bottom: 75px; + vertical-align: middle; +} + +.nav-video { + width: 18px; + height: 21px; + vertical-align: sub; + text-decoration: none; +} + +.nav-category { + margin: 0.2em 0; + padding-left: 2rem; + font-size: 11px; + font-weight: normal; + text-transform: uppercase; +} + +.nav-button { + display: block; + width: 100%; + padding: 0.5rem; + padding-left: calc(5rem + 5px + 0.5rem); /* padding + icon + magic */ + padding-top: 0.8rem; + padding-bottom: 0.8rem; + line-height: 2; + text-align: left; + font-size: 16px; + color: white; + border: none; + background-color: transparent; + outline: none; + opacity: 0.8; + cursor: pointer; + font-family: "Open Sans", sans-serif; + background-size: 30px 30px; + background-repeat: no-repeat; + background-position: 22px center; +} + +.nav-button:hover, +.nav-button:focus:not(.is-selected) { + background-color: hsla(0, 0%, 0%, 0.1); + color: white; + opacity: 1; +} + +.nav-button.is-selected { + background-color: var(--color-accent); +} + +.nav-button.is-selected, +.nav-button.is-selected em { + color: white; + font-weight: 500; + opacity: 1; +} + +.nav-button.is-selected:focus { + opacity: 1; +} + +.nav-button em { + font-style: normal; + font-weight: 600; + color: var(--color-strong); + pointer-events: none; /* makes it invisible to clicks */ +} + +.nav-footer { + margin-top: 1rem; + padding: 2rem; + border-top: 1px solid var(--color-border); + text-align: center; +} + +.nav-footer-icon { + width: calc(770px / 6.5); + height: calc(88px / 6.5); +} + +.nav-footer a { + outline: none; +} + +.nav-footer-button { + display: block; + width: 100%; + padding: 0; + margin-bottom: 0.75rem; + line-height: 2; + text-align: left; + font: inherit; + font-size: 15px; + color: inherit; + border: none; + background-color: transparent; + cursor: default; + outline: none; + text-align: center; +} + +.nav-footer-button:focus { + color: var(--color-strong); +} + +.nav-footer-logo { + color: hsl(0, 0%, 66%); +} + +.nav-footer-logo:focus { + color: hsl(0, 0%, 33%); +} + +/* Remove border on the logo */ +.nav-footer-logo.nav-footer-logo { + border-bottom: none; +} + +.nav-center-logo-image { + display: block; + width: 100%; + padding: 0px 25px; +} diff --git a/src/electron/renderer/assets/css/print.css b/src/electron/renderer/assets/css/print.css index 84a90d916..b086842cd 100755 --- a/src/electron/renderer/assets/css/print.css +++ b/src/electron/renderer/assets/css/print.css @@ -1,37 +1,37 @@ -@media print { - body { - background: none; - color: black !important; - font-size: 70%; - margin: 0; - padding: 0; - } - - h1 { - font-size: 22px; - } - - .nav, - button, - .demo-box:before, - header p { - display: none; - } - - .demo-box, - h2, - pre, - code { - padding: 0 !important; - margin: 0 !important; - } - - header { - padding: 0 0 10px 0; - } - - code, - .support { - font-size: 10px; - } -} +@media print { + body { + background: none; + color: black !important; + font-size: 70%; + margin: 0; + padding: 0; + } + + h1 { + font-size: 22px; + } + + .nav, + button, + .demo-box:before, + header p { + display: none; + } + + .demo-box, + h2, + pre, + code { + padding: 0 !important; + margin: 0 !important; + } + + header { + padding: 0 0 10px 0; + } + + code, + .support { + font-size: 10px; + } +} diff --git a/src/electron/renderer/assets/css/section.css b/src/electron/renderer/assets/css/section.css index 56195ba27..edfc133fd 100755 --- a/src/electron/renderer/assets/css/section.css +++ b/src/electron/renderer/assets/css/section.css @@ -1,34 +1,34 @@ -/* Section ------------------ */ - -.section { - height: 100%; - width: 100%; - margin-right: 0; - padding: 15px 50px; - - display: flex; - flex-direction: column; - box-sizing: border-box; - overflow-x: hidden; - overflow-y: auto; - color: var(--color-accent); - background-color: var(--color-section); - transition: - visibility 0s 0.12s linear, - opacity 0.12s ease-in, - transform 0.12s ease-in-out; -} - -nwb-main h3, -nwb-main p { - color: var(--color); -} - -nwb-main h1 { - font-size: 20px; -} - -nwb-main h3 { - padding-bottom: 30px; - font-size: 18px; -} +/* Section ------------------ */ + +.section { + height: 100%; + width: 100%; + margin-right: 0; + padding: 15px 50px; + + display: flex; + flex-direction: column; + box-sizing: border-box; + overflow-x: hidden; + overflow-y: auto; + color: var(--color-accent); + background-color: var(--color-section); + transition: + visibility 0s 0.12s linear, + opacity 0.12s ease-in, + transform 0.12s ease-in-out; +} + +nwb-main h3, +nwb-main p { + color: var(--color); +} + +nwb-main h1 { + font-size: 20px; +} + +nwb-main h3 { + padding-bottom: 30px; + font-size: 18px; +} diff --git a/src/electron/renderer/assets/css/spur.css b/src/electron/renderer/assets/css/spur.css index a70d076c7..4d041482d 100644 --- a/src/electron/renderer/assets/css/spur.css +++ b/src/electron/renderer/assets/css/spur.css @@ -1,11891 +1,11891 @@ -abbr[title], -abbr[data-original-title] { - text-decoration: underline; - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; - cursor: help; - border-bottom: 0; - -webkit-text-decoration-skip-ink: none; - text-decoration-skip-ink: none; -} - -address { - margin-bottom: 1rem; - font-style: normal; - line-height: inherit; -} - -ol, -ul, -dl { - margin-top: 0; - margin-bottom: 1rem; -} - -ol ol, -ul ul, -ol ul, -ul ol { - margin-bottom: 0; -} - -dt { - font-weight: 700; -} - -dd { - margin-bottom: 0.5rem; - margin-left: 0; -} - -blockquote { - margin: 0 0 1rem; -} - -b, -strong { - font-weight: bolder; -} - -small { - font-size: 80%; -} - -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* a { - color: #3F84FC; - text-decoration: none; - background-color: transparent; } - a:hover { - color: #0458eb; - text-decoration: underline; } - -a:not([href]):not([tabindex]) { - color: inherit; - text-decoration: none; } - a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { - color: inherit; - text-decoration: none; } - a:not([href]):not([tabindex]):focus { - outline: 0; } - -pre, -code, -kbd, -samp { - font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - font-size: 1em; } - -pre { - margin-top: 0; - margin-bottom: 1rem; - overflow: auto; } - -figure { - margin: 0 0 1rem; } - -img { - vertical-align: middle; - border-style: none; } - -svg { - overflow: hidden; - vertical-align: middle; } - -table { - border-collapse: collapse; } - -caption { - padding-top: 0.75rem; - padding-bottom: 0.75rem; - color: #6c757d; - text-align: left; - caption-side: bottom; } - -th { - text-align: inherit; } - -label { - display: inline-block; - margin-bottom: 0.5rem; } - -button { - border-radius: 0; } - -button:focus { - outline: 1px dotted; - outline: 5px auto -webkit-focus-ring-color; } - -input, -button, -select, -optgroup, -textarea { - margin: 0; - font-family: inherit; - font-size: inherit; - line-height: inherit; } - -button, -input { - overflow: visible; } - -button, -select { - text-transform: none; } - -select { - word-wrap: normal; } - -button, -[type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; } - -button:not(:disabled), -[type="button"]:not(:disabled), -[type="reset"]:not(:disabled), -[type="submit"]:not(:disabled) { - cursor: pointer; } - -button::-moz-focus-inner, -[type="button"]::-moz-focus-inner, -[type="reset"]::-moz-focus-inner, -[type="submit"]::-moz-focus-inner { - padding: 0; - border-style: none; } - -input[type="radio"], -input[type="checkbox"] { - -webkit-box-sizing: border-box; - box-sizing: border-box; - padding: 0; } - -input[type="date"], -input[type="time"], -input[type="datetime-local"], -input[type="month"] { - -webkit-appearance: listbox; } - -textarea { - overflow: auto; - resize: vertical; } - -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; } - -legend { - display: block; - width: 100%; - max-width: 100%; - padding: 0; - margin-bottom: .5rem; - font-size: 1.5rem; - line-height: inherit; - color: inherit; - white-space: normal; } */ - -progress { - vertical-align: baseline; -} - -[type="number"]::-webkit-inner-spin-button, -[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -[type="search"] { - outline-offset: -2px; - -webkit-appearance: none; -} - -[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -::-webkit-file-upload-button { - font: inherit; - -webkit-appearance: button; -} - -output { - display: inline-block; -} - -summary { - display: list-item; - cursor: pointer; -} - -template { - display: none; -} - -[hidden] { - display: none !important; -} - -/* h1, h2, h3, h4, h5, h6, -.h1, .h2, .h3, .h4, .h5, .h6 { - margin-bottom: 0.5rem; - font-weight: 500; - line-height: 1.2; } - -h1, .h1 { - font-size: 2.5rem; } - -h2, .h2 { - font-size: 2rem; } - -h3, .h3 { - font-size: 1.75rem; } - -h4, .h4 { - font-size: 1.5rem; } - -h5, .h5 { - font-size: 1.25rem; } - -h6, .h6 { - font-size: 1rem; } */ - -.lead { - font-size: 1.25rem; - font-weight: 300; -} - -.display-1 { - font-size: 6rem; - font-weight: 300; - line-height: 1.2; -} - -.display-2 { - font-size: 5.5rem; - font-weight: 300; - line-height: 1.2; -} - -.display-3 { - font-size: 4.5rem; - font-weight: 300; - line-height: 1.2; -} - -.display-4 { - font-size: 3.5rem; - font-weight: 300; - line-height: 1.2; -} - -hr { - margin-top: 1rem; - margin-bottom: 1rem; - border: 0; - border-top: 1px solid rgba(0, 0, 0, 0.1); -} - -small, -.small { - font-size: 80%; - font-weight: 400; -} - -mark, -.mark { - padding: 0; - background-color: #fcf8e3; -} - -.list-inline { - padding-left: 0; - list-style: none; -} - -.list-inline-item { - display: inline-block; -} -.list-inline-item:not(:last-child) { - margin-right: 0.5rem; -} - -.initialism { - font-size: 90%; - text-transform: uppercase; -} - -.blockquote { - margin-bottom: 1rem; - font-size: 1.25rem; -} - -.blockquote-footer { - display: block; - font-size: 80%; - color: #6c757d; -} -.blockquote-footer::before { - content: "\2014\00A0"; -} - -.img-fluid { - max-width: 100%; - height: auto; -} - -.img-thumbnail { - padding: 0.25rem; - background-color: #fff; - border: 1px solid #dee2e6; - border-radius: 0; - max-width: 100%; - height: auto; -} - -.figure { - display: inline-block; -} - -.figure-img { - margin-bottom: 0.5rem; - line-height: 1; -} - -.figure-caption { - font-size: 90%; - color: #6c757d; -} - -code { - font-size: 87.5%; - color: #e83e8c; - word-break: break-word; -} -a > code { - color: inherit; -} - -kbd { - padding: 0.2rem 0.4rem; - font-size: 87.5%; - color: #fff; - background-color: #212529; - border-radius: 0.2rem; -} -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: 700; -} - -pre { - display: block; - font-size: 87.5%; - color: #212529; -} -pre code { - font-size: inherit; - color: inherit; - word-break: normal; -} - -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} - -.container { - width: 100%; - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -@media (min-width: 576px) { - .container { - max-width: 540px; - } -} -@media (min-width: 768px) { - .container { - max-width: 720px; - } -} -@media (min-width: 992px) { - .container { - max-width: 960px; - } -} -@media (min-width: 1200px) { - .container { - max-width: 1140px; - } -} - -.container-fluid { - width: 100%; - height: 85%; - padding-right: 20px; - padding-left: 20px; - margin-right: auto; - margin-left: auto; - margin-top: 5px; -} - -.row { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; -} - -.no-gutters { - margin-right: 0; - margin-left: 0; -} -.no-gutters > .col, -.no-gutters > [class*="col-"] { - padding-right: 0; - padding-left: 0; -} - -.col-1, -.col-2, -.col-3, -.col-4, -.col-5, -.col-6, -.col-7, -.col-8, -.col-9, -.col-10, -.col-11, -.col-12, -.col, -.col-auto, -.col-sm-1, -.col-sm-2, -.col-sm-3, -.col-sm-4, -.col-sm-5, -.col-sm-6, -.col-sm-7, -.col-sm-8, -.col-sm-9, -.col-sm-10, -.col-sm-11, -.col-sm-12, -.col-sm, -.col-sm-auto, -.col-md-1, -.col-md-2, -.col-md-3, -.col-md-4, -.col-md-5, -.col-md-6, -.col-md-7, -.col-md-8, -.col-md-9, -.col-md-10, -.col-md-11, -.col-md-12, -.col-md, -.col-md-auto, -.col-lg-1, -.col-lg-2, -.col-lg-3, -.col-lg-4, -.col-lg-5, -.col-lg-6, -.col-lg-7, -.col-lg-8, -.col-lg-9, -.col-lg-10, -.col-lg-11, -.col-lg-12, -.col-lg, -.col-lg-auto, -.col-xl-1, -.col-xl-2, -.col-xl-3, -.col-xl-4, -.col-xl-5, -.col-xl-6, -.col-xl-7, -.col-xl-8, -.col-xl-9, -.col-xl-10, -.col-xl-11, -.col-xl-12, -.col-xl, -.col-xl-auto { - position: relative; - width: fit-content; - padding-right: 15px; - padding-left: 15px; -} - -.col { - -webkit-flex-basis: 0; - -ms-flex-preferred-size: 0; - flex-basis: 0; - -webkit-box-flex: 1; - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; - max-width: 100%; -} - -.col-auto { - -webkit-box-flex: 0; - -webkit-flex: 0 0 auto; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto; - max-width: 100%; -} - -.col-1 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 8.33333%; - -ms-flex: 0 0 8.33333%; - flex: 0 0 8.33333%; - max-width: 8.33333%; -} - -.col-2 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 16.66667%; - -ms-flex: 0 0 16.66667%; - flex: 0 0 16.66667%; - max-width: 16.66667%; -} - -.col-3 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 25%; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; -} - -.col-4 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 33.33333%; - -ms-flex: 0 0 33.33333%; - flex: 0 0 33.33333%; - max-width: 33.33333%; -} - -.col-5 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 41.66667%; - -ms-flex: 0 0 41.66667%; - flex: 0 0 41.66667%; - max-width: 41.66667%; -} - -.col-6 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 50%; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; -} - -.col-7 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 58.33333%; - -ms-flex: 0 0 58.33333%; - flex: 0 0 58.33333%; - max-width: 58.33333%; -} - -.col-8 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 66.66667%; - -ms-flex: 0 0 66.66667%; - flex: 0 0 66.66667%; - max-width: 66.66667%; -} - -.col-9 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 75%; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; -} - -.col-10 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 83.33333%; - -ms-flex: 0 0 83.33333%; - flex: 0 0 83.33333%; - max-width: 83.33333%; -} - -.col-11 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 91.66667%; - -ms-flex: 0 0 91.66667%; - flex: 0 0 91.66667%; - max-width: 91.66667%; -} - -.col-12 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 100%; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; -} - -.order-first { - -webkit-box-ordinal-group: 0; - -webkit-order: -1; - -ms-flex-order: -1; - order: -1; -} - -.order-last { - -webkit-box-ordinal-group: 14; - -webkit-order: 13; - -ms-flex-order: 13; - order: 13; -} - -.order-0 { - -webkit-box-ordinal-group: 1; - -webkit-order: 0; - -ms-flex-order: 0; - order: 0; -} - -.order-1 { - -webkit-box-ordinal-group: 2; - -webkit-order: 1; - -ms-flex-order: 1; - order: 1; -} - -.order-2 { - -webkit-box-ordinal-group: 3; - -webkit-order: 2; - -ms-flex-order: 2; - order: 2; -} - -.order-3 { - -webkit-box-ordinal-group: 4; - -webkit-order: 3; - -ms-flex-order: 3; - order: 3; -} - -.order-4 { - -webkit-box-ordinal-group: 5; - -webkit-order: 4; - -ms-flex-order: 4; - order: 4; -} - -.order-5 { - -webkit-box-ordinal-group: 6; - -webkit-order: 5; - -ms-flex-order: 5; - order: 5; -} - -.order-6 { - -webkit-box-ordinal-group: 7; - -webkit-order: 6; - -ms-flex-order: 6; - order: 6; -} - -.order-7 { - -webkit-box-ordinal-group: 8; - -webkit-order: 7; - -ms-flex-order: 7; - order: 7; -} - -.order-8 { - -webkit-box-ordinal-group: 9; - -webkit-order: 8; - -ms-flex-order: 8; - order: 8; -} - -.order-9 { - -webkit-box-ordinal-group: 10; - -webkit-order: 9; - -ms-flex-order: 9; - order: 9; -} - -.order-10 { - -webkit-box-ordinal-group: 11; - -webkit-order: 10; - -ms-flex-order: 10; - order: 10; -} - -.order-11 { - -webkit-box-ordinal-group: 12; - -webkit-order: 11; - -ms-flex-order: 11; - order: 11; -} - -.order-12 { - -webkit-box-ordinal-group: 13; - -webkit-order: 12; - -ms-flex-order: 12; - order: 12; -} - -.offset-1 { - margin-left: 8.33333%; -} - -.offset-2 { - margin-left: 16.66667%; -} - -.offset-3 { - margin-left: 25%; -} - -.offset-4 { - margin-left: 33.33333%; -} - -.offset-5 { - margin-left: 41.66667%; -} - -.offset-6 { - margin-left: 50%; -} - -.offset-7 { - margin-left: 58.33333%; -} - -.offset-8 { - margin-left: 66.66667%; -} - -.offset-9 { - margin-left: 75%; -} - -.offset-10 { - margin-left: 83.33333%; -} - -.offset-11 { - margin-left: 91.66667%; -} - -@media (min-width: 576px) { - .col-sm { - -webkit-flex-basis: 0; - -ms-flex-preferred-size: 0; - flex-basis: 0; - -webkit-box-flex: 1; - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; - max-width: 100%; - } - .col-sm-auto { - -webkit-box-flex: 0; - -webkit-flex: 0 0 auto; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - .col-sm-1 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 8.33333%; - -ms-flex: 0 0 8.33333%; - flex: 0 0 8.33333%; - max-width: 8.33333%; - } - .col-sm-2 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 16.66667%; - -ms-flex: 0 0 16.66667%; - flex: 0 0 16.66667%; - max-width: 16.66667%; - } - .col-sm-3 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 25%; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; - } - .col-sm-4 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 33.33333%; - -ms-flex: 0 0 33.33333%; - flex: 0 0 33.33333%; - max-width: 33.33333%; - } - .col-sm-5 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 41.66667%; - -ms-flex: 0 0 41.66667%; - flex: 0 0 41.66667%; - max-width: 41.66667%; - } - .col-sm-6 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 50%; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; - } - .col-sm-7 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 58.33333%; - -ms-flex: 0 0 58.33333%; - flex: 0 0 58.33333%; - max-width: 58.33333%; - } - .col-sm-8 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 66.66667%; - -ms-flex: 0 0 66.66667%; - flex: 0 0 66.66667%; - max-width: 66.66667%; - } - .col-sm-9 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 75%; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; - } - .col-sm-10 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 83.33333%; - -ms-flex: 0 0 83.33333%; - flex: 0 0 83.33333%; - max-width: 83.33333%; - } - .col-sm-11 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 91.66667%; - -ms-flex: 0 0 91.66667%; - flex: 0 0 91.66667%; - max-width: 91.66667%; - } - .col-sm-12 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 100%; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; - } - .order-sm-first { - -webkit-box-ordinal-group: 0; - -webkit-order: -1; - -ms-flex-order: -1; - order: -1; - } - .order-sm-last { - -webkit-box-ordinal-group: 14; - -webkit-order: 13; - -ms-flex-order: 13; - order: 13; - } - .order-sm-0 { - -webkit-box-ordinal-group: 1; - -webkit-order: 0; - -ms-flex-order: 0; - order: 0; - } - .order-sm-1 { - -webkit-box-ordinal-group: 2; - -webkit-order: 1; - -ms-flex-order: 1; - order: 1; - } - .order-sm-2 { - -webkit-box-ordinal-group: 3; - -webkit-order: 2; - -ms-flex-order: 2; - order: 2; - } - .order-sm-3 { - -webkit-box-ordinal-group: 4; - -webkit-order: 3; - -ms-flex-order: 3; - order: 3; - } - .order-sm-4 { - -webkit-box-ordinal-group: 5; - -webkit-order: 4; - -ms-flex-order: 4; - order: 4; - } - .order-sm-5 { - -webkit-box-ordinal-group: 6; - -webkit-order: 5; - -ms-flex-order: 5; - order: 5; - } - .order-sm-6 { - -webkit-box-ordinal-group: 7; - -webkit-order: 6; - -ms-flex-order: 6; - order: 6; - } - .order-sm-7 { - -webkit-box-ordinal-group: 8; - -webkit-order: 7; - -ms-flex-order: 7; - order: 7; - } - .order-sm-8 { - -webkit-box-ordinal-group: 9; - -webkit-order: 8; - -ms-flex-order: 8; - order: 8; - } - .order-sm-9 { - -webkit-box-ordinal-group: 10; - -webkit-order: 9; - -ms-flex-order: 9; - order: 9; - } - .order-sm-10 { - -webkit-box-ordinal-group: 11; - -webkit-order: 10; - -ms-flex-order: 10; - order: 10; - } - .order-sm-11 { - -webkit-box-ordinal-group: 12; - -webkit-order: 11; - -ms-flex-order: 11; - order: 11; - } - .order-sm-12 { - -webkit-box-ordinal-group: 13; - -webkit-order: 12; - -ms-flex-order: 12; - order: 12; - } - .offset-sm-0 { - margin-left: 0; - } - .offset-sm-1 { - margin-left: 8.33333%; - } - .offset-sm-2 { - margin-left: 16.66667%; - } - .offset-sm-3 { - margin-left: 25%; - } - .offset-sm-4 { - margin-left: 33.33333%; - } - .offset-sm-5 { - margin-left: 41.66667%; - } - .offset-sm-6 { - margin-left: 50%; - } - .offset-sm-7 { - margin-left: 58.33333%; - } - .offset-sm-8 { - margin-left: 66.66667%; - } - .offset-sm-9 { - margin-left: 75%; - } - .offset-sm-10 { - margin-left: 83.33333%; - } - .offset-sm-11 { - margin-left: 91.66667%; - } -} - -@media (min-width: 768px) { - .col-md { - -webkit-flex-basis: 0; - -ms-flex-preferred-size: 0; - flex-basis: 0; - -webkit-box-flex: 1; - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; - max-width: 100%; - } - .col-md-auto { - -webkit-box-flex: 0; - -webkit-flex: 0 0 auto; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - .col-md-1 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 8.33333%; - -ms-flex: 0 0 8.33333%; - flex: 0 0 8.33333%; - max-width: 8.33333%; - } - .col-md-2 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 16.66667%; - -ms-flex: 0 0 16.66667%; - flex: 0 0 16.66667%; - max-width: 16.66667%; - } - .col-md-3 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 25%; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; - } - .col-md-4 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 33.33333%; - -ms-flex: 0 0 33.33333%; - flex: 0 0 33.33333%; - max-width: 33.33333%; - } - .col-md-5 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 41.66667%; - -ms-flex: 0 0 41.66667%; - flex: 0 0 41.66667%; - max-width: 41.66667%; - } - .col-md-6 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 50%; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; - } - .col-md-7 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 58.33333%; - -ms-flex: 0 0 58.33333%; - flex: 0 0 58.33333%; - max-width: 58.33333%; - } - .col-md-8 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 66.66667%; - -ms-flex: 0 0 66.66667%; - flex: 0 0 66.66667%; - max-width: 66.66667%; - } - .col-md-9 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 75%; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; - } - .col-md-10 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 83.33333%; - -ms-flex: 0 0 83.33333%; - flex: 0 0 83.33333%; - max-width: 83.33333%; - } - .col-md-11 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 91.66667%; - -ms-flex: 0 0 91.66667%; - flex: 0 0 91.66667%; - max-width: 91.66667%; - } - .col-md-12 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 100%; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; - } - .order-md-first { - -webkit-box-ordinal-group: 0; - -webkit-order: -1; - -ms-flex-order: -1; - order: -1; - } - .order-md-last { - -webkit-box-ordinal-group: 14; - -webkit-order: 13; - -ms-flex-order: 13; - order: 13; - } - .order-md-0 { - -webkit-box-ordinal-group: 1; - -webkit-order: 0; - -ms-flex-order: 0; - order: 0; - } - .order-md-1 { - -webkit-box-ordinal-group: 2; - -webkit-order: 1; - -ms-flex-order: 1; - order: 1; - } - .order-md-2 { - -webkit-box-ordinal-group: 3; - -webkit-order: 2; - -ms-flex-order: 2; - order: 2; - } - .order-md-3 { - -webkit-box-ordinal-group: 4; - -webkit-order: 3; - -ms-flex-order: 3; - order: 3; - } - .order-md-4 { - -webkit-box-ordinal-group: 5; - -webkit-order: 4; - -ms-flex-order: 4; - order: 4; - } - .order-md-5 { - -webkit-box-ordinal-group: 6; - -webkit-order: 5; - -ms-flex-order: 5; - order: 5; - } - .order-md-6 { - -webkit-box-ordinal-group: 7; - -webkit-order: 6; - -ms-flex-order: 6; - order: 6; - } - .order-md-7 { - -webkit-box-ordinal-group: 8; - -webkit-order: 7; - -ms-flex-order: 7; - order: 7; - } - .order-md-8 { - -webkit-box-ordinal-group: 9; - -webkit-order: 8; - -ms-flex-order: 8; - order: 8; - } - .order-md-9 { - -webkit-box-ordinal-group: 10; - -webkit-order: 9; - -ms-flex-order: 9; - order: 9; - } - .order-md-10 { - -webkit-box-ordinal-group: 11; - -webkit-order: 10; - -ms-flex-order: 10; - order: 10; - } - .order-md-11 { - -webkit-box-ordinal-group: 12; - -webkit-order: 11; - -ms-flex-order: 11; - order: 11; - } - .order-md-12 { - -webkit-box-ordinal-group: 13; - -webkit-order: 12; - -ms-flex-order: 12; - order: 12; - } - .offset-md-0 { - margin-left: 0; - } - .offset-md-1 { - margin-left: 8.33333%; - } - .offset-md-2 { - margin-left: 16.66667%; - } - .offset-md-3 { - margin-left: 25%; - } - .offset-md-4 { - margin-left: 33.33333%; - } - .offset-md-5 { - margin-left: 41.66667%; - } - .offset-md-6 { - margin-left: 50%; - } - .offset-md-7 { - margin-left: 58.33333%; - } - .offset-md-8 { - margin-left: 66.66667%; - } - .offset-md-9 { - margin-left: 75%; - } - .offset-md-10 { - margin-left: 83.33333%; - } - .offset-md-11 { - margin-left: 91.66667%; - } -} - -@media (min-width: 992px) { - .col-lg { - -webkit-flex-basis: 0; - -ms-flex-preferred-size: 0; - flex-basis: 0; - -webkit-box-flex: 1; - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; - max-width: 100%; - } - .col-lg-auto { - -webkit-box-flex: 0; - -webkit-flex: 0 0 auto; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - .col-lg-1 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 8.33333%; - -ms-flex: 0 0 8.33333%; - flex: 0 0 8.33333%; - max-width: 8.33333%; - } - .col-lg-2 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 16.66667%; - -ms-flex: 0 0 16.66667%; - flex: 0 0 16.66667%; - max-width: 16.66667%; - } - .col-lg-3 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 25%; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; - } - .col-lg-4 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 33.33333%; - -ms-flex: 0 0 33.33333%; - flex: 0 0 33.33333%; - max-width: 33.33333%; - } - .col-lg-5 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 41.66667%; - -ms-flex: 0 0 41.66667%; - flex: 0 0 41.66667%; - max-width: 41.66667%; - } - .col-lg-6 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 50%; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; - } - .col-lg-7 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 58.33333%; - -ms-flex: 0 0 58.33333%; - flex: 0 0 58.33333%; - max-width: 58.33333%; - } - .col-lg-8 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 66.66667%; - -ms-flex: 0 0 66.66667%; - flex: 0 0 66.66667%; - max-width: 66.66667%; - } - .col-lg-9 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 75%; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; - } - .col-lg-10 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 83.33333%; - -ms-flex: 0 0 83.33333%; - flex: 0 0 83.33333%; - max-width: 83.33333%; - } - .col-lg-11 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 91.66667%; - -ms-flex: 0 0 91.66667%; - flex: 0 0 91.66667%; - max-width: 91.66667%; - } - .col-lg-12 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 100%; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; - } - .order-lg-first { - -webkit-box-ordinal-group: 0; - -webkit-order: -1; - -ms-flex-order: -1; - order: -1; - } - .order-lg-last { - -webkit-box-ordinal-group: 14; - -webkit-order: 13; - -ms-flex-order: 13; - order: 13; - } - .order-lg-0 { - -webkit-box-ordinal-group: 1; - -webkit-order: 0; - -ms-flex-order: 0; - order: 0; - } - .order-lg-1 { - -webkit-box-ordinal-group: 2; - -webkit-order: 1; - -ms-flex-order: 1; - order: 1; - } - .order-lg-2 { - -webkit-box-ordinal-group: 3; - -webkit-order: 2; - -ms-flex-order: 2; - order: 2; - } - .order-lg-3 { - -webkit-box-ordinal-group: 4; - -webkit-order: 3; - -ms-flex-order: 3; - order: 3; - } - .order-lg-4 { - -webkit-box-ordinal-group: 5; - -webkit-order: 4; - -ms-flex-order: 4; - order: 4; - } - .order-lg-5 { - -webkit-box-ordinal-group: 6; - -webkit-order: 5; - -ms-flex-order: 5; - order: 5; - } - .order-lg-6 { - -webkit-box-ordinal-group: 7; - -webkit-order: 6; - -ms-flex-order: 6; - order: 6; - } - .order-lg-7 { - -webkit-box-ordinal-group: 8; - -webkit-order: 7; - -ms-flex-order: 7; - order: 7; - } - .order-lg-8 { - -webkit-box-ordinal-group: 9; - -webkit-order: 8; - -ms-flex-order: 8; - order: 8; - } - .order-lg-9 { - -webkit-box-ordinal-group: 10; - -webkit-order: 9; - -ms-flex-order: 9; - order: 9; - } - .order-lg-10 { - -webkit-box-ordinal-group: 11; - -webkit-order: 10; - -ms-flex-order: 10; - order: 10; - } - .order-lg-11 { - -webkit-box-ordinal-group: 12; - -webkit-order: 11; - -ms-flex-order: 11; - order: 11; - } - .order-lg-12 { - -webkit-box-ordinal-group: 13; - -webkit-order: 12; - -ms-flex-order: 12; - order: 12; - } - .offset-lg-0 { - margin-left: 0; - } - .offset-lg-1 { - margin-left: 8.33333%; - } - .offset-lg-2 { - margin-left: 16.66667%; - } - .offset-lg-3 { - margin-left: 25%; - } - .offset-lg-4 { - margin-left: 33.33333%; - } - .offset-lg-5 { - margin-left: 41.66667%; - } - .offset-lg-6 { - margin-left: 50%; - } - .offset-lg-7 { - margin-left: 58.33333%; - } - .offset-lg-8 { - margin-left: 66.66667%; - } - .offset-lg-9 { - margin-left: 75%; - } - .offset-lg-10 { - margin-left: 83.33333%; - } - .offset-lg-11 { - margin-left: 91.66667%; - } -} - -@media (min-width: 1200px) { - .col-xl { - -webkit-flex-basis: 0; - -ms-flex-preferred-size: 0; - flex-basis: 0; - -webkit-box-flex: 1; - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; - max-width: 100%; - } - .col-xl-auto { - -webkit-box-flex: 0; - -webkit-flex: 0 0 auto; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - .col-xl-1 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 8.33333%; - -ms-flex: 0 0 8.33333%; - flex: 0 0 8.33333%; - max-width: 8.33333%; - } - .col-xl-2 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 16.66667%; - -ms-flex: 0 0 16.66667%; - flex: 0 0 16.66667%; - max-width: 16.66667%; - } - .col-xl-3 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 25%; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; - } - .col-xl-4 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 33.33333%; - -ms-flex: 0 0 33.33333%; - flex: 0 0 33.33333%; - max-width: 33.33333%; - } - .col-xl-5 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 41.66667%; - -ms-flex: 0 0 41.66667%; - flex: 0 0 41.66667%; - max-width: 41.66667%; - } - .col-xl-6 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 50%; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; - } - .col-xl-7 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 58.33333%; - -ms-flex: 0 0 58.33333%; - flex: 0 0 58.33333%; - max-width: 58.33333%; - } - .col-xl-8 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 66.66667%; - -ms-flex: 0 0 66.66667%; - flex: 0 0 66.66667%; - max-width: 66.66667%; - } - .col-xl-9 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 75%; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; - } - .col-xl-10 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 83.33333%; - -ms-flex: 0 0 83.33333%; - flex: 0 0 83.33333%; - max-width: 83.33333%; - } - .col-xl-11 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 91.66667%; - -ms-flex: 0 0 91.66667%; - flex: 0 0 91.66667%; - max-width: 91.66667%; - } - .col-xl-12 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 100%; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; - } - .order-xl-first { - -webkit-box-ordinal-group: 0; - -webkit-order: -1; - -ms-flex-order: -1; - order: -1; - } - .order-xl-last { - -webkit-box-ordinal-group: 14; - -webkit-order: 13; - -ms-flex-order: 13; - order: 13; - } - .order-xl-0 { - -webkit-box-ordinal-group: 1; - -webkit-order: 0; - -ms-flex-order: 0; - order: 0; - } - .order-xl-1 { - -webkit-box-ordinal-group: 2; - -webkit-order: 1; - -ms-flex-order: 1; - order: 1; - } - .order-xl-2 { - -webkit-box-ordinal-group: 3; - -webkit-order: 2; - -ms-flex-order: 2; - order: 2; - } - .order-xl-3 { - -webkit-box-ordinal-group: 4; - -webkit-order: 3; - -ms-flex-order: 3; - order: 3; - } - .order-xl-4 { - -webkit-box-ordinal-group: 5; - -webkit-order: 4; - -ms-flex-order: 4; - order: 4; - } - .order-xl-5 { - -webkit-box-ordinal-group: 6; - -webkit-order: 5; - -ms-flex-order: 5; - order: 5; - } - .order-xl-6 { - -webkit-box-ordinal-group: 7; - -webkit-order: 6; - -ms-flex-order: 6; - order: 6; - } - .order-xl-7 { - -webkit-box-ordinal-group: 8; - -webkit-order: 7; - -ms-flex-order: 7; - order: 7; - } - .order-xl-8 { - -webkit-box-ordinal-group: 9; - -webkit-order: 8; - -ms-flex-order: 8; - order: 8; - } - .order-xl-9 { - -webkit-box-ordinal-group: 10; - -webkit-order: 9; - -ms-flex-order: 9; - order: 9; - } - .order-xl-10 { - -webkit-box-ordinal-group: 11; - -webkit-order: 10; - -ms-flex-order: 10; - order: 10; - } - .order-xl-11 { - -webkit-box-ordinal-group: 12; - -webkit-order: 11; - -ms-flex-order: 11; - order: 11; - } - .order-xl-12 { - -webkit-box-ordinal-group: 13; - -webkit-order: 12; - -ms-flex-order: 12; - order: 12; - } - .offset-xl-0 { - margin-left: 0; - } - .offset-xl-1 { - margin-left: 8.33333%; - } - .offset-xl-2 { - margin-left: 16.66667%; - } - .offset-xl-3 { - margin-left: 25%; - } - .offset-xl-4 { - margin-left: 33.33333%; - } - .offset-xl-5 { - margin-left: 41.66667%; - } - .offset-xl-6 { - margin-left: 50%; - } - .offset-xl-7 { - margin-left: 58.33333%; - } - .offset-xl-8 { - margin-left: 66.66667%; - } - .offset-xl-9 { - margin-left: 75%; - } - .offset-xl-10 { - margin-left: 83.33333%; - } - .offset-xl-11 { - margin-left: 91.66667%; - } -} - -.table { - width: 100%; - margin-bottom: 1rem; - color: #515151; -} -.table th, -.table td { - padding: 0.75rem; - vertical-align: top; - border-top: 1px solid #dee2e6; -} -.table thead th { - vertical-align: bottom; - border-bottom: 2px solid #dee2e6; -} -.table tbody + tbody { - border-top: 2px solid #dee2e6; -} - -.table-sm th, -.table-sm td { - padding: 0.3rem; -} - -.table-bordered { - border: 1px solid #dee2e6; -} -.table-bordered th, -.table-bordered td { - border: 1px solid #dee2e6; -} -.table-bordered thead th, -.table-bordered thead td { - border-bottom-width: 2px; -} - -.table-borderless th, -.table-borderless td, -.table-borderless thead th, -.table-borderless tbody + tbody { - border: 0; -} - -.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(0, 0, 0, 0.05); -} - -.table-hover tbody tr:hover { - color: #515151; - background-color: rgba(0, 0, 0, 0.075); -} - -.table-primary, -.table-primary > th, -.table-primary > td { - background-color: #c9ddfe; -} - -.table-primary th, -.table-primary td, -.table-primary thead th, -.table-primary tbody + tbody { - border-color: #9bbffd; -} - -.table-hover .table-primary:hover { - background-color: #b0cdfe; -} -.table-hover .table-primary:hover > td, -.table-hover .table-primary:hover > th { - background-color: #b0cdfe; -} - -.table-secondary, -.table-secondary > th, -.table-secondary > td { - background-color: #d8dbe1; -} - -.table-secondary th, -.table-secondary td, -.table-secondary thead th, -.table-secondary tbody + tbody { - border-color: #b6bcc7; -} - -.table-hover .table-secondary:hover { - background-color: #caced6; -} -.table-hover .table-secondary:hover > td, -.table-hover .table-secondary:hover > th { - background-color: #caced6; -} - -.table-success, -.table-success > th, -.table-success > td { - background-color: #c0e7cb; -} - -.table-success th, -.table-success td, -.table-success thead th, -.table-success tbody + tbody { - border-color: #89d39f; -} - -.table-hover .table-success:hover { - background-color: #aee0bc; -} -.table-hover .table-success:hover > td, -.table-hover .table-success:hover > th { - background-color: #aee0bc; -} - -.table-info, -.table-info > th, -.table-info > td { - background-color: #dec9fe; -} - -.table-info th, -.table-info td, -.table-info thead th, -.table-info tbody + tbody { - border-color: #c29bfd; -} - -.table-hover .table-info:hover { - background-color: #cfb0fe; -} -.table-hover .table-info:hover > td, -.table-hover .table-info:hover > th { - background-color: #cfb0fe; -} - -.table-warning, -.table-warning > th, -.table-warning > td { - background-color: #fee8c9; -} - -.table-warning th, -.table-warning td, -.table-warning thead th, -.table-warning tbody + tbody { - border-color: #fdd59b; -} - -.table-hover .table-warning:hover { - background-color: #feddb0; -} -.table-hover .table-warning:hover > td, -.table-hover .table-warning:hover > th { - background-color: #feddb0; -} - -.table-danger, -.table-danger > th, -.table-danger > td { - background-color: #fecac9; -} - -.table-danger th, -.table-danger td, -.table-danger thead th, -.table-danger tbody + tbody { - border-color: #fd9c9b; -} - -.table-hover .table-danger:hover { - background-color: #feb1b0; -} -.table-hover .table-danger:hover > td, -.table-hover .table-danger:hover > th { - background-color: #feb1b0; -} - -.table-light, -.table-light > th, -.table-light > td { - background-color: #fdfdfe; -} - -.table-light th, -.table-light td, -.table-light thead th, -.table-light tbody + tbody { - border-color: #fbfcfc; -} - -.table-hover .table-light:hover { - background-color: #ececf6; -} -.table-hover .table-light:hover > td, -.table-hover .table-light:hover > th { - background-color: #ececf6; -} - -.table-dark, -.table-dark > th, -.table-dark > td { - background-color: #c0c1c4; -} - -.table-dark th, -.table-dark td, -.table-dark thead th, -.table-dark tbody + tbody { - border-color: #8a8d92; -} - -.table-hover .table-dark:hover { - background-color: #b3b4b8; -} -.table-hover .table-dark:hover > td, -.table-hover .table-dark:hover > th { - background-color: #b3b4b8; -} - -.table-active, -.table-active > th, -.table-active > td { - background-color: rgba(0, 0, 0, 0.075); -} - -.table-hover .table-active:hover { - background-color: rgba(0, 0, 0, 0.075); -} -.table-hover .table-active:hover > td, -.table-hover .table-active:hover > th { - background-color: rgba(0, 0, 0, 0.075); -} - -.table .thead-dark th { - color: #fff; - background-color: #343a40; - border-color: #454d55; -} - -.table .thead-light th { - color: #495057; - background-color: #e9ecef; - border-color: #dee2e6; -} - -.table-dark { - color: #fff; - background-color: #343a40; -} -.table-dark th, -.table-dark td, -.table-dark thead th { - border-color: #454d55; -} -.table-dark.table-bordered { - border: 0; -} -.table-dark.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(255, 255, 255, 0.05); -} -.table-dark.table-hover tbody tr:hover { - color: #fff; - background-color: rgba(255, 255, 255, 0.075); -} - -@media (max-width: 575.98px) { - .table-responsive-sm { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - } - .table-responsive-sm > .table-bordered { - border: 0; - } -} - -@media (max-width: 767.98px) { - .table-responsive-md { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - } - .table-responsive-md > .table-bordered { - border: 0; - } -} - -@media (max-width: 991.98px) { - .table-responsive-lg { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - } - .table-responsive-lg > .table-bordered { - border: 0; - } -} - -@media (max-width: 1199.98px) { - .table-responsive-xl { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - } - .table-responsive-xl > .table-bordered { - border: 0; - } -} - -.table-responsive { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; -} -.table-responsive > .table-bordered { - border: 0; -} - -.form-control { - display: block; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - padding: 0.375rem 0.75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - background-color: #fff; - background-clip: padding-box; - border: 1px solid #ced4da; - border-radius: 0; - -webkit-transition: - border-color 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; - transition: - border-color 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; - -o-transition: - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out; - transition: - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out; - transition: - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; -} -@media (prefers-reduced-motion: reduce) { - .form-control { - -webkit-transition: none; - -o-transition: none; - transition: none; - } -} -.form-control::-ms-expand { - background-color: transparent; - border: 0; -} -.form-control:focus { - color: #495057; - background-color: #fff; - border: 1px solid var(--color-light-green); - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.25); -} -.form-control::-webkit-input-placeholder { - color: #6c757d; - opacity: 1; -} -.form-control::-moz-placeholder { - color: #6c757d; - opacity: 1; -} -.form-control:-ms-input-placeholder { - color: #6c757d; - opacity: 1; -} -.form-control::-ms-input-placeholder { - color: #6c757d; - opacity: 1; -} -.form-control::placeholder { - color: #6c757d; - opacity: 1; -} -.form-control:disabled, -.form-control[readonly] { - background-color: #e9ecef; - opacity: 1; -} - -select.form-control:focus::-ms-value { - color: #495057; - background-color: #fff; -} - -.form-control-file, -.form-control-range { - display: block; - width: 100%; -} - -.col-form-label { - padding-top: calc(0.375rem + 1px); - padding-bottom: calc(0.375rem + 1px); - margin-bottom: 0; - font-size: inherit; - line-height: 1.5; -} - -.col-form-label-lg { - padding-top: calc(0.5rem + 1px); - padding-bottom: calc(0.5rem + 1px); - font-size: 1.25rem; - line-height: 1.5; -} - -.col-form-label-sm { - padding-top: calc(0.25rem + 1px); - padding-bottom: calc(0.25rem + 1px); - font-size: 0.875rem; - line-height: 1.5; -} - -.form-control-plaintext { - display: block; - width: 100%; - padding-top: 0.375rem; - padding-bottom: 0.375rem; - margin-bottom: 0; - line-height: 1.5; - color: #515151; - background-color: transparent; - border: solid transparent; - border-width: 1px 0; -} -.form-control-plaintext.form-control-sm, -.form-control-plaintext.form-control-lg { - padding-right: 0; - padding-left: 0; -} - -.form-control-sm { - height: calc(1.5em + 0.5rem + 2px); - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; -} - -.form-control-lg { - height: calc(1.5em + 1rem + 2px); - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; -} - -select.form-control[size], -select.form-control[multiple] { - height: auto; -} - -textarea.form-control { - height: auto; -} - -/* .form-group { - margin-bottom: 1rem; } */ - -.form-text { - display: block; - margin-top: 0.25rem; -} - -/* .form-row { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - margin-right: -5px; - margin-left: -5px; } - .form-row > .col, - .form-row > [class*="col-"] { - padding-right: 5px; - padding-left: 5px; } - -.form-check { - position: relative; - display: block; - padding-left: 1.25rem; } - -.form-check-input { - position: absolute; - margin-top: 0.3rem; - margin-left: -1.25rem; } - .form-check-input:disabled ~ .form-check-label { - color: #6c757d; } - -.form-check-label { - margin-bottom: 0; } - -.form-check-inline { - display: -webkit-inline-box; - display: -webkit-inline-flex; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - padding-left: 0; - margin-right: 0.75rem; } - .form-check-inline .form-check-input { - position: static; - margin-top: 0; - margin-right: 0.3125rem; - margin-left: 0; } - */ -.valid-feedback { - display: none; - width: 100%; - margin-top: 0.25rem; - font-size: 80%; - color: #1dab47; -} - -.valid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: 0.25rem 0.5rem; - margin-top: 0.1rem; - font-size: 0.875rem; - line-height: 1.5; - color: #fff; - background-color: rgba(29, 171, 71, 0.9); - border-radius: 0; -} - -.was-validated .form-control:valid, -.form-control.is-valid { - border-color: #1dab47; - padding-right: calc(1.5em + 0.75rem); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%231DAB47' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: center right calc(0.375em + 0.1875rem); - -webkit-background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); -} -.was-validated .form-control:valid:focus, -.form-control.is-valid:focus { - border-color: #1dab47; - -webkit-box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.25); - box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.25); -} -.was-validated .form-control:valid ~ .valid-feedback, -.was-validated .form-control:valid ~ .valid-tooltip, -.form-control.is-valid ~ .valid-feedback, -.form-control.is-valid ~ .valid-tooltip { - display: block; -} - -.was-validated textarea.form-control:valid, -textarea.form-control.is-valid { - padding-right: calc(1.5em + 0.75rem); - background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); -} - -.was-validated .custom-select:valid, -.custom-select.is-valid { - border-color: #1dab47; - padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem); - background: - url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") - no-repeat right 0.75rem center/8px 10px, - url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%231DAB47' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") - #fff no-repeat center right 1.75rem / calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); -} -.was-validated .custom-select:valid:focus, -.custom-select.is-valid:focus { - border-color: #1dab47; - -webkit-box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.25); - box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.25); -} -.was-validated .custom-select:valid ~ .valid-feedback, -.was-validated .custom-select:valid ~ .valid-tooltip, -.custom-select.is-valid ~ .valid-feedback, -.custom-select.is-valid ~ .valid-tooltip { - display: block; -} - -.was-validated .form-control-file:valid ~ .valid-feedback, -.was-validated .form-control-file:valid ~ .valid-tooltip, -.form-control-file.is-valid ~ .valid-feedback, -.form-control-file.is-valid ~ .valid-tooltip { - display: block; -} - -.was-validated .form-check-input:valid ~ .form-check-label, -.form-check-input.is-valid ~ .form-check-label { - color: #1dab47; -} - -.was-validated .form-check-input:valid ~ .valid-feedback, -.was-validated .form-check-input:valid ~ .valid-tooltip, -.form-check-input.is-valid ~ .valid-feedback, -.form-check-input.is-valid ~ .valid-tooltip { - display: block; -} - -.was-validated .custom-control-input:valid ~ .custom-control-label, -.custom-control-input.is-valid ~ .custom-control-label { - color: #1dab47; -} -.was-validated .custom-control-input:valid ~ .custom-control-label::before, -.custom-control-input.is-valid ~ .custom-control-label::before { - border-color: #1dab47; -} - -.was-validated .custom-control-input:valid ~ .valid-feedback, -.was-validated .custom-control-input:valid ~ .valid-tooltip, -.custom-control-input.is-valid ~ .valid-feedback, -.custom-control-input.is-valid ~ .valid-tooltip { - display: block; -} - -.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, -.custom-control-input.is-valid:checked ~ .custom-control-label::before { - border-color: #24d759; - background-color: #24d759; -} - -.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, -.custom-control-input.is-valid:focus ~ .custom-control-label::before { - -webkit-box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.25); - box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.25); -} - -.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, -.custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before { - border-color: #1dab47; -} - -.was-validated .custom-file-input:valid ~ .custom-file-label, -.custom-file-input.is-valid ~ .custom-file-label { - border-color: #1dab47; -} - -.was-validated .custom-file-input:valid ~ .valid-feedback, -.was-validated .custom-file-input:valid ~ .valid-tooltip, -.custom-file-input.is-valid ~ .valid-feedback, -.custom-file-input.is-valid ~ .valid-tooltip { - display: block; -} - -.was-validated .custom-file-input:valid:focus ~ .custom-file-label, -.custom-file-input.is-valid:focus ~ .custom-file-label { - border-color: #1dab47; - -webkit-box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.25); - box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.25); -} - -.invalid-feedback { - display: none; - width: 100%; - margin-top: 0.25rem; - font-size: 80%; - color: #fc413f; -} - -.invalid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: 0.25rem 0.5rem; - margin-top: 0.1rem; - font-size: 0.875rem; - line-height: 1.5; - color: #fff; - background-color: rgba(252, 65, 63, 0.9); - border-radius: 0; -} - -.was-validated .form-control:invalid, -.form-control.is-invalid { - border-color: #fc413f; - padding-right: calc(1.5em + 0.75rem); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23FC413F' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23FC413F' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"); - background-repeat: no-repeat; - background-position: center right calc(0.375em + 0.1875rem); - -webkit-background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); -} -.was-validated .form-control:invalid:focus, -.form-control.is-invalid:focus { - border-color: #fc413f; - -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.25); - box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.25); -} -.was-validated .form-control:invalid ~ .invalid-feedback, -.was-validated .form-control:invalid ~ .invalid-tooltip, -.form-control.is-invalid ~ .invalid-feedback, -.form-control.is-invalid ~ .invalid-tooltip { - display: block; -} - -.was-validated textarea.form-control:invalid, -textarea.form-control.is-invalid { - padding-right: calc(1.5em + 0.75rem); - background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); -} - -.was-validated .custom-select:invalid, -.custom-select.is-invalid { - border-color: #fc413f; - padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem); - background: - url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") - no-repeat right 0.75rem center/8px 10px, - url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23FC413F' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23FC413F' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") - #fff no-repeat center right 1.75rem / calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); -} -.was-validated .custom-select:invalid:focus, -.custom-select.is-invalid:focus { - border-color: #fc413f; - -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.25); - box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.25); -} -.was-validated .custom-select:invalid ~ .invalid-feedback, -.was-validated .custom-select:invalid ~ .invalid-tooltip, -.custom-select.is-invalid ~ .invalid-feedback, -.custom-select.is-invalid ~ .invalid-tooltip { - display: block; -} - -.was-validated .form-control-file:invalid ~ .invalid-feedback, -.was-validated .form-control-file:invalid ~ .invalid-tooltip, -.form-control-file.is-invalid ~ .invalid-feedback, -.form-control-file.is-invalid ~ .invalid-tooltip { - display: block; -} - -.was-validated .form-check-input:invalid ~ .form-check-label, -.form-check-input.is-invalid ~ .form-check-label { - color: #fc413f; -} - -.was-validated .form-check-input:invalid ~ .invalid-feedback, -.was-validated .form-check-input:invalid ~ .invalid-tooltip, -.form-check-input.is-invalid ~ .invalid-feedback, -.form-check-input.is-invalid ~ .invalid-tooltip { - display: block; -} - -.was-validated .custom-control-input:invalid ~ .custom-control-label, -.custom-control-input.is-invalid ~ .custom-control-label { - color: #fc413f; -} -.was-validated .custom-control-input:invalid ~ .custom-control-label::before, -.custom-control-input.is-invalid ~ .custom-control-label::before { - border-color: #fc413f; -} - -.was-validated .custom-control-input:invalid ~ .invalid-feedback, -.was-validated .custom-control-input:invalid ~ .invalid-tooltip, -.custom-control-input.is-invalid ~ .invalid-feedback, -.custom-control-input.is-invalid ~ .invalid-tooltip { - display: block; -} - -.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, -.custom-control-input.is-invalid:checked ~ .custom-control-label::before { - border-color: #fd7371; - background-color: #fd7371; -} - -.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, -.custom-control-input.is-invalid:focus ~ .custom-control-label::before { - -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.25); - box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.25); -} - -.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, -.custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before { - border-color: #fc413f; -} - -.was-validated .custom-file-input:invalid ~ .custom-file-label, -.custom-file-input.is-invalid ~ .custom-file-label { - border-color: #fc413f; -} - -.was-validated .custom-file-input:invalid ~ .invalid-feedback, -.was-validated .custom-file-input:invalid ~ .invalid-tooltip, -.custom-file-input.is-invalid ~ .invalid-feedback, -.custom-file-input.is-invalid ~ .invalid-tooltip { - display: block; -} - -.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, -.custom-file-input.is-invalid:focus ~ .custom-file-label { - border-color: #fc413f; - -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.25); - box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.25); -} - -.form-inline { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-flow: row wrap; - -ms-flex-flow: row wrap; - flex-flow: row wrap; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; -} -.form-inline .form-check { - width: 100%; -} -@media (min-width: 576px) { - .form-inline label { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - margin-bottom: 0; - } - .form-inline .form-group { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 0; - -webkit-flex: 0 0 auto; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-flow: row wrap; - -ms-flex-flow: row wrap; - flex-flow: row wrap; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - margin-bottom: 0; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .form-control-plaintext { - display: inline-block; - } - .form-inline .input-group, - .form-inline .custom-select { - width: auto; - } - .form-inline .form-check { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - width: auto; - padding-left: 0; - } - .form-inline .form-check-input { - position: relative; - -webkit-flex-shrink: 0; - -ms-flex-negative: 0; - flex-shrink: 0; - margin-top: 0; - margin-right: 0.25rem; - margin-left: 0; - } - .form-inline .custom-control { - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - } - .form-inline .custom-control-label { - margin-bottom: 0; - } -} - -.btn { - display: inline-block; - font-weight: 400; - color: #515151; - text-align: center; - vertical-align: middle; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-color: transparent; - border: 1px solid transparent; - padding: 0.375rem 0.75rem; - font-size: 1rem; - line-height: 1.5; - border-radius: 0; - -webkit-transition: - color 0.15s ease-in-out, - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; - transition: - color 0.15s ease-in-out, - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; - -o-transition: - color 0.15s ease-in-out, - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out; - transition: - color 0.15s ease-in-out, - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out; - transition: - color 0.15s ease-in-out, - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; -} -@media (prefers-reduced-motion: reduce) { - .btn { - -webkit-transition: none; - -o-transition: none; - transition: none; - } -} -.btn:hover { - color: #515151; - text-decoration: none; -} -.btn:focus, -.btn.focus { - outline: 0; - -webkit-box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.25); - box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.25); -} -.btn.disabled, -.btn:disabled { - opacity: 0.65; -} - -a.btn.disabled, -fieldset:disabled a.btn { - pointer-events: none; -} - -.btn-primary { - color: #fff; - background-color: #3f84fc; - border-color: #3f84fc; -} -.btn-primary:hover { - color: #fff; - background-color: #196cfb; - border-color: #0d64fb; -} -.btn-primary:focus, -.btn-primary.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(92, 150, 252, 0.5); - box-shadow: 0 0 0 0.2rem rgba(92, 150, 252, 0.5); -} -.btn-primary.disabled, -.btn-primary:disabled { - color: #fff; - background-color: #3f84fc; - border-color: #3f84fc; -} -.btn-primary:not(:disabled):not(.disabled):active, -.btn-primary:not(:disabled):not(.disabled).active, -.show > .btn-primary.dropdown-toggle { - color: #fff; - background-color: #0d64fb; - border-color: #045df7; -} -.btn-primary:not(:disabled):not(.disabled):active:focus, -.btn-primary:not(:disabled):not(.disabled).active:focus, -.show > .btn-primary.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(92, 150, 252, 0.5); - box-shadow: 0 0 0 0.2rem rgba(92, 150, 252, 0.5); -} - -.btn-secondary { - color: #fff; - background-color: #727f94; - border-color: #727f94; -} -.btn-secondary:hover { - color: #fff; - background-color: #616c7f; - border-color: #5b6678; -} -.btn-secondary:focus, -.btn-secondary.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(135, 146, 164, 0.5); - box-shadow: 0 0 0 0.2rem rgba(135, 146, 164, 0.5); -} -.btn-secondary.disabled, -.btn-secondary:disabled { - color: #fff; - background-color: #727f94; - border-color: #727f94; -} -.btn-secondary:not(:disabled):not(.disabled):active, -.btn-secondary:not(:disabled):not(.disabled).active, -.show > .btn-secondary.dropdown-toggle { - color: #fff; - background-color: #5b6678; - border-color: #566071; -} -.btn-secondary:not(:disabled):not(.disabled):active:focus, -.btn-secondary:not(:disabled):not(.disabled).active:focus, -.show > .btn-secondary.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(135, 146, 164, 0.5); - box-shadow: 0 0 0 0.2rem rgba(135, 146, 164, 0.5); -} - -.btn-success { - color: #fff; - background-color: #1dab47; - border-color: #1dab47; -} -.btn-success:hover { - color: #fff; - background-color: #178a39; - border-color: #167f35; -} -.btn-success:focus, -.btn-success.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(63, 184, 99, 0.5); - box-shadow: 0 0 0 0.2rem rgba(63, 184, 99, 0.5); -} -.btn-success.disabled, -.btn-success:disabled { - color: #fff; - background-color: #1dab47; - border-color: #1dab47; -} -.btn-success:not(:disabled):not(.disabled):active, -.btn-success:not(:disabled):not(.disabled).active, -.show > .btn-success.dropdown-toggle { - color: #fff; - background-color: #167f35; - border-color: #147430; -} -.btn-success:not(:disabled):not(.disabled):active:focus, -.btn-success:not(:disabled):not(.disabled).active:focus, -.show > .btn-success.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(63, 184, 99, 0.5); - box-shadow: 0 0 0 0.2rem rgba(63, 184, 99, 0.5); -} - -.btn-info { - color: #fff; - background-color: #8a3ffc; - border-color: #8a3ffc; -} -.btn-info:hover { - color: #fff; - background-color: #7319fb; - border-color: #6b0dfb; -} -.btn-info:focus, -.btn-info.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(156, 92, 252, 0.5); - box-shadow: 0 0 0 0.2rem rgba(156, 92, 252, 0.5); -} -.btn-info.disabled, -.btn-info:disabled { - color: #fff; - background-color: #8a3ffc; - border-color: #8a3ffc; -} -.btn-info:not(:disabled):not(.disabled):active, -.btn-info:not(:disabled):not(.disabled).active, -.show > .btn-info.dropdown-toggle { - color: #fff; - background-color: #6b0dfb; - border-color: #6504f7; -} -.btn-info:not(:disabled):not(.disabled):active:focus, -.btn-info:not(:disabled):not(.disabled).active:focus, -.show > .btn-info.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(156, 92, 252, 0.5); - box-shadow: 0 0 0 0.2rem rgba(156, 92, 252, 0.5); -} - -.btn-warning { - color: #212529; - background-color: #fcae3f; - border-color: #fcae3f; -} -.btn-warning:hover { - color: #212529; - background-color: #fb9e19; - border-color: #fb990d; -} -.btn-warning:focus, -.btn-warning.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(219, 153, 60, 0.5); - box-shadow: 0 0 0 0.2rem rgba(219, 153, 60, 0.5); -} -.btn-warning.disabled, -.btn-warning:disabled { - color: #212529; - background-color: #fcae3f; - border-color: #fcae3f; -} -.btn-warning:not(:disabled):not(.disabled):active, -.btn-warning:not(:disabled):not(.disabled).active, -.show > .btn-warning.dropdown-toggle { - color: #212529; - background-color: #fb990d; - border-color: #f79304; -} -.btn-warning:not(:disabled):not(.disabled):active:focus, -.btn-warning:not(:disabled):not(.disabled).active:focus, -.show > .btn-warning.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(219, 153, 60, 0.5); - box-shadow: 0 0 0 0.2rem rgba(219, 153, 60, 0.5); -} - -.btn-danger { - color: #fff; - background-color: #fc413f; - border-color: #fc413f; -} -.btn-danger:hover { - color: #fff; - background-color: #fb1c19; - border-color: #fb0f0d; -} -.btn-danger:focus, -.btn-danger.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 94, 92, 0.5); - box-shadow: 0 0 0 0.2rem rgba(252, 94, 92, 0.5); -} -.btn-danger.disabled, -.btn-danger:disabled { - color: #fff; - background-color: #fc413f; - border-color: #fc413f; -} -.btn-danger:not(:disabled):not(.disabled):active, -.btn-danger:not(:disabled):not(.disabled).active, -.show > .btn-danger.dropdown-toggle { - color: #fff; - background-color: #fb0f0d; - border-color: #f70604; -} -.btn-danger:not(:disabled):not(.disabled):active:focus, -.btn-danger:not(:disabled):not(.disabled).active:focus, -.show > .btn-danger.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 94, 92, 0.5); - box-shadow: 0 0 0 0.2rem rgba(252, 94, 92, 0.5); -} - -.btn-light { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa; -} -.btn-light:hover { - color: #212529; - background-color: #e2e6ea; - border-color: #dae0e5; -} -.btn-light:focus, -.btn-light.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); - box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); -} -.btn-light.disabled, -.btn-light:disabled { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa; -} -.btn-light:not(:disabled):not(.disabled):active, -.btn-light:not(:disabled):not(.disabled).active, -.show > .btn-light.dropdown-toggle { - color: #212529; - background-color: #dae0e5; - border-color: #d3d9df; -} -.btn-light:not(:disabled):not(.disabled):active:focus, -.btn-light:not(:disabled):not(.disabled).active:focus, -.show > .btn-light.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); - box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); -} - -.btn-dark { - color: #fff; - background-color: #1e232d; - border-color: #1e232d; -} -.btn-dark:hover { - color: #fff; - background-color: #0f1116; - border-color: #0a0b0e; -} -.btn-dark:focus, -.btn-dark.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(64, 68, 77, 0.5); - box-shadow: 0 0 0 0.2rem rgba(64, 68, 77, 0.5); -} -.btn-dark.disabled, -.btn-dark:disabled { - color: #fff; - background-color: #1e232d; - border-color: #1e232d; -} -.btn-dark:not(:disabled):not(.disabled):active, -.btn-dark:not(:disabled):not(.disabled).active, -.show > .btn-dark.dropdown-toggle { - color: #fff; - background-color: #0a0b0e; - border-color: #050507; -} -.btn-dark:not(:disabled):not(.disabled):active:focus, -.btn-dark:not(:disabled):not(.disabled).active:focus, -.show > .btn-dark.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(64, 68, 77, 0.5); - box-shadow: 0 0 0 0.2rem rgba(64, 68, 77, 0.5); -} - -.btn-outline-primary { - color: #3f84fc; - border-color: #3f84fc; -} -.btn-outline-primary:hover { - color: #fff; - background-color: #3f84fc; - border-color: #3f84fc; -} -.btn-outline-primary:focus, -.btn-outline-primary.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.5); - box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.5); -} -.btn-outline-primary.disabled, -.btn-outline-primary:disabled { - color: #3f84fc; - background-color: transparent; -} -.btn-outline-primary:not(:disabled):not(.disabled):active, -.btn-outline-primary:not(:disabled):not(.disabled).active, -.show > .btn-outline-primary.dropdown-toggle { - color: #fff; - background-color: #3f84fc; - border-color: #3f84fc; -} -.btn-outline-primary:not(:disabled):not(.disabled):active:focus, -.btn-outline-primary:not(:disabled):not(.disabled).active:focus, -.show > .btn-outline-primary.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.5); - box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.5); -} - -.btn-outline-secondary { - color: #727f94; - border-color: #727f94; -} -.btn-outline-secondary:hover { - color: #fff; - background-color: #727f94; - border-color: #727f94; -} -.btn-outline-secondary:focus, -.btn-outline-secondary.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(114, 127, 148, 0.5); - box-shadow: 0 0 0 0.2rem rgba(114, 127, 148, 0.5); -} -.btn-outline-secondary.disabled, -.btn-outline-secondary:disabled { - color: #727f94; - background-color: transparent; -} -.btn-outline-secondary:not(:disabled):not(.disabled):active, -.btn-outline-secondary:not(:disabled):not(.disabled).active, -.show > .btn-outline-secondary.dropdown-toggle { - color: #fff; - background-color: #727f94; - border-color: #727f94; -} -.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, -.btn-outline-secondary:not(:disabled):not(.disabled).active:focus, -.show > .btn-outline-secondary.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(114, 127, 148, 0.5); - box-shadow: 0 0 0 0.2rem rgba(114, 127, 148, 0.5); -} - -.btn-outline-success { - color: #1dab47; - border-color: #1dab47; -} -.btn-outline-success:hover { - color: #fff; - background-color: #1dab47; - border-color: #1dab47; -} -.btn-outline-success:focus, -.btn-outline-success.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.5); - box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.5); -} -.btn-outline-success.disabled, -.btn-outline-success:disabled { - color: #1dab47; - background-color: transparent; -} -.btn-outline-success:not(:disabled):not(.disabled):active, -.btn-outline-success:not(:disabled):not(.disabled).active, -.show > .btn-outline-success.dropdown-toggle { - color: #fff; - background-color: #1dab47; - border-color: #1dab47; -} -.btn-outline-success:not(:disabled):not(.disabled):active:focus, -.btn-outline-success:not(:disabled):not(.disabled).active:focus, -.show > .btn-outline-success.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.5); - box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.5); -} - -.btn-outline-info { - color: #8a3ffc; - border-color: #8a3ffc; -} -.btn-outline-info:hover { - color: #fff; - background-color: #8a3ffc; - border-color: #8a3ffc; -} -.btn-outline-info:focus, -.btn-outline-info.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(138, 63, 252, 0.5); - box-shadow: 0 0 0 0.2rem rgba(138, 63, 252, 0.5); -} -.btn-outline-info.disabled, -.btn-outline-info:disabled { - color: #8a3ffc; - background-color: transparent; -} -.btn-outline-info:not(:disabled):not(.disabled):active, -.btn-outline-info:not(:disabled):not(.disabled).active, -.show > .btn-outline-info.dropdown-toggle { - color: #fff; - background-color: #8a3ffc; - border-color: #8a3ffc; -} -.btn-outline-info:not(:disabled):not(.disabled):active:focus, -.btn-outline-info:not(:disabled):not(.disabled).active:focus, -.show > .btn-outline-info.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(138, 63, 252, 0.5); - box-shadow: 0 0 0 0.2rem rgba(138, 63, 252, 0.5); -} - -.btn-outline-warning { - color: #fcae3f; - border-color: #fcae3f; -} -.btn-outline-warning:hover { - color: #212529; - background-color: #fcae3f; - border-color: #fcae3f; -} -.btn-outline-warning:focus, -.btn-outline-warning.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 174, 63, 0.5); - box-shadow: 0 0 0 0.2rem rgba(252, 174, 63, 0.5); -} -.btn-outline-warning.disabled, -.btn-outline-warning:disabled { - color: #fcae3f; - background-color: transparent; -} -.btn-outline-warning:not(:disabled):not(.disabled):active, -.btn-outline-warning:not(:disabled):not(.disabled).active, -.show > .btn-outline-warning.dropdown-toggle { - color: #212529; - background-color: #fcae3f; - border-color: #fcae3f; -} -.btn-outline-warning:not(:disabled):not(.disabled):active:focus, -.btn-outline-warning:not(:disabled):not(.disabled).active:focus, -.show > .btn-outline-warning.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 174, 63, 0.5); - box-shadow: 0 0 0 0.2rem rgba(252, 174, 63, 0.5); -} - -.btn-outline-danger { - color: #fc413f; - border-color: #fc413f; -} -.btn-outline-danger:hover { - color: #fff; - background-color: #fc413f; - border-color: #fc413f; -} -.btn-outline-danger:focus, -.btn-outline-danger.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.5); - box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.5); -} -.btn-outline-danger.disabled, -.btn-outline-danger:disabled { - color: #fc413f; - background-color: transparent; -} -.btn-outline-danger:not(:disabled):not(.disabled):active, -.btn-outline-danger:not(:disabled):not(.disabled).active, -.show > .btn-outline-danger.dropdown-toggle { - color: #fff; - background-color: #fc413f; - border-color: #fc413f; -} -.btn-outline-danger:not(:disabled):not(.disabled):active:focus, -.btn-outline-danger:not(:disabled):not(.disabled).active:focus, -.show > .btn-outline-danger.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.5); - box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.5); -} - -.btn-outline-light { - color: #f8f9fa; - border-color: #f8f9fa; -} -.btn-outline-light:hover { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa; -} -.btn-outline-light:focus, -.btn-outline-light.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); - box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); -} -.btn-outline-light.disabled, -.btn-outline-light:disabled { - color: #f8f9fa; - background-color: transparent; -} -.btn-outline-light:not(:disabled):not(.disabled):active, -.btn-outline-light:not(:disabled):not(.disabled).active, -.show > .btn-outline-light.dropdown-toggle { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa; -} -.btn-outline-light:not(:disabled):not(.disabled):active:focus, -.btn-outline-light:not(:disabled):not(.disabled).active:focus, -.show > .btn-outline-light.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); - box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); -} - -.btn-outline-dark { - color: #1e232d; - border-color: #1e232d; -} -.btn-outline-dark:hover { - color: #fff; - background-color: #1e232d; - border-color: #1e232d; -} -.btn-outline-dark:focus, -.btn-outline-dark.focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(30, 35, 45, 0.5); - box-shadow: 0 0 0 0.2rem rgba(30, 35, 45, 0.5); -} -.btn-outline-dark.disabled, -.btn-outline-dark:disabled { - color: #1e232d; - background-color: transparent; -} -.btn-outline-dark:not(:disabled):not(.disabled):active, -.btn-outline-dark:not(:disabled):not(.disabled).active, -.show > .btn-outline-dark.dropdown-toggle { - color: #fff; - background-color: #1e232d; - border-color: #1e232d; -} -.btn-outline-dark:not(:disabled):not(.disabled):active:focus, -.btn-outline-dark:not(:disabled):not(.disabled).active:focus, -.show > .btn-outline-dark.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(30, 35, 45, 0.5); - box-shadow: 0 0 0 0.2rem rgba(30, 35, 45, 0.5); -} - -.btn-link { - font-weight: 400; - color: #3f84fc; - text-decoration: none; -} -.btn-link:hover { - color: #0458eb; - text-decoration: underline; -} -.btn-link:focus, -.btn-link.focus { - text-decoration: underline; - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-link:disabled, -.btn-link.disabled { - color: #6c757d; - pointer-events: none; -} - -.btn-lg, -.btn-group-lg > .btn { - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; -} - -.btn-sm, -.btn-group-sm > .btn { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; -} - -.btn-block { - display: block; - width: 100%; -} -.btn-block + .btn-block { - margin-top: 0.5rem; -} - -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} - -.fade { - -webkit-transition: opacity 0.15s linear; - -o-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; -} -@media (prefers-reduced-motion: reduce) { - .fade { - -webkit-transition: none; - -o-transition: none; - transition: none; - } -} -.fade:not(.show) { - opacity: 0; -} - -.dropup, -.dropright, -.dropdown, -.dropleft { - position: relative; -} - -.dropdown-toggle { - white-space: nowrap; -} -.dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid; - border-right: 0.3em solid transparent; - border-bottom: 0; - border-left: 0.3em solid transparent; -} -.dropdown-toggle:empty::after { - margin-left: 0; -} - -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 10rem; - padding: 0.5rem 0; - margin: 0.125rem 0 0; - font-size: 1rem; - color: #515151; - text-align: left; - list-style: none; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 0; -} - -.dropdown-menu-left { - right: auto; - left: 0; -} - -.dropdown-menu-right { - right: 0; - left: auto; -} - -@media (min-width: 576px) { - .dropdown-menu-sm-left { - right: auto; - left: 0; - } - .dropdown-menu-sm-right { - right: 0; - left: auto; - } -} - -@media (min-width: 768px) { - .dropdown-menu-md-left { - right: auto; - left: 0; - } - .dropdown-menu-md-right { - right: 0; - left: auto; - } -} - -@media (min-width: 992px) { - .dropdown-menu-lg-left { - right: auto; - left: 0; - } - .dropdown-menu-lg-right { - right: 0; - left: auto; - } -} - -@media (min-width: 1200px) { - .dropdown-menu-xl-left { - right: auto; - left: 0; - } - .dropdown-menu-xl-right { - right: 0; - left: auto; - } -} - -.dropup .dropdown-menu { - top: auto; - bottom: 100%; - margin-top: 0; - margin-bottom: 0.125rem; -} - -.dropup .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0; - border-right: 0.3em solid transparent; - border-bottom: 0.3em solid; - border-left: 0.3em solid transparent; -} - -.dropup .dropdown-toggle:empty::after { - margin-left: 0; -} - -.dropright .dropdown-menu { - top: 0; - right: auto; - left: 100%; - margin-top: 0; - margin-left: 0.125rem; -} - -.dropright .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0; - border-bottom: 0.3em solid transparent; - border-left: 0.3em solid; -} - -.dropright .dropdown-toggle:empty::after { - margin-left: 0; -} - -.dropright .dropdown-toggle::after { - vertical-align: 0; -} - -.dropleft .dropdown-menu { - top: 0; - right: 100%; - left: auto; - margin-top: 0; - margin-right: 0.125rem; -} - -.dropleft .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; -} - -.dropleft .dropdown-toggle::after { - display: none; -} - -.dropleft .dropdown-toggle::before { - display: inline-block; - margin-right: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0.3em solid; - border-bottom: 0.3em solid transparent; -} - -.dropleft .dropdown-toggle:empty::after { - margin-left: 0; -} - -.dropleft .dropdown-toggle::before { - vertical-align: 0; -} - -.dropdown-menu[x-placement^="top"], -.dropdown-menu[x-placement^="right"], -.dropdown-menu[x-placement^="bottom"], -.dropdown-menu[x-placement^="left"] { - right: auto; - bottom: auto; -} - -.dropdown-divider { - height: 0; - margin: 0.5rem 0; - overflow: hidden; - border-top: 1px solid #e9ecef; -} - -.dropdown-item { - display: block; - width: 100%; - padding: 0.25rem 1.5rem; - clear: both; - font-weight: 400; - color: #212529; - text-align: inherit; - white-space: nowrap; - background-color: transparent; - border: 0; -} -.dropdown-item:hover, -.dropdown-item:focus { - color: #16181b; - text-decoration: none; - background-color: #f8f9fa; -} -.dropdown-item.active, -.dropdown-item:active { - color: #fff; - text-decoration: none; - background-color: var(--color-light-green); -} -.dropdown-item.disabled, -.dropdown-item:disabled { - color: #6c757d; - pointer-events: none; - background-color: transparent; -} - -.dropdown-menu.show { - display: block; -} - -.dropdown-header { - display: block; - padding: 0.5rem 1.5rem; - margin-bottom: 0; - font-size: 0.875rem; - color: #6c757d; - white-space: nowrap; -} - -.dropdown-item-text { - display: block; - padding: 0.25rem 1.5rem; - color: #212529; -} - -.btn-group, -.btn-group-vertical { - position: relative; - display: -webkit-inline-box; - display: -webkit-inline-flex; - display: -ms-inline-flexbox; - display: inline-flex; - vertical-align: middle; -} -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - -webkit-box-flex: 1; - -webkit-flex: 1 1 auto; - -ms-flex: 1 1 auto; - flex: 1 1 auto; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover { - z-index: 1; -} -.btn-group > .btn:focus, -.btn-group > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn:focus, -.btn-group-vertical > .btn:active, -.btn-group-vertical > .btn.active { - z-index: 1; -} - -.btn-toolbar { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; -} -.btn-toolbar .input-group { - width: auto; -} - -.btn-group > .btn:not(:first-child), -.btn-group > .btn-group:not(:first-child) { - margin-left: -1px; -} - -.btn-group > .btn:not(:last-child):not(.dropdown-toggle), -.btn-group > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.btn-group > .btn:not(:first-child), -.btn-group > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.dropdown-toggle-split { - padding-right: 0.5625rem; - padding-left: 0.5625rem; -} -.dropdown-toggle-split::after, -.dropup .dropdown-toggle-split::after, -.dropright .dropdown-toggle-split::after { - margin-left: 0; -} -.dropleft .dropdown-toggle-split::before { - margin-right: 0; -} - -.btn-sm + .dropdown-toggle-split, -.btn-group-sm > .btn + .dropdown-toggle-split { - padding-right: 0.375rem; - padding-left: 0.375rem; -} - -.btn-lg + .dropdown-toggle-split, -.btn-group-lg > .btn + .dropdown-toggle-split { - padding-right: 0.75rem; - padding-left: 0.75rem; -} - -.btn-group-vertical { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: start; - -webkit-align-items: flex-start; - -ms-flex-align: start; - align-items: flex-start; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; -} -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group { - width: 100%; -} -.btn-group-vertical > .btn:not(:first-child), -.btn-group-vertical > .btn-group:not(:first-child) { - margin-top: -1px; -} -.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), -.btn-group-vertical > .btn-group:not(:last-child) > .btn { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn:not(:first-child), -.btn-group-vertical > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-top-right-radius: 0; -} - -.btn-group-toggle > .btn, -.btn-group-toggle > .btn-group > .btn { - margin-bottom: 0; -} -.btn-group-toggle > .btn input[type="radio"], -.btn-group-toggle > .btn input[type="checkbox"], -.btn-group-toggle > .btn-group > .btn input[type="radio"], -.btn-group-toggle > .btn-group > .btn input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; -} - -.input-group { - position: relative; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-align: stretch; - -webkit-align-items: stretch; - -ms-flex-align: stretch; - align-items: stretch; - width: 100%; -} -.input-group > .form-control, -.input-group > .form-control-plaintext, -.input-group > .custom-select, -.input-group > .custom-file { - position: relative; - -webkit-box-flex: 1; - -webkit-flex: 1 1 auto; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - width: 1%; - margin-bottom: 0; -} -.input-group > .form-control + .form-control, -.input-group > .form-control + .custom-select, -.input-group > .form-control + .custom-file, -.input-group > .form-control-plaintext + .form-control, -.input-group > .form-control-plaintext + .custom-select, -.input-group > .form-control-plaintext + .custom-file, -.input-group > .custom-select + .form-control, -.input-group > .custom-select + .custom-select, -.input-group > .custom-select + .custom-file, -.input-group > .custom-file + .form-control, -.input-group > .custom-file + .custom-select, -.input-group > .custom-file + .custom-file { - margin-left: -1px; -} -.input-group > .form-control:focus, -.input-group > .custom-select:focus, -.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label { - z-index: 3; -} -.input-group > .custom-file .custom-file-input:focus { - z-index: 4; -} -.input-group > .form-control:not(:last-child), -.input-group > .custom-select:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.input-group > .form-control:not(:first-child), -.input-group > .custom-select:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.input-group > .custom-file { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; -} -.input-group > .custom-file:not(:last-child) .custom-file-label, -.input-group > .custom-file:not(:last-child) .custom-file-label::after { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.input-group > .custom-file:not(:first-child) .custom-file-label { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.input-group-prepend, -.input-group-append { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; -} -.input-group-prepend .btn, -.input-group-append .btn { - position: relative; - z-index: 2; -} -.input-group-prepend .btn:focus, -.input-group-append .btn:focus { - z-index: 3; -} -.input-group-prepend .btn + .btn, -.input-group-prepend .btn + .input-group-text, -.input-group-prepend .input-group-text + .input-group-text, -.input-group-prepend .input-group-text + .btn, -.input-group-append .btn + .btn, -.input-group-append .btn + .input-group-text, -.input-group-append .input-group-text + .input-group-text, -.input-group-append .input-group-text + .btn { - margin-left: -1px; -} - -.input-group-prepend { - margin-right: -1px; -} - -.input-group-append { - margin-left: -1px; -} - -.input-group-text { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - padding: 0.375rem 0.75rem; - margin-bottom: 0; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - text-align: center; - white-space: nowrap; - background-color: #e9ecef; - border: 1px solid #ced4da; - border-radius: 0; -} -.input-group-text input[type="radio"], -.input-group-text input[type="checkbox"] { - margin-top: 0; -} - -.input-group-lg > .form-control:not(textarea), -.input-group-lg > .custom-select { - height: calc(1.5em + 1rem + 2px); -} - -.input-group-lg > .form-control, -.input-group-lg > .custom-select, -.input-group-lg > .input-group-prepend > .input-group-text, -.input-group-lg > .input-group-append > .input-group-text, -.input-group-lg > .input-group-prepend > .btn, -.input-group-lg > .input-group-append > .btn { - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; -} - -.input-group-sm > .form-control:not(textarea), -.input-group-sm > .custom-select { - height: calc(1.5em + 0.5rem + 2px); -} - -.input-group-sm > .form-control, -.input-group-sm > .custom-select, -.input-group-sm > .input-group-prepend > .input-group-text, -.input-group-sm > .input-group-append > .input-group-text, -.input-group-sm > .input-group-prepend > .btn, -.input-group-sm > .input-group-append > .btn { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; -} - -.input-group-lg > .custom-select, -.input-group-sm > .custom-select { - padding-right: 1.75rem; -} - -.input-group > .input-group-prepend > .btn, -.input-group > .input-group-prepend > .input-group-text, -.input-group > .input-group-append:not(:last-child) > .btn, -.input-group > .input-group-append:not(:last-child) > .input-group-text, -.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.input-group > .input-group-append > .btn, -.input-group > .input-group-append > .input-group-text, -.input-group > .input-group-prepend:not(:first-child) > .btn, -.input-group > .input-group-prepend:not(:first-child) > .input-group-text, -.input-group > .input-group-prepend:first-child > .btn:not(:first-child), -.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.custom-control { - position: relative; - display: block; - min-height: 1.5rem; - padding-left: 1.5rem; -} - -.custom-control-inline { - display: -webkit-inline-box; - display: -webkit-inline-flex; - display: -ms-inline-flexbox; - display: inline-flex; - margin-right: 1rem; -} - -.custom-control-input { - position: absolute; - z-index: -1; - opacity: 0; -} -.custom-control-input:checked ~ .custom-control-label::before { - color: #fff; - border-color: #3f84fc; - background-color: #3f84fc; -} -.custom-control-input:focus ~ .custom-control-label::before { - -webkit-box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.25); - box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.25); -} -.custom-control-input:focus:not(:checked) ~ .custom-control-label::before { - border-color: #bdd4fe; -} -.custom-control-input:not(:disabled):active ~ .custom-control-label::before { - color: #fff; - background-color: #eff5ff; - border-color: #eff5ff; -} -.custom-control-input:disabled ~ .custom-control-label { - color: #6c757d; -} -.custom-control-input:disabled ~ .custom-control-label::before { - background-color: #e9ecef; -} - -.custom-control-label { - position: relative; - margin-bottom: 0; - vertical-align: top; -} -.custom-control-label::before { - position: absolute; - top: 0.25rem; - left: -1.5rem; - display: block; - width: 1rem; - height: 1rem; - pointer-events: none; - content: ""; - background-color: #fff; - border: #adb5bd solid 1px; -} -.custom-control-label::after { - position: absolute; - top: 0.25rem; - left: -1.5rem; - display: block; - width: 1rem; - height: 1rem; - content: ""; - background: no-repeat 50% / 50% 50%; -} - -.custom-checkbox .custom-control-label::before { - border-radius: 0; -} - -.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"); -} - -.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { - border-color: #3f84fc; - background-color: #3f84fc; -} - -.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e"); -} - -.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(63, 132, 252, 0.5); -} - -.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { - background-color: rgba(63, 132, 252, 0.5); -} - -.custom-radio .custom-control-label::before { - border-radius: 50%; -} - -.custom-radio .custom-control-input:checked ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); -} - -.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(63, 132, 252, 0.5); -} - -.custom-switch { - padding-left: 2.25rem; -} -.custom-switch .custom-control-label::before { - left: -2.25rem; - width: 1.75rem; - pointer-events: all; - border-radius: 0.5rem; -} -.custom-switch .custom-control-label::after { - top: calc(0.25rem + 2px); - left: calc(-2.25rem + 2px); - width: calc(1rem - 4px); - height: calc(1rem - 4px); - background-color: #adb5bd; - border-radius: 0.5rem; - -webkit-transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - -webkit-transform 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; - transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - -webkit-transform 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; - -o-transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out, - -o-transform 0.15s ease-in-out; - transition: - transform 0.15s ease-in-out, - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out; - transition: - transform 0.15s ease-in-out, - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out, - -webkit-transform 0.15s ease-in-out, - -o-transform 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; -} -@media (prefers-reduced-motion: reduce) { - .custom-switch .custom-control-label::after { - -webkit-transition: none; - -o-transition: none; - transition: none; - } -} -.custom-switch .custom-control-input:checked ~ .custom-control-label::after { - background-color: #fff; - -webkit-transform: translateX(0.75rem); - -o-transform: translateX(0.75rem); - transform: translateX(0.75rem); -} -.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(63, 132, 252, 0.5); -} - -.custom-select { - display: inline-block; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - padding: 0.375rem 1.75rem 0.375rem 0.75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - vertical-align: middle; - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") - no-repeat right 0.75rem center/8px 10px; - background-color: #fff; - border: 1px solid #ced4da; - border-radius: 0; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} -.custom-select:focus { - border-color: #bdd4fe; - outline: 0; - -webkit-box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.25); - box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.25); -} -.custom-select:focus::-ms-value { - color: #495057; - background-color: #fff; -} -.custom-select[multiple], -.custom-select[size]:not([size="1"]) { - height: auto; - padding-right: 0.75rem; - background-image: none; -} -.custom-select:disabled { - color: #6c757d; - background-color: #e9ecef; -} -.custom-select::-ms-expand { - display: none; -} - -.custom-select-sm { - height: calc(1.5em + 0.5rem + 2px); - padding-top: 0.25rem; - padding-bottom: 0.25rem; - padding-left: 0.5rem; - font-size: 0.875rem; -} - -.custom-select-lg { - height: calc(1.5em + 1rem + 2px); - padding-top: 0.5rem; - padding-bottom: 0.5rem; - padding-left: 1rem; - font-size: 1.25rem; -} - -.custom-file { - position: relative; - display: inline-block; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - margin-bottom: 0; -} - -.custom-file-input { - position: relative; - z-index: 2; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - margin: 0; - opacity: 0; -} -.custom-file-input:focus ~ .custom-file-label { - border-color: #bdd4fe; - -webkit-box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.25); - box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.25); -} -.custom-file-input:disabled ~ .custom-file-label { - background-color: #e9ecef; -} -.custom-file-input:lang(en) ~ .custom-file-label::after { - content: "Browse"; -} -.custom-file-input ~ .custom-file-label[data-browse]::after { - content: attr(data-browse); -} - -.custom-file-label { - position: absolute; - top: 0; - right: 0; - left: 0; - z-index: 1; - height: calc(1.5em + 0.75rem + 2px); - padding: 0.375rem 0.75rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - background-color: #fff; - border: 1px solid #ced4da; - border-radius: 0; -} -.custom-file-label::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - z-index: 3; - display: block; - height: calc(1.5em + 0.75rem); - padding: 0.375rem 0.75rem; - line-height: 1.5; - color: #495057; - content: "Browse"; - background-color: #e9ecef; - border-left: inherit; - border-radius: 0 0 0 0; -} - -.custom-range { - width: 100%; - height: calc(1rem + 0.4rem); - padding: 0; - background-color: transparent; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} -.custom-range:focus { - outline: none; -} -.custom-range:focus::-webkit-slider-thumb { - -webkit-box-shadow: - 0 0 0 1px #fff, - 0 0 0 0.2rem rgba(63, 132, 252, 0.25); - box-shadow: - 0 0 0 1px #fff, - 0 0 0 0.2rem rgba(63, 132, 252, 0.25); -} -.custom-range:focus::-moz-range-thumb { - box-shadow: - 0 0 0 1px #fff, - 0 0 0 0.2rem rgba(63, 132, 252, 0.25); -} -.custom-range:focus::-ms-thumb { - box-shadow: - 0 0 0 1px #fff, - 0 0 0 0.2rem rgba(63, 132, 252, 0.25); -} -.custom-range::-moz-focus-outer { - border: 0; -} -.custom-range::-webkit-slider-thumb { - width: 1rem; - height: 1rem; - margin-top: -0.25rem; - background-color: #3f84fc; - border: 0; - border-radius: 1rem; - -webkit-transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; - transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; - -o-transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out; - transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out; - transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; - -webkit-appearance: none; - appearance: none; -} -@media (prefers-reduced-motion: reduce) { - .custom-range::-webkit-slider-thumb { - -webkit-transition: none; - -o-transition: none; - transition: none; - } -} -.custom-range::-webkit-slider-thumb:active { - background-color: #eff5ff; -} -.custom-range::-webkit-slider-runnable-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: #dee2e6; - border-color: transparent; - border-radius: 1rem; -} -.custom-range::-moz-range-thumb { - width: 1rem; - height: 1rem; - background-color: #3f84fc; - border: 0; - border-radius: 1rem; - -webkit-transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; - transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; - -o-transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out; - transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out; - transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; - -moz-appearance: none; - appearance: none; -} -@media (prefers-reduced-motion: reduce) { - .custom-range::-moz-range-thumb { - -webkit-transition: none; - -o-transition: none; - transition: none; - } -} -.custom-range::-moz-range-thumb:active { - background-color: #eff5ff; -} -.custom-range::-moz-range-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: #dee2e6; - border-color: transparent; - border-radius: 1rem; -} -.custom-range::-ms-thumb { - width: 1rem; - height: 1rem; - margin-top: 0; - margin-right: 0.2rem; - margin-left: 0.2rem; - background-color: #3f84fc; - border: 0; - border-radius: 1rem; - -webkit-transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; - transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; - -o-transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out; - transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out; - transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; - appearance: none; -} -@media (prefers-reduced-motion: reduce) { - .custom-range::-ms-thumb { - -webkit-transition: none; - -o-transition: none; - transition: none; - } -} -.custom-range::-ms-thumb:active { - background-color: #eff5ff; -} -.custom-range::-ms-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: transparent; - border-color: transparent; - border-width: 0.5rem; -} -.custom-range::-ms-fill-lower { - background-color: #dee2e6; - border-radius: 1rem; -} -.custom-range::-ms-fill-upper { - margin-right: 15px; - background-color: #dee2e6; - border-radius: 1rem; -} -.custom-range:disabled::-webkit-slider-thumb { - background-color: #adb5bd; -} -.custom-range:disabled::-webkit-slider-runnable-track { - cursor: default; -} -.custom-range:disabled::-moz-range-thumb { - background-color: #adb5bd; -} -.custom-range:disabled::-moz-range-track { - cursor: default; -} -.custom-range:disabled::-ms-thumb { - background-color: #adb5bd; -} - -.custom-control-label::before, -.custom-file-label, -.custom-select { - -webkit-transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; - transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; - -o-transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out; - transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out; - transition: - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; -} -@media (prefers-reduced-motion: reduce) { - .custom-control-label::before, - .custom-file-label, - .custom-select { - -webkit-transition: none; - -o-transition: none; - transition: none; - } -} - -/* .nav { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - padding-left: 0; - margin-bottom: 0; - list-style: none; } */ - -.nav-link { - display: block; - padding: 0.5rem 1rem; -} -.nav-link:hover, -.nav-link:focus { - text-decoration: none; -} -.nav-link.disabled { - color: #6c757d; - pointer-events: none; - cursor: default; -} - -.nav-tabs { - border-bottom: 1px solid #dee2e6; -} -.nav-tabs .nav-item { - margin-bottom: -1px; - height: 50px; -} -.nav-tabs .nav-link { - border: 1px solid transparent; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.nav-tabs .nav-link:hover, -.nav-tabs .nav-link:focus { - border-color: #e9ecef #e9ecef #dee2e6; -} -.nav-tabs .nav-link.disabled { - color: #6c757d; - background-color: transparent; - border-color: transparent; -} -.nav-tabs .nav-link.active, -.nav-tabs .nav-item.show .nav-link { - color: #495057; - background-color: #fff; - border-color: #dee2e6 #dee2e6 #fff; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; -} - -.nav-pills .nav-link { - border-radius: 0; -} - -.nav-pills .nav-link.active, -.nav-pills .show > .nav-link { - color: #fff; - background-color: #3f84fc; -} - -.nav-fill .nav-item { - -webkit-box-flex: 1; - -webkit-flex: 1 1 auto; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - text-align: center; -} - -.nav-justified .nav-item { - -webkit-flex-basis: 0; - -ms-flex-preferred-size: 0; - flex-basis: 0; - -webkit-box-flex: 1; - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; - text-align: center; -} - -.tab-content > .tab-pane { - display: none; -} - -.tab-content > .active { - display: block; -} - -.navbar { - position: relative; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -webkit-justify-content: space-between; - -ms-flex-pack: justify; - justify-content: space-between; - padding: 0.5rem 1rem; -} -.navbar > .container, -.navbar > .container-fluid { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -webkit-justify-content: space-between; - -ms-flex-pack: justify; - justify-content: space-between; -} - -.navbar-brand { - display: inline-block; - padding-top: 0.3125rem; - padding-bottom: 0.3125rem; - margin-right: 1rem; - font-size: 1.25rem; - line-height: inherit; - white-space: nowrap; -} -.navbar-brand:hover, -.navbar-brand:focus { - text-decoration: none; -} - -.navbar-nav { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; - list-style: none; -} -.navbar-nav .nav-link { - padding-right: 0; - padding-left: 0; -} -.navbar-nav .dropdown-menu { - position: static; - float: none; -} - -.navbar-text { - display: inline-block; - padding-top: 0.5rem; - padding-bottom: 0.5rem; -} - -.navbar-collapse { - -webkit-flex-basis: 100%; - -ms-flex-preferred-size: 100%; - flex-basis: 100%; - -webkit-box-flex: 1; - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; -} - -.navbar-toggler { - padding: 0.25rem 0.75rem; - font-size: 1.25rem; - line-height: 1; - background-color: transparent; - border: 1px solid transparent; - border-radius: 0; -} -.navbar-toggler:hover, -.navbar-toggler:focus { - text-decoration: none; -} - -.navbar-toggler-icon { - display: inline-block; - width: 1.5em; - height: 1.5em; - vertical-align: middle; - content: ""; - background: no-repeat center center; - -webkit-background-size: 100% 100%; - background-size: 100% 100%; -} - -@media (max-width: 575.98px) { - .navbar-expand-sm > .container, - .navbar-expand-sm > .container-fluid { - padding-right: 0; - padding-left: 0; - } -} - -@media (min-width: 576px) { - .navbar-expand-sm { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-flow: row nowrap; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - } - .navbar-expand-sm .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - } - .navbar-expand-sm .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-sm .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; - } - .navbar-expand-sm > .container, - .navbar-expand-sm > .container-fluid { - -webkit-flex-wrap: nowrap; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - } - .navbar-expand-sm .navbar-collapse { - display: -webkit-box !important; - display: -webkit-flex !important; - display: -ms-flexbox !important; - display: flex !important; - -webkit-flex-basis: auto; - -ms-flex-preferred-size: auto; - flex-basis: auto; - } - .navbar-expand-sm .navbar-toggler { - display: none; - } -} - -@media (max-width: 767.98px) { - .navbar-expand-md > .container, - .navbar-expand-md > .container-fluid { - padding-right: 0; - padding-left: 0; - } -} - -@media (min-width: 768px) { - .navbar-expand-md { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-flow: row nowrap; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - } - .navbar-expand-md .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - } - .navbar-expand-md .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-md .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; - } - .navbar-expand-md > .container, - .navbar-expand-md > .container-fluid { - -webkit-flex-wrap: nowrap; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - } - .navbar-expand-md .navbar-collapse { - display: -webkit-box !important; - display: -webkit-flex !important; - display: -ms-flexbox !important; - display: flex !important; - -webkit-flex-basis: auto; - -ms-flex-preferred-size: auto; - flex-basis: auto; - } - .navbar-expand-md .navbar-toggler { - display: none; - } -} - -@media (max-width: 991.98px) { - .navbar-expand-lg > .container, - .navbar-expand-lg > .container-fluid { - padding-right: 0; - padding-left: 0; - } -} - -@media (min-width: 992px) { - .navbar-expand-lg { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-flow: row nowrap; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - } - .navbar-expand-lg .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - } - .navbar-expand-lg .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-lg .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; - } - .navbar-expand-lg > .container, - .navbar-expand-lg > .container-fluid { - -webkit-flex-wrap: nowrap; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - } - .navbar-expand-lg .navbar-collapse { - display: -webkit-box !important; - display: -webkit-flex !important; - display: -ms-flexbox !important; - display: flex !important; - -webkit-flex-basis: auto; - -ms-flex-preferred-size: auto; - flex-basis: auto; - } - .navbar-expand-lg .navbar-toggler { - display: none; - } -} - -@media (max-width: 1199.98px) { - .navbar-expand-xl > .container, - .navbar-expand-xl > .container-fluid { - padding-right: 0; - padding-left: 0; - } -} - -@media (min-width: 1200px) { - .navbar-expand-xl { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-flow: row nowrap; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - } - .navbar-expand-xl .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - } - .navbar-expand-xl .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-xl .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; - } - .navbar-expand-xl > .container, - .navbar-expand-xl > .container-fluid { - -webkit-flex-wrap: nowrap; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - } - .navbar-expand-xl .navbar-collapse { - display: -webkit-box !important; - display: -webkit-flex !important; - display: -ms-flexbox !important; - display: flex !important; - -webkit-flex-basis: auto; - -ms-flex-preferred-size: auto; - flex-basis: auto; - } - .navbar-expand-xl .navbar-toggler { - display: none; - } -} - -.navbar-expand { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-flow: row nowrap; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; -} -.navbar-expand > .container, -.navbar-expand > .container-fluid { - padding-right: 0; - padding-left: 0; -} -.navbar-expand .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; -} -.navbar-expand .navbar-nav .dropdown-menu { - position: absolute; -} -.navbar-expand .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; -} -.navbar-expand > .container, -.navbar-expand > .container-fluid { - -webkit-flex-wrap: nowrap; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; -} -.navbar-expand .navbar-collapse { - display: -webkit-box !important; - display: -webkit-flex !important; - display: -ms-flexbox !important; - display: flex !important; - -webkit-flex-basis: auto; - -ms-flex-preferred-size: auto; - flex-basis: auto; -} -.navbar-expand .navbar-toggler { - display: none; -} - -.navbar-light .navbar-brand { - color: rgba(0, 0, 0, 0.9); -} -.navbar-light .navbar-brand:hover, -.navbar-light .navbar-brand:focus { - color: rgba(0, 0, 0, 0.9); -} - -.navbar-light .navbar-nav .nav-link { - color: rgba(0, 0, 0, 0.5); -} -.navbar-light .navbar-nav .nav-link:hover, -.navbar-light .navbar-nav .nav-link:focus { - color: rgba(0, 0, 0, 0.7); -} -.navbar-light .navbar-nav .nav-link.disabled { - color: rgba(0, 0, 0, 0.3); -} - -.navbar-light .navbar-nav .show > .nav-link, -.navbar-light .navbar-nav .active > .nav-link, -.navbar-light .navbar-nav .nav-link.show, -.navbar-light .navbar-nav .nav-link.active { - color: rgba(0, 0, 0, 0.9); -} - -.navbar-light .navbar-toggler { - color: rgba(0, 0, 0, 0.5); - border-color: rgba(0, 0, 0, 0.1); -} - -.navbar-light .navbar-toggler-icon { - background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); -} - -.navbar-light .navbar-text { - color: rgba(0, 0, 0, 0.5); -} -.navbar-light .navbar-text a { - color: rgba(0, 0, 0, 0.9); -} -.navbar-light .navbar-text a:hover, -.navbar-light .navbar-text a:focus { - color: rgba(0, 0, 0, 0.9); -} - -.navbar-dark .navbar-brand { - color: #fff; -} -.navbar-dark .navbar-brand:hover, -.navbar-dark .navbar-brand:focus { - color: #fff; -} - -.navbar-dark .navbar-nav .nav-link { - color: rgba(255, 255, 255, 0.5); -} -.navbar-dark .navbar-nav .nav-link:hover, -.navbar-dark .navbar-nav .nav-link:focus { - color: rgba(255, 255, 255, 0.75); -} -.navbar-dark .navbar-nav .nav-link.disabled { - color: rgba(255, 255, 255, 0.25); -} - -.navbar-dark .navbar-nav .show > .nav-link, -.navbar-dark .navbar-nav .active > .nav-link, -.navbar-dark .navbar-nav .nav-link.show, -.navbar-dark .navbar-nav .nav-link.active { - color: #fff; -} - -.navbar-dark .navbar-toggler { - color: rgba(255, 255, 255, 0.5); - border-color: rgba(255, 255, 255, 0.1); -} - -.navbar-dark .navbar-toggler-icon { - background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); -} - -.navbar-dark .navbar-text { - color: rgba(255, 255, 255, 0.5); -} -.navbar-dark .navbar-text a { - color: #fff; -} -.navbar-dark .navbar-text a:hover, -.navbar-dark .navbar-text a:focus { - color: #fff; -} - -.card { - position: relative; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - min-width: 0; - word-wrap: break-word; - background-color: #fff; - background-clip: border-box; - border: 1px solid rgba(0, 0, 0, 0.125); - border-radius: 0; -} -.card > hr { - margin-right: 0; - margin-left: 0; -} -.card > .list-group:first-child .list-group-item:first-child { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.card > .list-group:last-child .list-group-item:last-child { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} - -.card-body { - -webkit-box-flex: 1; - -webkit-flex: 1 1 auto; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - padding: 1.25rem; -} - -.card-title { - margin-bottom: 0.75rem; -} - -.card-subtitle { - margin-top: -0.375rem; - margin-bottom: 0; -} - -.card-text:last-child { - margin-bottom: 0; -} - -.card-link:hover { - text-decoration: none; -} - -.card-link + .card-link { - margin-left: 1.25rem; -} - -.card-header { - padding: 0.75rem 1.25rem; - margin-bottom: 0; - background-color: rgba(0, 0, 0, 0.03); - border-bottom: 1px solid rgba(0, 0, 0, 0.125); -} -.card-header:first-child { - border-radius: calc(0 - 1px) calc(0 - 1px) 0 0; -} -.card-header + .list-group .list-group-item:first-child { - border-top: 0; -} - -.card-footer { - padding: 0.75rem 1.25rem; - background-color: rgba(0, 0, 0, 0.03); - border-top: 1px solid rgba(0, 0, 0, 0.125); -} -.card-footer:last-child { - border-radius: 0 0 calc(0 - 1px) calc(0 - 1px); -} - -.card-header-tabs { - margin-right: -0.625rem; - margin-bottom: -0.75rem; - margin-left: -0.625rem; - border-bottom: 0; -} - -.card-header-pills { - margin-right: -0.625rem; - margin-left: -0.625rem; -} - -.card-img-overlay { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - padding: 1.25rem; -} - -.card-img { - width: 100%; - border-radius: calc(0 - 1px); -} - -.card-img-top { - width: 100%; - border-top-left-radius: calc(0 - 1px); - border-top-right-radius: calc(0 - 1px); -} - -.card-img-bottom { - width: 100%; - border-bottom-right-radius: calc(0 - 1px); - border-bottom-left-radius: calc(0 - 1px); -} - -.card-deck { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; -} -.card-deck .card { - margin-bottom: 15px; -} -@media (min-width: 576px) { - .card-deck { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-flow: row wrap; - -ms-flex-flow: row wrap; - flex-flow: row wrap; - margin-right: -15px; - margin-left: -15px; - } - .card-deck .card { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 1; - -webkit-flex: 1 0 0%; - -ms-flex: 1 0 0%; - flex: 1 0 0%; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - margin-right: 15px; - margin-bottom: 0; - margin-left: 15px; - } -} - -.card-group { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; -} -.card-group > .card { - margin-bottom: 15px; -} -@media (min-width: 576px) { - .card-group { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-flow: row wrap; - -ms-flex-flow: row wrap; - flex-flow: row wrap; - } - .card-group > .card { - -webkit-box-flex: 1; - -webkit-flex: 1 0 0%; - -ms-flex: 1 0 0%; - flex: 1 0 0%; - margin-bottom: 0; - } - .card-group > .card + .card { - margin-left: 0; - border-left: 0; - } - .card-group > .card:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } - .card-group > .card:not(:last-child) .card-img-top, - .card-group > .card:not(:last-child) .card-header { - border-top-right-radius: 0; - } - .card-group > .card:not(:last-child) .card-img-bottom, - .card-group > .card:not(:last-child) .card-footer { - border-bottom-right-radius: 0; - } - .card-group > .card:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - } - .card-group > .card:not(:first-child) .card-img-top, - .card-group > .card:not(:first-child) .card-header { - border-top-left-radius: 0; - } - .card-group > .card:not(:first-child) .card-img-bottom, - .card-group > .card:not(:first-child) .card-footer { - border-bottom-left-radius: 0; - } -} - -.card-columns .card { - margin-bottom: 0.75rem; -} - -@media (min-width: 576px) { - .card-columns { - -webkit-column-count: 3; - -moz-column-count: 3; - column-count: 3; - -webkit-column-gap: 1.25rem; - -moz-column-gap: 1.25rem; - column-gap: 1.25rem; - orphans: 1; - widows: 1; - } - .card-columns .card { - display: inline-block; - width: 100%; - } -} - -.accordion > .card { - overflow: hidden; -} -.accordion > .card:not(:first-of-type) .card-header:first-child { - border-radius: 0; -} -.accordion > .card:not(:first-of-type):not(:last-of-type) { - border-bottom: 0; - border-radius: 0; -} -.accordion > .card:first-of-type { - border-bottom: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.accordion > .card:last-of-type { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.accordion > .card .card-header { - margin-bottom: -1px; -} - -.breadcrumb { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - padding: 0.75rem 1rem; - margin-bottom: 1rem; - list-style: none; - background-color: #e9ecef; - border-radius: 0; -} - -.breadcrumb-item + .breadcrumb-item { - padding-left: 0.5rem; -} -.breadcrumb-item + .breadcrumb-item::before { - display: inline-block; - padding-right: 0.5rem; - color: #6c757d; - content: "/"; -} - -.breadcrumb-item + .breadcrumb-item:hover::before { - text-decoration: underline; -} - -.breadcrumb-item + .breadcrumb-item:hover::before { - text-decoration: none; -} - -.breadcrumb-item.active { - color: #6c757d; -} - -.pagination { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - padding-left: 0; - list-style: none; - border-radius: 0; -} - -.page-link { - position: relative; - display: block; - padding: 0.5rem 0.75rem; - margin-left: -1px; - line-height: 1.25; - color: #3f84fc; - background-color: #fff; - border: 1px solid #dee2e6; -} -.page-link:hover { - z-index: 2; - color: #0458eb; - text-decoration: none; - background-color: #e9ecef; - border-color: #dee2e6; -} -.page-link:focus { - z-index: 2; - outline: 0; - -webkit-box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.25); - box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.25); -} - -.page-item:first-child .page-link { - margin-left: 0; - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.page-item:last-child .page-link { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.page-item.active .page-link { - z-index: 1; - color: #fff; - background-color: #3f84fc; - border-color: #3f84fc; -} - -.page-item.disabled .page-link { - color: #6c757d; - pointer-events: none; - cursor: auto; - background-color: #fff; - border-color: #dee2e6; -} - -.pagination-lg .page-link { - padding: 0.75rem 1.5rem; - font-size: 1.25rem; - line-height: 1.5; -} - -.pagination-lg .page-item:first-child .page-link { - border-top-left-radius: 0.3rem; - border-bottom-left-radius: 0.3rem; -} - -.pagination-lg .page-item:last-child .page-link { - border-top-right-radius: 0.3rem; - border-bottom-right-radius: 0.3rem; -} - -.pagination-sm .page-link { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; -} - -.pagination-sm .page-item:first-child .page-link { - border-top-left-radius: 0.2rem; - border-bottom-left-radius: 0.2rem; -} - -.pagination-sm .page-item:last-child .page-link { - border-top-right-radius: 0.2rem; - border-bottom-right-radius: 0.2rem; -} - -.badge { - display: inline-block; - padding: 0.25em 0.4em; - font-size: 75%; - font-weight: 700; - line-height: 1; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: 0; - -webkit-transition: - color 0.15s ease-in-out, - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; - transition: - color 0.15s ease-in-out, - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; - -o-transition: - color 0.15s ease-in-out, - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out; - transition: - color 0.15s ease-in-out, - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out; - transition: - color 0.15s ease-in-out, - background-color 0.15s ease-in-out, - border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out, - -webkit-box-shadow 0.15s ease-in-out; -} -@media (prefers-reduced-motion: reduce) { - .badge { - -webkit-transition: none; - -o-transition: none; - transition: none; - } -} -a.badge:hover, -a.badge:focus { - text-decoration: none; -} -.badge:empty { - display: none; -} - -.btn .badge { - position: relative; - top: -1px; -} - -.badge-pill { - padding-right: 0.6em; - padding-left: 0.6em; - border-radius: 10rem; -} - -.badge-primary { - color: #fff; - background-color: #3f84fc; -} -a.badge-primary:hover, -a.badge-primary:focus { - color: #fff; - background-color: #0d64fb; -} -a.badge-primary:focus, -a.badge-primary.focus { - outline: 0; - -webkit-box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.5); - box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.5); -} - -.badge-secondary { - color: #fff; - background-color: #727f94; -} -a.badge-secondary:hover, -a.badge-secondary:focus { - color: #fff; - background-color: #5b6678; -} -a.badge-secondary:focus, -a.badge-secondary.focus { - outline: 0; - -webkit-box-shadow: 0 0 0 0.2rem rgba(114, 127, 148, 0.5); - box-shadow: 0 0 0 0.2rem rgba(114, 127, 148, 0.5); -} - -.badge-success { - color: #fff; - background-color: #1dab47; -} -a.badge-success:hover, -a.badge-success:focus { - color: #fff; - background-color: #167f35; -} -a.badge-success:focus, -a.badge-success.focus { - outline: 0; - -webkit-box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.5); - box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.5); -} - -.badge-info { - color: #fff; - background-color: #8a3ffc; -} -a.badge-info:hover, -a.badge-info:focus { - color: #fff; - background-color: #6b0dfb; -} -a.badge-info:focus, -a.badge-info.focus { - outline: 0; - -webkit-box-shadow: 0 0 0 0.2rem rgba(138, 63, 252, 0.5); - box-shadow: 0 0 0 0.2rem rgba(138, 63, 252, 0.5); -} - -.badge-warning { - color: #212529; - background-color: #fcae3f; -} -a.badge-warning:hover, -a.badge-warning:focus { - color: #212529; - background-color: #fb990d; -} -a.badge-warning:focus, -a.badge-warning.focus { - outline: 0; - -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 174, 63, 0.5); - box-shadow: 0 0 0 0.2rem rgba(252, 174, 63, 0.5); -} - -.badge-danger { - color: #fff; - background-color: #fc413f; -} -a.badge-danger:hover, -a.badge-danger:focus { - color: #fff; - background-color: #fb0f0d; -} -a.badge-danger:focus, -a.badge-danger.focus { - outline: 0; - -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.5); - box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.5); -} - -.badge-light { - color: #212529; - background-color: #f8f9fa; -} -a.badge-light:hover, -a.badge-light:focus { - color: #212529; - background-color: #dae0e5; -} -a.badge-light:focus, -a.badge-light.focus { - outline: 0; - -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); - box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); -} - -.badge-dark { - color: #fff; - background-color: #1e232d; -} -a.badge-dark:hover, -a.badge-dark:focus { - color: #fff; - background-color: #0a0b0e; -} -a.badge-dark:focus, -a.badge-dark.focus { - outline: 0; - -webkit-box-shadow: 0 0 0 0.2rem rgba(30, 35, 45, 0.5); - box-shadow: 0 0 0 0.2rem rgba(30, 35, 45, 0.5); -} - -.jumbotron { - padding: 2rem 1rem; - margin-bottom: 2rem; - background-color: #e9ecef; - border-radius: 0.3rem; -} -@media (min-width: 576px) { - .jumbotron { - padding: 4rem 2rem; - } -} - -.jumbotron-fluid { - padding-right: 0; - padding-left: 0; - border-radius: 0; -} - -.alert { - position: relative; - padding: 0.3rem 0.5rem; - margin-bottom: 1rem; - border: 1px solid transparent; - border-radius: 0; -} - -.alert-heading { - color: inherit; -} - -.alert-link { - font-weight: 700; -} - -.alert-dismissible { - padding-right: 4rem; -} -.alert-dismissible .close { - position: absolute; - top: 0; - right: 0; - padding: 0.75rem 1.25rem; - color: inherit; -} - -.alert-primary { - color: #214583; - background-color: #d9e6fe; - border-color: #c9ddfe; -} -.alert-primary hr { - border-top-color: #b0cdfe; -} -.alert-primary .alert-link { - color: #17305a; -} - -.alert-secondary { - color: #3b424d; - background-color: #e3e5ea; - border-color: #d8dbe1; -} -.alert-secondary hr { - border-top-color: #caced6; -} -.alert-secondary .alert-link { - color: #252930; -} - -.alert-success { - color: #0f5925; - background-color: #d2eeda; - border-color: #c0e7cb; -} -.alert-success hr { - border-top-color: #aee0bc; -} -.alert-success .alert-link { - color: #082d13; -} - -.alert-info { - color: #482183; - background-color: #e8d9fe; - border-color: #dec9fe; -} -.alert-info hr { - border-top-color: #cfb0fe; -} -.alert-info .alert-link { - color: #32175a; -} - -.alert-warning { - color: #835a21; - background-color: #feefd9; - border-color: #fee8c9; -} -.alert-warning hr { - border-top-color: #feddb0; -} -.alert-warning .alert-link { - color: #5a3e17; -} - -.alert-danger { - color: #832221; - background-color: #fed9d9; - border-color: #fecac9; -} -.alert-danger hr { - border-top-color: #feb1b0; -} -.alert-danger .alert-link { - color: #5a1717; -} - -.alert-light { - color: #818182; - background-color: #fefefe; - border-color: #fdfdfe; -} -.alert-light hr { - border-top-color: #ececf6; -} -.alert-light .alert-link { - color: #686868; -} - -.alert-dark { - color: #101217; - background-color: #d2d3d5; - border-color: #c0c1c4; -} -.alert-dark hr { - border-top-color: #b3b4b8; -} -.alert-dark .alert-link { - color: black; -} - -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 1rem 0; - } - to { - background-position: 0 0; - } -} - -@-o-keyframes progress-bar-stripes { - from { - background-position: 1rem 0; - } - to { - background-position: 0 0; - } -} - -@keyframes progress-bar-stripes { - from { - background-position: 1rem 0; - } - to { - background-position: 0 0; - } -} - -.progress { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - height: 1rem; - overflow: hidden; - font-size: 0.75rem; - background-color: #e9ecef; - border-radius: 0; -} - -.progress-bar { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - color: #fff; - text-align: center; - white-space: nowrap; - background-color: #3f84fc; - -webkit-transition: width 0.6s ease; - -o-transition: width 0.6s ease; - transition: width 0.6s ease; -} -@media (prefers-reduced-motion: reduce) { - .progress-bar { - -webkit-transition: none; - -o-transition: none; - transition: none; - } -} - -.progress-bar-striped { - background-image: -webkit-linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - background-image: -o-linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - background-image: linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - -webkit-background-size: 1rem 1rem; - background-size: 1rem 1rem; -} - -.progress-bar-animated { - -webkit-animation: progress-bar-stripes 1s linear infinite; - -o-animation: progress-bar-stripes 1s linear infinite; - animation: progress-bar-stripes 1s linear infinite; -} -@media (prefers-reduced-motion: reduce) { - .progress-bar-animated { - -webkit-animation: none; - -o-animation: none; - animation: none; - } -} - -.media { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-align: start; - -webkit-align-items: flex-start; - -ms-flex-align: start; - align-items: flex-start; -} - -.media-body { - -webkit-box-flex: 1; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; -} - -.list-group { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; -} - -.list-group-item-action { - width: 100%; - color: #495057; - text-align: inherit; -} -.list-group-item-action:hover, -.list-group-item-action:focus { - z-index: 1; - color: #495057; - text-decoration: none; - background-color: #f8f9fa; -} -.list-group-item-action:active { - color: #515151; - background-color: #e9ecef; -} - -.list-group-item { - position: relative; - display: block; - padding: 0.75rem 1.25rem; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid rgba(0, 0, 0, 0.125); -} -.list-group-item:first-child { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.list-group-item.disabled, -.list-group-item:disabled { - color: #6c757d; - pointer-events: none; - background-color: #fff; -} -.list-group-item.active { - z-index: 2; - color: #fff; - background-color: #3f84fc; - border-color: #3f84fc; -} - -.list-group-horizontal { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; -} -.list-group-horizontal .list-group-item { - margin-right: -1px; - margin-bottom: 0; -} -.list-group-horizontal .list-group-item:first-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - border-top-right-radius: 0; -} -.list-group-horizontal .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} - -@media (min-width: 576px) { - .list-group-horizontal-sm { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - } - .list-group-horizontal-sm .list-group-item { - margin-right: -1px; - margin-bottom: 0; - } - .list-group-horizontal-sm .list-group-item:first-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - border-top-right-radius: 0; - } - .list-group-horizontal-sm .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - } -} - -@media (min-width: 768px) { - .list-group-horizontal-md { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - } - .list-group-horizontal-md .list-group-item { - margin-right: -1px; - margin-bottom: 0; - } - .list-group-horizontal-md .list-group-item:first-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - border-top-right-radius: 0; - } - .list-group-horizontal-md .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - } -} - -@media (min-width: 992px) { - .list-group-horizontal-lg { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - } - .list-group-horizontal-lg .list-group-item { - margin-right: -1px; - margin-bottom: 0; - } - .list-group-horizontal-lg .list-group-item:first-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - border-top-right-radius: 0; - } - .list-group-horizontal-lg .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - } -} - -@media (min-width: 1200px) { - .list-group-horizontal-xl { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - } - .list-group-horizontal-xl .list-group-item { - margin-right: -1px; - margin-bottom: 0; - } - .list-group-horizontal-xl .list-group-item:first-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - border-top-right-radius: 0; - } - .list-group-horizontal-xl .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - } -} - -.list-group-flush .list-group-item { - border-right: 0; - border-left: 0; - border-radius: 0; -} -.list-group-flush .list-group-item:last-child { - margin-bottom: -1px; -} - -.list-group-flush:first-child .list-group-item:first-child { - border-top: 0; -} - -.list-group-flush:last-child .list-group-item:last-child { - margin-bottom: 0; - border-bottom: 0; -} - -.list-group-item-primary { - color: #214583; - background-color: #c9ddfe; -} -.list-group-item-primary.list-group-item-action:hover, -.list-group-item-primary.list-group-item-action:focus { - color: #214583; - background-color: #b0cdfe; -} -.list-group-item-primary.list-group-item-action.active { - color: #fff; - background-color: #214583; - border-color: #214583; -} - -.list-group-item-secondary { - color: #3b424d; - background-color: #d8dbe1; -} -.list-group-item-secondary.list-group-item-action:hover, -.list-group-item-secondary.list-group-item-action:focus { - color: #3b424d; - background-color: #caced6; -} -.list-group-item-secondary.list-group-item-action.active { - color: #fff; - background-color: #3b424d; - border-color: #3b424d; -} - -.list-group-item-success { - color: #0f5925; - background-color: #c0e7cb; -} -.list-group-item-success.list-group-item-action:hover, -.list-group-item-success.list-group-item-action:focus { - color: #0f5925; - background-color: #aee0bc; -} -.list-group-item-success.list-group-item-action.active { - color: #fff; - background-color: #0f5925; - border-color: #0f5925; -} - -.list-group-item-info { - color: #482183; - background-color: #dec9fe; -} -.list-group-item-info.list-group-item-action:hover, -.list-group-item-info.list-group-item-action:focus { - color: #482183; - background-color: #cfb0fe; -} -.list-group-item-info.list-group-item-action.active { - color: #fff; - background-color: #482183; - border-color: #482183; -} - -.list-group-item-warning { - color: #835a21; - background-color: #fee8c9; -} -.list-group-item-warning.list-group-item-action:hover, -.list-group-item-warning.list-group-item-action:focus { - color: #835a21; - background-color: #feddb0; -} -.list-group-item-warning.list-group-item-action.active { - color: #fff; - background-color: #835a21; - border-color: #835a21; -} - -.list-group-item-danger { - color: #832221; - background-color: #fecac9; -} -.list-group-item-danger.list-group-item-action:hover, -.list-group-item-danger.list-group-item-action:focus { - color: #832221; - background-color: #feb1b0; -} -.list-group-item-danger.list-group-item-action.active { - color: #fff; - background-color: #832221; - border-color: #832221; -} - -.list-group-item-light { - color: #818182; - background-color: #fdfdfe; -} -.list-group-item-light.list-group-item-action:hover, -.list-group-item-light.list-group-item-action:focus { - color: #818182; - background-color: #ececf6; -} -.list-group-item-light.list-group-item-action.active { - color: #fff; - background-color: #818182; - border-color: #818182; -} - -.list-group-item-dark { - color: #101217; - background-color: #c0c1c4; -} -.list-group-item-dark.list-group-item-action:hover, -.list-group-item-dark.list-group-item-action:focus { - color: #101217; - background-color: #b3b4b8; -} -.list-group-item-dark.list-group-item-action.active { - color: #fff; - background-color: #101217; - border-color: #101217; -} - -.close { - float: right; - font-size: 1.5rem; - font-weight: 700; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - opacity: 0.5; -} -.close:hover { - color: #000; - text-decoration: none; -} -.close:not(:disabled):not(.disabled):hover, -.close:not(:disabled):not(.disabled):focus { - opacity: 0.75; -} - -button.close { - padding: 0; - background-color: transparent; - border: 0; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} - -a.close.disabled { - pointer-events: none; -} - -.toast { - max-width: 350px; - overflow: hidden; - font-size: 0.875rem; - background-color: rgba(255, 255, 255, 0.85); - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.1); - -webkit-box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); - box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); - -webkit-backdrop-filter: blur(10px); - backdrop-filter: blur(10px); - opacity: 0; - border-radius: 0.25rem; -} -.toast:not(:last-child) { - margin-bottom: 0.75rem; -} -.toast.showing { - opacity: 1; -} -.toast.show { - display: block; - opacity: 1; -} -.toast.hide { - display: none; -} - -.toast-header { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - padding: 0.25rem 0.75rem; - color: #6c757d; - background-color: rgba(255, 255, 255, 0.85); - background-clip: padding-box; - border-bottom: 1px solid rgba(0, 0, 0, 0.05); -} - -.toast-body { - padding: 0.75rem; -} - -.modal-open { - overflow: hidden; -} -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} - -.modal { - position: fixed; - top: 0; - left: 0; - z-index: 1050; - display: none; - width: 100%; - height: 100%; - overflow: hidden; - outline: 0; -} - -.modal-dialog { - position: relative; - width: auto; - margin: 0.5rem; - pointer-events: none; -} -.modal.fade .modal-dialog { - -webkit-transition: -webkit-transform 0.3s ease-out; - transition: -webkit-transform 0.3s ease-out; - -o-transition: -o-transform 0.3s ease-out; - transition: transform 0.3s ease-out; - transition: - transform 0.3s ease-out, - -webkit-transform 0.3s ease-out, - -o-transform 0.3s ease-out; - -webkit-transform: translate(0, -50px); - -o-transform: translate(0, -50px); - transform: translate(0, -50px); -} -@media (prefers-reduced-motion: reduce) { - .modal.fade .modal-dialog { - -webkit-transition: none; - -o-transition: none; - transition: none; - } -} -.modal.show .modal-dialog { - -webkit-transform: none; - -o-transform: none; - transform: none; -} - -.modal-dialog-scrollable { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - max-height: calc(100% - 1rem); -} -.modal-dialog-scrollable .modal-content { - max-height: calc(100vh - 1rem); - overflow: hidden; -} -.modal-dialog-scrollable .modal-header, -.modal-dialog-scrollable .modal-footer { - -webkit-flex-shrink: 0; - -ms-flex-negative: 0; - flex-shrink: 0; -} -.modal-dialog-scrollable .modal-body { - overflow-y: auto; -} - -.modal-dialog-centered { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - min-height: calc(100% - 1rem); -} -.modal-dialog-centered::before { - display: block; - height: calc(100vh - 1rem); - content: ""; -} -.modal-dialog-centered.modal-dialog-scrollable { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - height: 100%; -} -.modal-dialog-centered.modal-dialog-scrollable .modal-content { - max-height: none; -} -.modal-dialog-centered.modal-dialog-scrollable::before { - content: none; -} - -#banner-modal { - width: auto; -} - -.modal-content { - position: relative; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - width: 100%; - pointer-events: auto; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 0.3rem; - outline: 0; -} - -.modal-backdrop { - position: fixed; - top: 0; - left: 0; - z-index: 1040; - width: 100vw; - height: 100vh; - background-color: #000; -} -.modal-backdrop.fade { - opacity: 0; -} -.modal-backdrop.show { - opacity: 0.5; -} - -.modal-header { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-align: start; - -webkit-align-items: flex-start; - -ms-flex-align: start; - align-items: flex-start; - -webkit-box-pack: justify; - -webkit-justify-content: space-between; - -ms-flex-pack: justify; - justify-content: space-between; - padding: 1rem 1rem; - border-bottom: 1px solid #dee2e6; - border-top-left-radius: 0.3rem; - border-top-right-radius: 0.3rem; -} -.modal-header .close { - padding: 1rem 1rem; - margin: -1rem -1rem -1rem auto; -} - -.modal-title { - margin-bottom: 0; - line-height: 1.5; -} - -/* .modal-body { - position: relative; - -webkit-box-flex: 1; - -webkit-flex: 1 1 auto; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - padding: 1rem; } */ - -.modal-footer { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: end; - -webkit-justify-content: flex-end; - -ms-flex-pack: end; - justify-content: flex-end; - padding: 1rem; - border-top: 1px solid #dee2e6; - border-bottom-right-radius: 0.3rem; - border-bottom-left-radius: 0.3rem; -} -.modal-footer > :not(:first-child) { - margin-left: 0.25rem; -} -.modal-footer > :not(:last-child) { - margin-right: 0.25rem; -} - -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} - -@media (min-width: 576px) { - .modal-dialog { - max-width: 500px; - margin: 1.75rem auto; - } - .modal-dialog-scrollable { - max-height: calc(100% - 3.5rem); - } - .modal-dialog-scrollable .modal-content { - max-height: calc(100vh - 3.5rem); - } - .modal-dialog-centered { - min-height: calc(100% - 3.5rem); - } - .modal-dialog-centered::before { - height: calc(100vh - 3.5rem); - } - .modal-sm { - max-width: 300px; - } -} - -@media (min-width: 992px) { - .modal-lg, - .modal-xl { - max-width: 800px; - } -} - -@media (min-width: 1200px) { - .modal-xl { - max-width: 1140px; - } -} - -.tooltip { - position: absolute; - z-index: 1070; - display: block; - margin: 0; - font-family: - "Open Sans", - -apple-system, - BlinkMacSystemFont, - "Segoe UI", - Roboto, - "Helvetica Neue", - Arial, - sans-serif, - "Apple Color Emoji", - "Segoe UI Emoji", - "Segoe UI Symbol", - "Noto Color Emoji"; - font-style: normal; - font-weight: 400; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 0.875rem; - word-wrap: break-word; - opacity: 0; -} -.tooltip.show { - opacity: 0.9; -} -.tooltip .arrow { - position: absolute; - display: block; - width: 0.8rem; - height: 0.4rem; -} -.tooltip .arrow::before { - position: absolute; - content: ""; - border-color: transparent; - border-style: solid; -} - -.bs-tooltip-top, -.bs-tooltip-auto[x-placement^="top"] { - padding: 0.4rem 0; -} -.bs-tooltip-top .arrow, -.bs-tooltip-auto[x-placement^="top"] .arrow { - bottom: 0; -} -.bs-tooltip-top .arrow::before, -.bs-tooltip-auto[x-placement^="top"] .arrow::before { - top: 0; - border-width: 0.4rem 0.4rem 0; - border-top-color: #000; -} - -.bs-tooltip-right, -.bs-tooltip-auto[x-placement^="right"] { - padding: 0 0.4rem; -} -.bs-tooltip-right .arrow, -.bs-tooltip-auto[x-placement^="right"] .arrow { - left: 0; - width: 0.4rem; - height: 0.8rem; -} -.bs-tooltip-right .arrow::before, -.bs-tooltip-auto[x-placement^="right"] .arrow::before { - right: 0; - border-width: 0.4rem 0.4rem 0.4rem 0; - border-right-color: #000; -} - -.bs-tooltip-bottom, -.bs-tooltip-auto[x-placement^="bottom"] { - padding: 0.4rem 0; -} -.bs-tooltip-bottom .arrow, -.bs-tooltip-auto[x-placement^="bottom"] .arrow { - top: 0; -} -.bs-tooltip-bottom .arrow::before, -.bs-tooltip-auto[x-placement^="bottom"] .arrow::before { - bottom: 0; - border-width: 0 0.4rem 0.4rem; - border-bottom-color: #000; -} - -.bs-tooltip-left, -.bs-tooltip-auto[x-placement^="left"] { - padding: 0 0.4rem; -} -.bs-tooltip-left .arrow, -.bs-tooltip-auto[x-placement^="left"] .arrow { - right: 0; - width: 0.4rem; - height: 0.8rem; -} -.bs-tooltip-left .arrow::before, -.bs-tooltip-auto[x-placement^="left"] .arrow::before { - left: 0; - border-width: 0.4rem 0 0.4rem 0.4rem; - border-left-color: #000; -} - -.tooltip-inner { - max-width: 200px; - padding: 0.25rem 0.5rem; - color: #fff; - text-align: center; - background-color: #000; - border-radius: 0; -} - -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: block; - max-width: 276px; - font-family: - "Open Sans", - -apple-system, - BlinkMacSystemFont, - "Segoe UI", - Roboto, - "Helvetica Neue", - Arial, - sans-serif, - "Apple Color Emoji", - "Segoe UI Emoji", - "Segoe UI Symbol", - "Noto Color Emoji"; - font-style: normal; - font-weight: 400; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 0.875rem; - word-wrap: break-word; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 0.3rem; -} -.popover .arrow { - position: absolute; - display: block; - width: 1rem; - height: 0.5rem; - margin: 0 0.3rem; -} -.popover .arrow::before, -.popover .arrow::after { - position: absolute; - display: block; - content: ""; - border-color: transparent; - border-style: solid; -} - -.bs-popover-top, -.bs-popover-auto[x-placement^="top"] { - margin-bottom: 0.5rem; -} -.bs-popover-top > .arrow, -.bs-popover-auto[x-placement^="top"] > .arrow { - bottom: calc((0.5rem + 1px) * -1); -} -.bs-popover-top > .arrow::before, -.bs-popover-auto[x-placement^="top"] > .arrow::before { - bottom: 0; - border-width: 0.5rem 0.5rem 0; - border-top-color: rgba(0, 0, 0, 0.25); -} -.bs-popover-top > .arrow::after, -.bs-popover-auto[x-placement^="top"] > .arrow::after { - bottom: 1px; - border-width: 0.5rem 0.5rem 0; - border-top-color: #fff; -} - -.bs-popover-right, -.bs-popover-auto[x-placement^="right"] { - margin-left: 0.5rem; -} -.bs-popover-right > .arrow, -.bs-popover-auto[x-placement^="right"] > .arrow { - left: calc((0.5rem + 1px) * -1); - width: 0.5rem; - height: 1rem; - margin: 0.3rem 0; -} -.bs-popover-right > .arrow::before, -.bs-popover-auto[x-placement^="right"] > .arrow::before { - left: 0; - border-width: 0.5rem 0.5rem 0.5rem 0; - border-right-color: rgba(0, 0, 0, 0.25); -} -.bs-popover-right > .arrow::after, -.bs-popover-auto[x-placement^="right"] > .arrow::after { - left: 1px; - border-width: 0.5rem 0.5rem 0.5rem 0; - border-right-color: #fff; -} - -.bs-popover-bottom, -.bs-popover-auto[x-placement^="bottom"] { - margin-top: 0.5rem; -} -.bs-popover-bottom > .arrow, -.bs-popover-auto[x-placement^="bottom"] > .arrow { - top: calc((0.5rem + 1px) * -1); -} -.bs-popover-bottom > .arrow::before, -.bs-popover-auto[x-placement^="bottom"] > .arrow::before { - top: 0; - border-width: 0 0.5rem 0.5rem 0.5rem; - border-bottom-color: rgba(0, 0, 0, 0.25); -} -.bs-popover-bottom > .arrow::after, -.bs-popover-auto[x-placement^="bottom"] > .arrow::after { - top: 1px; - border-width: 0 0.5rem 0.5rem 0.5rem; - border-bottom-color: #fff; -} -.bs-popover-bottom .popover-header::before, -.bs-popover-auto[x-placement^="bottom"] .popover-header::before { - position: absolute; - top: 0; - left: 50%; - display: block; - width: 1rem; - margin-left: -0.5rem; - content: ""; - border-bottom: 1px solid #f7f7f7; -} - -.bs-popover-left, -.bs-popover-auto[x-placement^="left"] { - margin-right: 0.5rem; -} -.bs-popover-left > .arrow, -.bs-popover-auto[x-placement^="left"] > .arrow { - right: calc((0.5rem + 1px) * -1); - width: 0.5rem; - height: 1rem; - margin: 0.3rem 0; -} -.bs-popover-left > .arrow::before, -.bs-popover-auto[x-placement^="left"] > .arrow::before { - right: 0; - border-width: 0.5rem 0 0.5rem 0.5rem; - border-left-color: rgba(0, 0, 0, 0.25); -} -.bs-popover-left > .arrow::after, -.bs-popover-auto[x-placement^="left"] > .arrow::after { - right: 1px; - border-width: 0.5rem 0 0.5rem 0.5rem; - border-left-color: #fff; -} - -.popover-header { - padding: 0.5rem 0.75rem; - margin-bottom: 0; - font-size: 1rem; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-top-left-radius: calc(0.3rem - 1px); - border-top-right-radius: calc(0.3rem - 1px); -} -.popover-header:empty { - display: none; -} - -.popover-body { - padding: 0.5rem 0.75rem; - color: #515151; -} - -.carousel { - position: relative; -} - -.carousel.pointer-event { - -ms-touch-action: pan-y; - touch-action: pan-y; -} - -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} -.carousel-inner::after { - display: block; - clear: both; - content: ""; -} - -.carousel-item { - position: relative; - display: none; - float: left; - width: 100%; - margin-right: -100%; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-transition: -webkit-transform 0.6s ease-in-out; - transition: -webkit-transform 0.6s ease-in-out; - -o-transition: -o-transform 0.6s ease-in-out; - transition: transform 0.6s ease-in-out; - transition: - transform 0.6s ease-in-out, - -webkit-transform 0.6s ease-in-out, - -o-transform 0.6s ease-in-out; -} -@media (prefers-reduced-motion: reduce) { - .carousel-item { - -webkit-transition: none; - -o-transition: none; - transition: none; - } -} - -.carousel-item.active, -.carousel-item-next, -.carousel-item-prev { - display: block; -} - -.carousel-item-next:not(.carousel-item-left), -.active.carousel-item-right { - -webkit-transform: translateX(100%); - -o-transform: translateX(100%); - transform: translateX(100%); -} - -.carousel-item-prev:not(.carousel-item-right), -.active.carousel-item-left { - -webkit-transform: translateX(-100%); - -o-transform: translateX(-100%); - transform: translateX(-100%); -} - -.carousel-fade .carousel-item { - opacity: 0; - -webkit-transition-property: opacity; - -o-transition-property: opacity; - transition-property: opacity; - -webkit-transform: none; - -o-transform: none; - transform: none; -} - -.carousel-fade .carousel-item.active, -.carousel-fade .carousel-item-next.carousel-item-left, -.carousel-fade .carousel-item-prev.carousel-item-right { - z-index: 1; - opacity: 1; -} - -.carousel-fade .active.carousel-item-left, -.carousel-fade .active.carousel-item-right { - z-index: 0; - opacity: 0; - -webkit-transition: 0s 0.6s opacity; - -o-transition: 0s 0.6s opacity; - transition: 0s 0.6s opacity; -} -@media (prefers-reduced-motion: reduce) { - .carousel-fade .active.carousel-item-left, - .carousel-fade .active.carousel-item-right { - -webkit-transition: none; - -o-transition: none; - transition: none; - } -} - -.carousel-control-prev, -.carousel-control-next { - position: absolute; - top: 0; - bottom: 0; - z-index: 1; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - width: 15%; - color: #fff; - text-align: center; - opacity: 0.5; - -webkit-transition: opacity 0.15s ease; - -o-transition: opacity 0.15s ease; - transition: opacity 0.15s ease; -} -@media (prefers-reduced-motion: reduce) { - .carousel-control-prev, - .carousel-control-next { - -webkit-transition: none; - -o-transition: none; - transition: none; - } -} -.carousel-control-prev:hover, -.carousel-control-prev:focus, -.carousel-control-next:hover, -.carousel-control-next:focus { - color: #fff; - text-decoration: none; - outline: 0; - opacity: 0.9; -} - -.carousel-control-prev { - left: 0; -} - -.carousel-control-next { - right: 0; -} - -.carousel-control-prev-icon, -.carousel-control-next-icon { - display: inline-block; - width: 20px; - height: 20px; - background: no-repeat 50% / 100% 100%; -} - -.carousel-control-prev-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e"); -} - -.carousel-control-next-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e"); -} - -.carousel-indicators { - position: absolute; - right: 0; - bottom: 0; - left: 0; - z-index: 15; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - padding-left: 0; - margin-right: 15%; - margin-left: 15%; - list-style: none; -} -.carousel-indicators li { - -webkit-box-sizing: content-box; - box-sizing: content-box; - -webkit-box-flex: 0; - -webkit-flex: 0 1 auto; - -ms-flex: 0 1 auto; - flex: 0 1 auto; - width: 30px; - height: 3px; - margin-right: 3px; - margin-left: 3px; - text-indent: -999px; - cursor: pointer; - background-color: #fff; - background-clip: padding-box; - border-top: 10px solid transparent; - border-bottom: 10px solid transparent; - opacity: 0.5; - -webkit-transition: opacity 0.6s ease; - -o-transition: opacity 0.6s ease; - transition: opacity 0.6s ease; -} -@media (prefers-reduced-motion: reduce) { - .carousel-indicators li { - -webkit-transition: none; - -o-transition: none; - transition: none; - } -} -.carousel-indicators .active { - opacity: 1; -} - -.carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #fff; - text-align: center; -} - -@-webkit-keyframes spinner-border { - to { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} - -@-o-keyframes spinner-border { - to { - -o-transform: rotate(360deg); - transform: rotate(360deg); - } -} - -@keyframes spinner-border { - to { - -webkit-transform: rotate(360deg); - -o-transform: rotate(360deg); - transform: rotate(360deg); - } -} - -.spinner-border { - display: inline-block; - width: 2rem; - height: 2rem; - vertical-align: text-bottom; - border: 0.25em solid currentColor; - border-right-color: transparent; - border-radius: 50%; - -webkit-animation: spinner-border 0.75s linear infinite; - -o-animation: spinner-border 0.75s linear infinite; - animation: spinner-border 0.75s linear infinite; -} - -.spinner-border-sm { - width: 1rem; - height: 1rem; - border-width: 0.2em; -} - -@-webkit-keyframes spinner-grow { - 0% { - -webkit-transform: scale(0); - transform: scale(0); - } - 50% { - opacity: 1; - } -} - -@-o-keyframes spinner-grow { - 0% { - -o-transform: scale(0); - transform: scale(0); - } - 50% { - opacity: 1; - } -} - -@keyframes spinner-grow { - 0% { - -webkit-transform: scale(0); - -o-transform: scale(0); - transform: scale(0); - } - 50% { - opacity: 1; - } -} - -.spinner-grow { - display: inline-block; - width: 2rem; - height: 2rem; - vertical-align: text-bottom; - background-color: currentColor; - border-radius: 50%; - opacity: 0; - -webkit-animation: spinner-grow 0.75s linear infinite; - -o-animation: spinner-grow 0.75s linear infinite; - animation: spinner-grow 0.75s linear infinite; -} - -.spinner-grow-sm { - width: 1rem; - height: 1rem; -} - -.align-baseline { - vertical-align: baseline !important; -} - -.align-top { - vertical-align: top !important; -} - -.align-middle { - vertical-align: middle !important; -} - -.align-bottom { - vertical-align: bottom !important; -} - -.align-text-bottom { - vertical-align: text-bottom !important; -} - -.align-text-top { - vertical-align: text-top !important; -} - -.bg-primary { - background-color: #3f84fc !important; -} - -a.bg-primary:hover, -a.bg-primary:focus, -button.bg-primary:hover, -button.bg-primary:focus { - background-color: #0d64fb !important; -} - -.bg-secondary { - background-color: #727f94 !important; -} - -a.bg-secondary:hover, -a.bg-secondary:focus, -button.bg-secondary:hover, -button.bg-secondary:focus { - background-color: #5b6678 !important; -} - -.bg-success { - background-color: #1dab47 !important; -} - -a.bg-success:hover, -a.bg-success:focus, -button.bg-success:hover, -button.bg-success:focus { - background-color: #167f35 !important; -} - -.bg-info { - background-color: #8a3ffc !important; -} - -a.bg-info:hover, -a.bg-info:focus, -button.bg-info:hover, -button.bg-info:focus { - background-color: #6b0dfb !important; -} - -.bg-warning { - background-color: #fcae3f !important; -} - -a.bg-warning:hover, -a.bg-warning:focus, -button.bg-warning:hover, -button.bg-warning:focus { - background-color: #fb990d !important; -} - -.bg-danger { - background-color: #fc413f !important; -} - -a.bg-danger:hover, -a.bg-danger:focus, -button.bg-danger:hover, -button.bg-danger:focus { - background-color: #fb0f0d !important; -} - -.bg-light { - background-color: #f8f9fa !important; -} - -a.bg-light:hover, -a.bg-light:focus, -button.bg-light:hover, -button.bg-light:focus { - background-color: #dae0e5 !important; -} - -.bg-dark { - background-color: #1e232d !important; -} - -a.bg-dark:hover, -a.bg-dark:focus, -button.bg-dark:hover, -button.bg-dark:focus { - background-color: #0a0b0e !important; -} - -.bg-white { - background-color: #fff !important; -} - -.bg-transparent { - background-color: transparent !important; -} - -.border { - border: 1px solid #dee2e6 !important; -} - -.border-top { - border-top: 1px solid #dee2e6 !important; -} - -.border-right { - border-right: 1px solid #dee2e6 !important; -} - -.border-bottom { - border-bottom: 1px solid #dee2e6 !important; -} - -.border-left { - border-left: 1px solid #dee2e6 !important; -} - -.border-0 { - border: 0 !important; -} - -.border-top-0 { - border-top: 0 !important; -} - -.border-right-0 { - border-right: 0 !important; -} - -.border-bottom-0 { - border-bottom: 0 !important; -} - -.border-left-0 { - border-left: 0 !important; -} - -.border-primary { - border-color: #3f84fc !important; -} - -.border-secondary { - border-color: #727f94 !important; -} - -.border-success { - border-color: #1dab47 !important; -} - -.border-info { - border-color: #8a3ffc !important; -} - -.border-warning { - border-color: #fcae3f !important; -} - -.border-danger { - border-color: #fc413f !important; -} - -.border-light { - border-color: #f8f9fa !important; -} - -.border-dark { - border-color: #1e232d !important; -} - -.border-white { - border-color: #fff !important; -} - -.rounded-sm { - border-radius: 0.2rem !important; -} - -.rounded { - border-radius: 0 !important; -} - -.rounded-top { - border-top-left-radius: 0 !important; - border-top-right-radius: 0 !important; -} - -.rounded-right { - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} - -.rounded-bottom { - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 0 !important; -} - -.rounded-left { - border-top-left-radius: 0 !important; - border-bottom-left-radius: 0 !important; -} - -.rounded-lg { - border-radius: 0.3rem !important; -} - -.rounded-circle { - border-radius: 50% !important; -} - -.rounded-pill { - border-radius: 50rem !important; -} - -.rounded-0 { - border-radius: 0 !important; -} - -.clearfix::after { - display: block; - clear: both; - content: ""; -} - -.d-none { - display: none !important; -} - -.d-inline { - display: inline !important; -} - -.d-inline-block { - display: inline-block !important; -} - -.d-block { - display: block !important; -} - -.d-table { - display: table !important; -} - -.d-table-row { - display: table-row !important; -} - -.d-table-cell { - display: table-cell !important; -} - -.d-flex { - display: -webkit-box !important; - display: -webkit-flex !important; - display: -ms-flexbox !important; - display: flex !important; -} - -.d-inline-flex { - display: -webkit-inline-box !important; - display: -webkit-inline-flex !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important; -} - -@media (min-width: 576px) { - .d-sm-none { - display: none !important; - } - .d-sm-inline { - display: inline !important; - } - .d-sm-inline-block { - display: inline-block !important; - } - .d-sm-block { - display: block !important; - } - .d-sm-table { - display: table !important; - } - .d-sm-table-row { - display: table-row !important; - } - .d-sm-table-cell { - display: table-cell !important; - } - .d-sm-flex { - display: -webkit-box !important; - display: -webkit-flex !important; - display: -ms-flexbox !important; - display: flex !important; - } - .d-sm-inline-flex { - display: -webkit-inline-box !important; - display: -webkit-inline-flex !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important; - } -} - -@media (min-width: 768px) { - .d-md-none { - display: none !important; - } - .d-md-inline { - display: inline !important; - } - .d-md-inline-block { - display: inline-block !important; - } - .d-md-block { - display: block !important; - } - .d-md-table { - display: table !important; - } - .d-md-table-row { - display: table-row !important; - } - .d-md-table-cell { - display: table-cell !important; - } - .d-md-flex { - display: -webkit-box !important; - display: -webkit-flex !important; - display: -ms-flexbox !important; - display: flex !important; - } - .d-md-inline-flex { - display: -webkit-inline-box !important; - display: -webkit-inline-flex !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important; - } -} - -@media (min-width: 992px) { - .d-lg-none { - display: none !important; - } - .d-lg-inline { - display: inline !important; - } - .d-lg-inline-block { - display: inline-block !important; - } - .d-lg-block { - display: block !important; - } - .d-lg-table { - display: table !important; - } - .d-lg-table-row { - display: table-row !important; - } - .d-lg-table-cell { - display: table-cell !important; - } - .d-lg-flex { - display: -webkit-box !important; - display: -webkit-flex !important; - display: -ms-flexbox !important; - display: flex !important; - } - .d-lg-inline-flex { - display: -webkit-inline-box !important; - display: -webkit-inline-flex !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important; - } -} - -@media (min-width: 1200px) { - .d-xl-none { - display: none !important; - } - .d-xl-inline { - display: inline !important; - } - .d-xl-inline-block { - display: inline-block !important; - } - .d-xl-block { - display: block !important; - } - .d-xl-table { - display: table !important; - } - .d-xl-table-row { - display: table-row !important; - } - .d-xl-table-cell { - display: table-cell !important; - } - .d-xl-flex { - display: -webkit-box !important; - display: -webkit-flex !important; - display: -ms-flexbox !important; - display: flex !important; - } - .d-xl-inline-flex { - display: -webkit-inline-box !important; - display: -webkit-inline-flex !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important; - } -} - -@media print { - .d-print-none { - display: none !important; - } - .d-print-inline { - display: inline !important; - } - .d-print-inline-block { - display: inline-block !important; - } - .d-print-block { - display: block !important; - } - .d-print-table { - display: table !important; - } - .d-print-table-row { - display: table-row !important; - } - .d-print-table-cell { - display: table-cell !important; - } - .d-print-flex { - display: -webkit-box !important; - display: -webkit-flex !important; - display: -ms-flexbox !important; - display: flex !important; - } - .d-print-inline-flex { - display: -webkit-inline-box !important; - display: -webkit-inline-flex !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important; - } -} - -.embed-responsive { - position: relative; - display: block; - width: 100%; - padding: 0; - overflow: hidden; -} -.embed-responsive::before { - display: block; - content: ""; -} -.embed-responsive .embed-responsive-item, -.embed-responsive iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; -} - -.embed-responsive-21by9::before { - padding-top: 42.85714%; -} - -.embed-responsive-16by9::before { - padding-top: 56.25%; -} - -.embed-responsive-4by3::before { - padding-top: 75%; -} - -.embed-responsive-1by1::before { - padding-top: 100%; -} - -.flex-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - -webkit-flex-direction: row !important; - -ms-flex-direction: row !important; - flex-direction: row !important; -} - -.flex-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - -webkit-flex-direction: column !important; - -ms-flex-direction: column !important; - flex-direction: column !important; -} - -.flex-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - -webkit-flex-direction: row-reverse !important; - -ms-flex-direction: row-reverse !important; - flex-direction: row-reverse !important; -} - -.flex-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - -webkit-flex-direction: column-reverse !important; - -ms-flex-direction: column-reverse !important; - flex-direction: column-reverse !important; -} - -.flex-wrap { - -webkit-flex-wrap: wrap !important; - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important; -} - -.flex-nowrap { - -webkit-flex-wrap: nowrap !important; - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important; -} - -.flex-wrap-reverse { - -webkit-flex-wrap: wrap-reverse !important; - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important; -} - -.flex-fill { - -webkit-box-flex: 1 !important; - -webkit-flex: 1 1 auto !important; - -ms-flex: 1 1 auto !important; - flex: 1 1 auto !important; -} - -.flex-grow-0 { - -webkit-box-flex: 0 !important; - -webkit-flex-grow: 0 !important; - -ms-flex-positive: 0 !important; - flex-grow: 0 !important; -} - -.flex-grow-1 { - -webkit-box-flex: 1 !important; - -webkit-flex-grow: 1 !important; - -ms-flex-positive: 1 !important; - flex-grow: 1 !important; -} - -.flex-shrink-0 { - -webkit-flex-shrink: 0 !important; - -ms-flex-negative: 0 !important; - flex-shrink: 0 !important; -} - -.flex-shrink-1 { - -webkit-flex-shrink: 1 !important; - -ms-flex-negative: 1 !important; - flex-shrink: 1 !important; -} - -.justify-content-start { - -webkit-box-pack: start !important; - -webkit-justify-content: flex-start !important; - -ms-flex-pack: start !important; - justify-content: flex-start !important; -} - -.justify-content-end { - -webkit-box-pack: end !important; - -webkit-justify-content: flex-end !important; - -ms-flex-pack: end !important; - justify-content: flex-end !important; -} - -.justify-content-center { - -webkit-box-pack: center !important; - -webkit-justify-content: center !important; - -ms-flex-pack: center !important; - justify-content: center !important; -} - -.justify-content-between { - -webkit-box-pack: justify !important; - -webkit-justify-content: space-between !important; - -ms-flex-pack: justify !important; - justify-content: space-between !important; -} - -.justify-content-around { - -webkit-justify-content: space-around !important; - -ms-flex-pack: distribute !important; - justify-content: space-around !important; -} - -.align-items-start { - -webkit-box-align: start !important; - -webkit-align-items: flex-start !important; - -ms-flex-align: start !important; - align-items: flex-start !important; -} - -.align-items-end { - -webkit-box-align: end !important; - -webkit-align-items: flex-end !important; - -ms-flex-align: end !important; - align-items: flex-end !important; -} - -.align-items-center { - -webkit-box-align: center !important; - -webkit-align-items: center !important; - -ms-flex-align: center !important; - align-items: center !important; -} - -.align-items-baseline { - -webkit-box-align: baseline !important; - -webkit-align-items: baseline !important; - -ms-flex-align: baseline !important; - align-items: baseline !important; -} - -.align-items-stretch { - -webkit-box-align: stretch !important; - -webkit-align-items: stretch !important; - -ms-flex-align: stretch !important; - align-items: stretch !important; -} - -.align-content-start { - -webkit-align-content: flex-start !important; - -ms-flex-line-pack: start !important; - align-content: flex-start !important; -} - -.align-content-end { - -webkit-align-content: flex-end !important; - -ms-flex-line-pack: end !important; - align-content: flex-end !important; -} - -.align-content-center { - -webkit-align-content: center !important; - -ms-flex-line-pack: center !important; - align-content: center !important; -} - -.align-content-between { - -webkit-align-content: space-between !important; - -ms-flex-line-pack: justify !important; - align-content: space-between !important; -} - -.align-content-around { - -webkit-align-content: space-around !important; - -ms-flex-line-pack: distribute !important; - align-content: space-around !important; -} - -.align-content-stretch { - -webkit-align-content: stretch !important; - -ms-flex-line-pack: stretch !important; - align-content: stretch !important; -} - -.align-self-auto { - -webkit-align-self: auto !important; - -ms-flex-item-align: auto !important; - align-self: auto !important; -} - -.align-self-start { - -webkit-align-self: flex-start !important; - -ms-flex-item-align: start !important; - align-self: flex-start !important; -} - -.align-self-end { - -webkit-align-self: flex-end !important; - -ms-flex-item-align: end !important; - align-self: flex-end !important; -} - -.align-self-center { - -webkit-align-self: center !important; - -ms-flex-item-align: center !important; - align-self: center !important; -} - -.align-self-baseline { - -webkit-align-self: baseline !important; - -ms-flex-item-align: baseline !important; - align-self: baseline !important; -} - -.align-self-stretch { - -webkit-align-self: stretch !important; - -ms-flex-item-align: stretch !important; - align-self: stretch !important; -} - -@media (min-width: 576px) { - .flex-sm-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - -webkit-flex-direction: row !important; - -ms-flex-direction: row !important; - flex-direction: row !important; - } - .flex-sm-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - -webkit-flex-direction: column !important; - -ms-flex-direction: column !important; - flex-direction: column !important; - } - .flex-sm-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - -webkit-flex-direction: row-reverse !important; - -ms-flex-direction: row-reverse !important; - flex-direction: row-reverse !important; - } - .flex-sm-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - -webkit-flex-direction: column-reverse !important; - -ms-flex-direction: column-reverse !important; - flex-direction: column-reverse !important; - } - .flex-sm-wrap { - -webkit-flex-wrap: wrap !important; - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important; - } - .flex-sm-nowrap { - -webkit-flex-wrap: nowrap !important; - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important; - } - .flex-sm-wrap-reverse { - -webkit-flex-wrap: wrap-reverse !important; - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important; - } - .flex-sm-fill { - -webkit-box-flex: 1 !important; - -webkit-flex: 1 1 auto !important; - -ms-flex: 1 1 auto !important; - flex: 1 1 auto !important; - } - .flex-sm-grow-0 { - -webkit-box-flex: 0 !important; - -webkit-flex-grow: 0 !important; - -ms-flex-positive: 0 !important; - flex-grow: 0 !important; - } - .flex-sm-grow-1 { - -webkit-box-flex: 1 !important; - -webkit-flex-grow: 1 !important; - -ms-flex-positive: 1 !important; - flex-grow: 1 !important; - } - .flex-sm-shrink-0 { - -webkit-flex-shrink: 0 !important; - -ms-flex-negative: 0 !important; - flex-shrink: 0 !important; - } - .flex-sm-shrink-1 { - -webkit-flex-shrink: 1 !important; - -ms-flex-negative: 1 !important; - flex-shrink: 1 !important; - } - .justify-content-sm-start { - -webkit-box-pack: start !important; - -webkit-justify-content: flex-start !important; - -ms-flex-pack: start !important; - justify-content: flex-start !important; - } - .justify-content-sm-end { - -webkit-box-pack: end !important; - -webkit-justify-content: flex-end !important; - -ms-flex-pack: end !important; - justify-content: flex-end !important; - } - .justify-content-sm-center { - -webkit-box-pack: center !important; - -webkit-justify-content: center !important; - -ms-flex-pack: center !important; - justify-content: center !important; - } - .justify-content-sm-between { - -webkit-box-pack: justify !important; - -webkit-justify-content: space-between !important; - -ms-flex-pack: justify !important; - justify-content: space-between !important; - } - .justify-content-sm-around { - -webkit-justify-content: space-around !important; - -ms-flex-pack: distribute !important; - justify-content: space-around !important; - } - .align-items-sm-start { - -webkit-box-align: start !important; - -webkit-align-items: flex-start !important; - -ms-flex-align: start !important; - align-items: flex-start !important; - } - .align-items-sm-end { - -webkit-box-align: end !important; - -webkit-align-items: flex-end !important; - -ms-flex-align: end !important; - align-items: flex-end !important; - } - .align-items-sm-center { - -webkit-box-align: center !important; - -webkit-align-items: center !important; - -ms-flex-align: center !important; - align-items: center !important; - } - .align-items-sm-baseline { - -webkit-box-align: baseline !important; - -webkit-align-items: baseline !important; - -ms-flex-align: baseline !important; - align-items: baseline !important; - } - .align-items-sm-stretch { - -webkit-box-align: stretch !important; - -webkit-align-items: stretch !important; - -ms-flex-align: stretch !important; - align-items: stretch !important; - } - .align-content-sm-start { - -webkit-align-content: flex-start !important; - -ms-flex-line-pack: start !important; - align-content: flex-start !important; - } - .align-content-sm-end { - -webkit-align-content: flex-end !important; - -ms-flex-line-pack: end !important; - align-content: flex-end !important; - } - .align-content-sm-center { - -webkit-align-content: center !important; - -ms-flex-line-pack: center !important; - align-content: center !important; - } - .align-content-sm-between { - -webkit-align-content: space-between !important; - -ms-flex-line-pack: justify !important; - align-content: space-between !important; - } - .align-content-sm-around { - -webkit-align-content: space-around !important; - -ms-flex-line-pack: distribute !important; - align-content: space-around !important; - } - .align-content-sm-stretch { - -webkit-align-content: stretch !important; - -ms-flex-line-pack: stretch !important; - align-content: stretch !important; - } - .align-self-sm-auto { - -webkit-align-self: auto !important; - -ms-flex-item-align: auto !important; - align-self: auto !important; - } - .align-self-sm-start { - -webkit-align-self: flex-start !important; - -ms-flex-item-align: start !important; - align-self: flex-start !important; - } - .align-self-sm-end { - -webkit-align-self: flex-end !important; - -ms-flex-item-align: end !important; - align-self: flex-end !important; - } - .align-self-sm-center { - -webkit-align-self: center !important; - -ms-flex-item-align: center !important; - align-self: center !important; - } - .align-self-sm-baseline { - -webkit-align-self: baseline !important; - -ms-flex-item-align: baseline !important; - align-self: baseline !important; - } - .align-self-sm-stretch { - -webkit-align-self: stretch !important; - -ms-flex-item-align: stretch !important; - align-self: stretch !important; - } -} - -@media (min-width: 768px) { - .flex-md-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - -webkit-flex-direction: row !important; - -ms-flex-direction: row !important; - flex-direction: row !important; - } - .flex-md-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - -webkit-flex-direction: column !important; - -ms-flex-direction: column !important; - flex-direction: column !important; - } - .flex-md-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - -webkit-flex-direction: row-reverse !important; - -ms-flex-direction: row-reverse !important; - flex-direction: row-reverse !important; - } - .flex-md-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - -webkit-flex-direction: column-reverse !important; - -ms-flex-direction: column-reverse !important; - flex-direction: column-reverse !important; - } - .flex-md-wrap { - -webkit-flex-wrap: wrap !important; - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important; - } - .flex-md-nowrap { - -webkit-flex-wrap: nowrap !important; - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important; - } - .flex-md-wrap-reverse { - -webkit-flex-wrap: wrap-reverse !important; - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important; - } - .flex-md-fill { - -webkit-box-flex: 1 !important; - -webkit-flex: 1 1 auto !important; - -ms-flex: 1 1 auto !important; - flex: 1 1 auto !important; - } - .flex-md-grow-0 { - -webkit-box-flex: 0 !important; - -webkit-flex-grow: 0 !important; - -ms-flex-positive: 0 !important; - flex-grow: 0 !important; - } - .flex-md-grow-1 { - -webkit-box-flex: 1 !important; - -webkit-flex-grow: 1 !important; - -ms-flex-positive: 1 !important; - flex-grow: 1 !important; - } - .flex-md-shrink-0 { - -webkit-flex-shrink: 0 !important; - -ms-flex-negative: 0 !important; - flex-shrink: 0 !important; - } - .flex-md-shrink-1 { - -webkit-flex-shrink: 1 !important; - -ms-flex-negative: 1 !important; - flex-shrink: 1 !important; - } - .justify-content-md-start { - -webkit-box-pack: start !important; - -webkit-justify-content: flex-start !important; - -ms-flex-pack: start !important; - justify-content: flex-start !important; - } - .justify-content-md-end { - -webkit-box-pack: end !important; - -webkit-justify-content: flex-end !important; - -ms-flex-pack: end !important; - justify-content: flex-end !important; - } - .justify-content-md-center { - -webkit-box-pack: center !important; - -webkit-justify-content: center !important; - -ms-flex-pack: center !important; - justify-content: center !important; - } - .justify-content-md-between { - -webkit-box-pack: justify !important; - -webkit-justify-content: space-between !important; - -ms-flex-pack: justify !important; - justify-content: space-between !important; - } - .justify-content-md-around { - -webkit-justify-content: space-around !important; - -ms-flex-pack: distribute !important; - justify-content: space-around !important; - } - .align-items-md-start { - -webkit-box-align: start !important; - -webkit-align-items: flex-start !important; - -ms-flex-align: start !important; - align-items: flex-start !important; - } - .align-items-md-end { - -webkit-box-align: end !important; - -webkit-align-items: flex-end !important; - -ms-flex-align: end !important; - align-items: flex-end !important; - } - .align-items-md-center { - -webkit-box-align: center !important; - -webkit-align-items: center !important; - -ms-flex-align: center !important; - align-items: center !important; - } - .align-items-md-baseline { - -webkit-box-align: baseline !important; - -webkit-align-items: baseline !important; - -ms-flex-align: baseline !important; - align-items: baseline !important; - } - .align-items-md-stretch { - -webkit-box-align: stretch !important; - -webkit-align-items: stretch !important; - -ms-flex-align: stretch !important; - align-items: stretch !important; - } - .align-content-md-start { - -webkit-align-content: flex-start !important; - -ms-flex-line-pack: start !important; - align-content: flex-start !important; - } - .align-content-md-end { - -webkit-align-content: flex-end !important; - -ms-flex-line-pack: end !important; - align-content: flex-end !important; - } - .align-content-md-center { - -webkit-align-content: center !important; - -ms-flex-line-pack: center !important; - align-content: center !important; - } - .align-content-md-between { - -webkit-align-content: space-between !important; - -ms-flex-line-pack: justify !important; - align-content: space-between !important; - } - .align-content-md-around { - -webkit-align-content: space-around !important; - -ms-flex-line-pack: distribute !important; - align-content: space-around !important; - } - .align-content-md-stretch { - -webkit-align-content: stretch !important; - -ms-flex-line-pack: stretch !important; - align-content: stretch !important; - } - .align-self-md-auto { - -webkit-align-self: auto !important; - -ms-flex-item-align: auto !important; - align-self: auto !important; - } - .align-self-md-start { - -webkit-align-self: flex-start !important; - -ms-flex-item-align: start !important; - align-self: flex-start !important; - } - .align-self-md-end { - -webkit-align-self: flex-end !important; - -ms-flex-item-align: end !important; - align-self: flex-end !important; - } - .align-self-md-center { - -webkit-align-self: center !important; - -ms-flex-item-align: center !important; - align-self: center !important; - } - .align-self-md-baseline { - -webkit-align-self: baseline !important; - -ms-flex-item-align: baseline !important; - align-self: baseline !important; - } - .align-self-md-stretch { - -webkit-align-self: stretch !important; - -ms-flex-item-align: stretch !important; - align-self: stretch !important; - } -} - -@media (min-width: 992px) { - .flex-lg-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - -webkit-flex-direction: row !important; - -ms-flex-direction: row !important; - flex-direction: row !important; - } - .flex-lg-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - -webkit-flex-direction: column !important; - -ms-flex-direction: column !important; - flex-direction: column !important; - } - .flex-lg-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - -webkit-flex-direction: row-reverse !important; - -ms-flex-direction: row-reverse !important; - flex-direction: row-reverse !important; - } - .flex-lg-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - -webkit-flex-direction: column-reverse !important; - -ms-flex-direction: column-reverse !important; - flex-direction: column-reverse !important; - } - .flex-lg-wrap { - -webkit-flex-wrap: wrap !important; - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important; - } - .flex-lg-nowrap { - -webkit-flex-wrap: nowrap !important; - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important; - } - .flex-lg-wrap-reverse { - -webkit-flex-wrap: wrap-reverse !important; - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important; - } - .flex-lg-fill { - -webkit-box-flex: 1 !important; - -webkit-flex: 1 1 auto !important; - -ms-flex: 1 1 auto !important; - flex: 1 1 auto !important; - } - .flex-lg-grow-0 { - -webkit-box-flex: 0 !important; - -webkit-flex-grow: 0 !important; - -ms-flex-positive: 0 !important; - flex-grow: 0 !important; - } - .flex-lg-grow-1 { - -webkit-box-flex: 1 !important; - -webkit-flex-grow: 1 !important; - -ms-flex-positive: 1 !important; - flex-grow: 1 !important; - } - .flex-lg-shrink-0 { - -webkit-flex-shrink: 0 !important; - -ms-flex-negative: 0 !important; - flex-shrink: 0 !important; - } - .flex-lg-shrink-1 { - -webkit-flex-shrink: 1 !important; - -ms-flex-negative: 1 !important; - flex-shrink: 1 !important; - } - .justify-content-lg-start { - -webkit-box-pack: start !important; - -webkit-justify-content: flex-start !important; - -ms-flex-pack: start !important; - justify-content: flex-start !important; - } - .justify-content-lg-end { - -webkit-box-pack: end !important; - -webkit-justify-content: flex-end !important; - -ms-flex-pack: end !important; - justify-content: flex-end !important; - } - .justify-content-lg-center { - -webkit-box-pack: center !important; - -webkit-justify-content: center !important; - -ms-flex-pack: center !important; - justify-content: center !important; - } - .justify-content-lg-between { - -webkit-box-pack: justify !important; - -webkit-justify-content: space-between !important; - -ms-flex-pack: justify !important; - justify-content: space-between !important; - } - .justify-content-lg-around { - -webkit-justify-content: space-around !important; - -ms-flex-pack: distribute !important; - justify-content: space-around !important; - } - .align-items-lg-start { - -webkit-box-align: start !important; - -webkit-align-items: flex-start !important; - -ms-flex-align: start !important; - align-items: flex-start !important; - } - .align-items-lg-end { - -webkit-box-align: end !important; - -webkit-align-items: flex-end !important; - -ms-flex-align: end !important; - align-items: flex-end !important; - } - .align-items-lg-center { - -webkit-box-align: center !important; - -webkit-align-items: center !important; - -ms-flex-align: center !important; - align-items: center !important; - } - .align-items-lg-baseline { - -webkit-box-align: baseline !important; - -webkit-align-items: baseline !important; - -ms-flex-align: baseline !important; - align-items: baseline !important; - } - .align-items-lg-stretch { - -webkit-box-align: stretch !important; - -webkit-align-items: stretch !important; - -ms-flex-align: stretch !important; - align-items: stretch !important; - } - .align-content-lg-start { - -webkit-align-content: flex-start !important; - -ms-flex-line-pack: start !important; - align-content: flex-start !important; - } - .align-content-lg-end { - -webkit-align-content: flex-end !important; - -ms-flex-line-pack: end !important; - align-content: flex-end !important; - } - .align-content-lg-center { - -webkit-align-content: center !important; - -ms-flex-line-pack: center !important; - align-content: center !important; - } - .align-content-lg-between { - -webkit-align-content: space-between !important; - -ms-flex-line-pack: justify !important; - align-content: space-between !important; - } - .align-content-lg-around { - -webkit-align-content: space-around !important; - -ms-flex-line-pack: distribute !important; - align-content: space-around !important; - } - .align-content-lg-stretch { - -webkit-align-content: stretch !important; - -ms-flex-line-pack: stretch !important; - align-content: stretch !important; - } - .align-self-lg-auto { - -webkit-align-self: auto !important; - -ms-flex-item-align: auto !important; - align-self: auto !important; - } - .align-self-lg-start { - -webkit-align-self: flex-start !important; - -ms-flex-item-align: start !important; - align-self: flex-start !important; - } - .align-self-lg-end { - -webkit-align-self: flex-end !important; - -ms-flex-item-align: end !important; - align-self: flex-end !important; - } - .align-self-lg-center { - -webkit-align-self: center !important; - -ms-flex-item-align: center !important; - align-self: center !important; - } - .align-self-lg-baseline { - -webkit-align-self: baseline !important; - -ms-flex-item-align: baseline !important; - align-self: baseline !important; - } - .align-self-lg-stretch { - -webkit-align-self: stretch !important; - -ms-flex-item-align: stretch !important; - align-self: stretch !important; - } -} - -@media (min-width: 1200px) { - .flex-xl-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - -webkit-flex-direction: row !important; - -ms-flex-direction: row !important; - flex-direction: row !important; - } - .flex-xl-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - -webkit-flex-direction: column !important; - -ms-flex-direction: column !important; - flex-direction: column !important; - } - .flex-xl-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - -webkit-flex-direction: row-reverse !important; - -ms-flex-direction: row-reverse !important; - flex-direction: row-reverse !important; - } - .flex-xl-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - -webkit-flex-direction: column-reverse !important; - -ms-flex-direction: column-reverse !important; - flex-direction: column-reverse !important; - } - .flex-xl-wrap { - -webkit-flex-wrap: wrap !important; - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important; - } - .flex-xl-nowrap { - -webkit-flex-wrap: nowrap !important; - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important; - } - .flex-xl-wrap-reverse { - -webkit-flex-wrap: wrap-reverse !important; - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important; - } - .flex-xl-fill { - -webkit-box-flex: 1 !important; - -webkit-flex: 1 1 auto !important; - -ms-flex: 1 1 auto !important; - flex: 1 1 auto !important; - } - .flex-xl-grow-0 { - -webkit-box-flex: 0 !important; - -webkit-flex-grow: 0 !important; - -ms-flex-positive: 0 !important; - flex-grow: 0 !important; - } - .flex-xl-grow-1 { - -webkit-box-flex: 1 !important; - -webkit-flex-grow: 1 !important; - -ms-flex-positive: 1 !important; - flex-grow: 1 !important; - } - .flex-xl-shrink-0 { - -webkit-flex-shrink: 0 !important; - -ms-flex-negative: 0 !important; - flex-shrink: 0 !important; - } - .flex-xl-shrink-1 { - -webkit-flex-shrink: 1 !important; - -ms-flex-negative: 1 !important; - flex-shrink: 1 !important; - } - .justify-content-xl-start { - -webkit-box-pack: start !important; - -webkit-justify-content: flex-start !important; - -ms-flex-pack: start !important; - justify-content: flex-start !important; - } - .justify-content-xl-end { - -webkit-box-pack: end !important; - -webkit-justify-content: flex-end !important; - -ms-flex-pack: end !important; - justify-content: flex-end !important; - } - .justify-content-xl-center { - -webkit-box-pack: center !important; - -webkit-justify-content: center !important; - -ms-flex-pack: center !important; - justify-content: center !important; - } - .justify-content-xl-between { - -webkit-box-pack: justify !important; - -webkit-justify-content: space-between !important; - -ms-flex-pack: justify !important; - justify-content: space-between !important; - } - .justify-content-xl-around { - -webkit-justify-content: space-around !important; - -ms-flex-pack: distribute !important; - justify-content: space-around !important; - } - .align-items-xl-start { - -webkit-box-align: start !important; - -webkit-align-items: flex-start !important; - -ms-flex-align: start !important; - align-items: flex-start !important; - } - .align-items-xl-end { - -webkit-box-align: end !important; - -webkit-align-items: flex-end !important; - -ms-flex-align: end !important; - align-items: flex-end !important; - } - .align-items-xl-center { - -webkit-box-align: center !important; - -webkit-align-items: center !important; - -ms-flex-align: center !important; - align-items: center !important; - } - .align-items-xl-baseline { - -webkit-box-align: baseline !important; - -webkit-align-items: baseline !important; - -ms-flex-align: baseline !important; - align-items: baseline !important; - } - .align-items-xl-stretch { - -webkit-box-align: stretch !important; - -webkit-align-items: stretch !important; - -ms-flex-align: stretch !important; - align-items: stretch !important; - } - .align-content-xl-start { - -webkit-align-content: flex-start !important; - -ms-flex-line-pack: start !important; - align-content: flex-start !important; - } - .align-content-xl-end { - -webkit-align-content: flex-end !important; - -ms-flex-line-pack: end !important; - align-content: flex-end !important; - } - .align-content-xl-center { - -webkit-align-content: center !important; - -ms-flex-line-pack: center !important; - align-content: center !important; - } - .align-content-xl-between { - -webkit-align-content: space-between !important; - -ms-flex-line-pack: justify !important; - align-content: space-between !important; - } - .align-content-xl-around { - -webkit-align-content: space-around !important; - -ms-flex-line-pack: distribute !important; - align-content: space-around !important; - } - .align-content-xl-stretch { - -webkit-align-content: stretch !important; - -ms-flex-line-pack: stretch !important; - align-content: stretch !important; - } - .align-self-xl-auto { - -webkit-align-self: auto !important; - -ms-flex-item-align: auto !important; - align-self: auto !important; - } - .align-self-xl-start { - -webkit-align-self: flex-start !important; - -ms-flex-item-align: start !important; - align-self: flex-start !important; - } - .align-self-xl-end { - -webkit-align-self: flex-end !important; - -ms-flex-item-align: end !important; - align-self: flex-end !important; - } - .align-self-xl-center { - -webkit-align-self: center !important; - -ms-flex-item-align: center !important; - align-self: center !important; - } - .align-self-xl-baseline { - -webkit-align-self: baseline !important; - -ms-flex-item-align: baseline !important; - align-self: baseline !important; - } - .align-self-xl-stretch { - -webkit-align-self: stretch !important; - -ms-flex-item-align: stretch !important; - align-self: stretch !important; - } -} - -.float-left { - float: left !important; -} - -.float-right { - float: right !important; -} - -.float-none { - float: none !important; -} - -@media (min-width: 576px) { - .float-sm-left { - float: left !important; - } - .float-sm-right { - float: right !important; - } - .float-sm-none { - float: none !important; - } -} - -@media (min-width: 768px) { - .float-md-left { - float: left !important; - } - .float-md-right { - float: right !important; - } - .float-md-none { - float: none !important; - } -} - -@media (min-width: 992px) { - .float-lg-left { - float: left !important; - } - .float-lg-right { - float: right !important; - } - .float-lg-none { - float: none !important; - } -} - -@media (min-width: 1200px) { - .float-xl-left { - float: left !important; - } - .float-xl-right { - float: right !important; - } - .float-xl-none { - float: none !important; - } -} - -.overflow-auto { - overflow: auto !important; -} - -.overflow-hidden { - overflow: hidden !important; -} - -.position-static { - position: static !important; -} - -.position-relative { - position: relative !important; -} - -.position-absolute { - position: absolute !important; -} - -.position-fixed { - position: fixed !important; -} - -.position-sticky { - position: -webkit-sticky !important; - position: sticky !important; -} - -.fixed-top { - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 1030; -} - -.fixed-bottom { - position: fixed; - right: 0; - bottom: 0; - left: 0; - z-index: 1030; -} - -@supports ((position: -webkit-sticky) or (position: sticky)) { - .sticky-top { - position: -webkit-sticky; - position: sticky; - top: 0; - z-index: 1020; - } -} - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border: 0; -} - -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - overflow: visible; - clip: auto; - white-space: normal; -} - -.shadow-sm { - -webkit-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; - box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; -} - -.shadow { - -webkit-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; - box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; -} - -.shadow-lg { - -webkit-box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; - box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; -} - -.shadow-none { - -webkit-box-shadow: none !important; - box-shadow: none !important; -} - -.w-25 { - width: 25% !important; -} - -.w-50 { - width: 50% !important; -} - -.w-75 { - width: 75% !important; -} - -.w-100 { - width: 100% !important; -} - -.w-auto { - width: auto !important; -} - -.h-25 { - height: 25% !important; -} - -.h-50 { - height: 50% !important; -} - -.h-75 { - height: 75% !important; -} - -.h-100 { - height: 100% !important; -} - -.h-auto { - height: auto !important; -} - -.mw-100 { - max-width: 100% !important; -} - -.mh-100 { - max-height: 100% !important; -} - -.min-vw-100 { - min-width: 100vw !important; -} - -.min-vh-100 { - min-height: 100vh !important; -} - -.vw-100 { - width: 100vw !important; -} - -.vh-100 { - height: 100vh !important; -} - -.stretched-link::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1; - pointer-events: auto; - content: ""; - background-color: rgba(0, 0, 0, 0); -} - -.m-0 { - margin: 0 !important; -} - -.mt-0, -.my-0 { - margin-top: 0 !important; -} - -.mr-0, -.mx-0 { - margin-right: 0 !important; -} - -.mb-0, -.my-0 { - margin-bottom: 0 !important; -} - -.ml-0, -.mx-0 { - margin-left: 0 !important; -} - -.m-1 { - margin: 0.25rem !important; -} - -.mt-1, -.my-1 { - margin-top: 0.25rem !important; -} - -.mr-1, -.mx-1 { - margin-right: 0.25rem !important; -} - -.mb-1, -.my-1 { - margin-bottom: 0.25rem !important; -} - -.ml-1, -.mx-1 { - margin-left: 0.25rem !important; -} - -.m-2 { - margin: 0.5rem !important; -} - -.mt-2, -.my-2 { - margin-top: 0.5rem !important; -} - -.mr-2, -.mx-2 { - margin-right: 0.5rem !important; -} - -.mb-2, -.my-2 { - margin-bottom: 0.5rem !important; -} - -.ml-2, -.mx-2 { - margin-left: 0.5rem !important; -} - -.m-3 { - margin: 1rem !important; -} - -.mt-3, -.my-3 { - margin-top: 1rem !important; -} - -.mr-3, -.mx-3 { - margin-right: 1rem !important; -} - -.mb-3, -.my-3 { - margin-bottom: 1rem !important; -} - -.ml-3, -.mx-3 { - margin-left: 1rem !important; -} - -.m-4 { - margin: 1.5rem !important; -} - -.mt-4, -.my-4 { - margin-top: 1.5rem !important; -} - -.mr-4, -.mx-4 { - margin-right: 1.5rem !important; -} - -.mb-4, -.my-4 { - margin-bottom: 1.5rem !important; -} - -.ml-4, -.mx-4 { - margin-left: 1.5rem !important; -} - -.m-5 { - margin: 3rem !important; -} - -.mt-5, -.my-5 { - margin-top: 3rem !important; -} - -.mr-5, -.mx-5 { - margin-right: 3rem !important; -} - -.mb-5, -.my-5 { - margin-bottom: 3rem !important; -} - -.ml-5, -.mx-5 { - margin-left: 3rem !important; -} - -.p-0 { - padding: 0 !important; -} - -.pt-0, -.py-0 { - padding-top: 0 !important; -} - -.pr-0, -.px-0 { - padding-right: 0 !important; -} - -.pb-0, -.py-0 { - padding-bottom: 0 !important; -} - -.pl-0, -.px-0 { - padding-left: 0 !important; -} - -.p-1 { - padding: 0.25rem !important; -} - -.pt-1, -.py-1 { - padding-top: 0.25rem !important; -} - -.pr-1, -.px-1 { - padding-right: 0.25rem !important; -} - -.pb-1, -.py-1 { - padding-bottom: 0.25rem !important; -} - -.pl-1, -.px-1 { - padding-left: 0.25rem !important; -} - -.p-2 { - padding: 0.5rem !important; -} - -.pt-2, -.py-2 { - padding-top: 0.5rem !important; -} - -.pr-2, -.px-2 { - padding-right: 0.5rem !important; -} - -.pb-2, -.py-2 { - padding-bottom: 0.5rem !important; -} - -.pl-2, -.px-2 { - padding-left: 0.5rem !important; -} - -.p-3 { - padding: 1rem !important; -} - -.pt-3, -.py-3 { - padding-top: 1rem !important; -} - -.pr-3, -.px-3 { - padding-right: 1rem !important; -} - -.pb-3, -.py-3 { - padding-bottom: 1rem !important; -} - -.pl-3, -.px-3 { - padding-left: 1rem !important; -} - -.p-4 { - padding: 1.5rem !important; -} - -.pt-4, -.py-4 { - padding-top: 1.5rem !important; -} - -.pr-4, -.px-4 { - padding-right: 1.5rem !important; -} - -.pb-4, -.py-4 { - padding-bottom: 1.5rem !important; -} - -.pl-4, -.px-4 { - padding-left: 1.5rem !important; -} - -.p-5 { - padding: 3rem !important; -} - -.pt-5, -.py-5 { - padding-top: 3rem !important; -} - -.pr-5, -.px-5 { - padding-right: 3rem !important; -} - -.pb-5, -.py-5 { - padding-bottom: 3rem !important; -} - -.pl-5, -.px-5 { - padding-left: 3rem !important; -} - -.m-n1 { - margin: -0.25rem !important; -} - -.mt-n1, -.my-n1 { - margin-top: -0.25rem !important; -} - -.mr-n1, -.mx-n1 { - margin-right: -0.25rem !important; -} - -.mb-n1, -.my-n1 { - margin-bottom: -0.25rem !important; -} - -.ml-n1, -.mx-n1 { - margin-left: -0.25rem !important; -} - -.m-n2 { - margin: -0.5rem !important; -} - -.mt-n2, -.my-n2 { - margin-top: -0.5rem !important; -} - -.mr-n2, -.mx-n2 { - margin-right: -0.5rem !important; -} - -.mb-n2, -.my-n2 { - margin-bottom: -0.5rem !important; -} - -.ml-n2, -.mx-n2 { - margin-left: -0.5rem !important; -} - -.m-n3 { - margin: -1rem !important; -} - -.mt-n3, -.my-n3 { - margin-top: -1rem !important; -} - -.mr-n3, -.mx-n3 { - margin-right: -1rem !important; -} - -.mb-n3, -.my-n3 { - margin-bottom: -1rem !important; -} - -.ml-n3, -.mx-n3 { - margin-left: -1rem !important; -} - -.m-n4 { - margin: -1.5rem !important; -} - -.mt-n4, -.my-n4 { - margin-top: -1.5rem !important; -} - -.mr-n4, -.mx-n4 { - margin-right: -1.5rem !important; -} - -.mb-n4, -.my-n4 { - margin-bottom: -1.5rem !important; -} - -.ml-n4, -.mx-n4 { - margin-left: -1.5rem !important; -} - -.m-n5 { - margin: -3rem !important; -} - -.mt-n5, -.my-n5 { - margin-top: -3rem !important; -} - -.mr-n5, -.mx-n5 { - margin-right: -3rem !important; -} - -.mb-n5, -.my-n5 { - margin-bottom: -3rem !important; -} - -.ml-n5, -.mx-n5 { - margin-left: -3rem !important; -} - -.m-auto { - margin: auto !important; -} - -.mt-auto, -.my-auto { - margin-top: auto !important; -} - -.mr-auto, -.mx-auto { - margin-right: auto !important; -} - -.mb-auto, -.my-auto { - margin-bottom: auto !important; -} - -.ml-auto, -.mx-auto { - margin-left: auto !important; -} - -@media (min-width: 576px) { - .m-sm-0 { - margin: 0 !important; - } - .mt-sm-0, - .my-sm-0 { - margin-top: 0 !important; - } - .mr-sm-0, - .mx-sm-0 { - margin-right: 0 !important; - } - .mb-sm-0, - .my-sm-0 { - margin-bottom: 0 !important; - } - .ml-sm-0, - .mx-sm-0 { - margin-left: 0 !important; - } - .m-sm-1 { - margin: 0.25rem !important; - } - .mt-sm-1, - .my-sm-1 { - margin-top: 0.25rem !important; - } - .mr-sm-1, - .mx-sm-1 { - margin-right: 0.25rem !important; - } - .mb-sm-1, - .my-sm-1 { - margin-bottom: 0.25rem !important; - } - .ml-sm-1, - .mx-sm-1 { - margin-left: 0.25rem !important; - } - .m-sm-2 { - margin: 0.5rem !important; - } - .mt-sm-2, - .my-sm-2 { - margin-top: 0.5rem !important; - } - .mr-sm-2, - .mx-sm-2 { - margin-right: 0.5rem !important; - } - .mb-sm-2, - .my-sm-2 { - margin-bottom: 0.5rem !important; - } - .ml-sm-2, - .mx-sm-2 { - margin-left: 0.5rem !important; - } - .m-sm-3 { - margin: 1rem !important; - } - .mt-sm-3, - .my-sm-3 { - margin-top: 1rem !important; - } - .mr-sm-3, - .mx-sm-3 { - margin-right: 1rem !important; - } - .mb-sm-3, - .my-sm-3 { - margin-bottom: 1rem !important; - } - .ml-sm-3, - .mx-sm-3 { - margin-left: 1rem !important; - } - .m-sm-4 { - margin: 1.5rem !important; - } - .mt-sm-4, - .my-sm-4 { - margin-top: 1.5rem !important; - } - .mr-sm-4, - .mx-sm-4 { - margin-right: 1.5rem !important; - } - .mb-sm-4, - .my-sm-4 { - margin-bottom: 1.5rem !important; - } - .ml-sm-4, - .mx-sm-4 { - margin-left: 1.5rem !important; - } - .m-sm-5 { - margin: 3rem !important; - } - .mt-sm-5, - .my-sm-5 { - margin-top: 3rem !important; - } - .mr-sm-5, - .mx-sm-5 { - margin-right: 3rem !important; - } - .mb-sm-5, - .my-sm-5 { - margin-bottom: 3rem !important; - } - .ml-sm-5, - .mx-sm-5 { - margin-left: 3rem !important; - } - .p-sm-0 { - padding: 0 !important; - } - .pt-sm-0, - .py-sm-0 { - padding-top: 0 !important; - } - .pr-sm-0, - .px-sm-0 { - padding-right: 0 !important; - } - .pb-sm-0, - .py-sm-0 { - padding-bottom: 0 !important; - } - .pl-sm-0, - .px-sm-0 { - padding-left: 0 !important; - } - .p-sm-1 { - padding: 0.25rem !important; - } - .pt-sm-1, - .py-sm-1 { - padding-top: 0.25rem !important; - } - .pr-sm-1, - .px-sm-1 { - padding-right: 0.25rem !important; - } - .pb-sm-1, - .py-sm-1 { - padding-bottom: 0.25rem !important; - } - .pl-sm-1, - .px-sm-1 { - padding-left: 0.25rem !important; - } - .p-sm-2 { - padding: 0.5rem !important; - } - .pt-sm-2, - .py-sm-2 { - padding-top: 0.5rem !important; - } - .pr-sm-2, - .px-sm-2 { - padding-right: 0.5rem !important; - } - .pb-sm-2, - .py-sm-2 { - padding-bottom: 0.5rem !important; - } - .pl-sm-2, - .px-sm-2 { - padding-left: 0.5rem !important; - } - .p-sm-3 { - padding: 1rem !important; - } - .pt-sm-3, - .py-sm-3 { - padding-top: 1rem !important; - } - .pr-sm-3, - .px-sm-3 { - padding-right: 1rem !important; - } - .pb-sm-3, - .py-sm-3 { - padding-bottom: 1rem !important; - } - .pl-sm-3, - .px-sm-3 { - padding-left: 1rem !important; - } - .p-sm-4 { - padding: 1.5rem !important; - } - .pt-sm-4, - .py-sm-4 { - padding-top: 1.5rem !important; - } - .pr-sm-4, - .px-sm-4 { - padding-right: 1.5rem !important; - } - .pb-sm-4, - .py-sm-4 { - padding-bottom: 1.5rem !important; - } - .pl-sm-4, - .px-sm-4 { - padding-left: 1.5rem !important; - } - .p-sm-5 { - padding: 3rem !important; - } - .pt-sm-5, - .py-sm-5 { - padding-top: 3rem !important; - } - .pr-sm-5, - .px-sm-5 { - padding-right: 3rem !important; - } - .pb-sm-5, - .py-sm-5 { - padding-bottom: 3rem !important; - } - .pl-sm-5, - .px-sm-5 { - padding-left: 3rem !important; - } - .m-sm-n1 { - margin: -0.25rem !important; - } - .mt-sm-n1, - .my-sm-n1 { - margin-top: -0.25rem !important; - } - .mr-sm-n1, - .mx-sm-n1 { - margin-right: -0.25rem !important; - } - .mb-sm-n1, - .my-sm-n1 { - margin-bottom: -0.25rem !important; - } - .ml-sm-n1, - .mx-sm-n1 { - margin-left: -0.25rem !important; - } - .m-sm-n2 { - margin: -0.5rem !important; - } - .mt-sm-n2, - .my-sm-n2 { - margin-top: -0.5rem !important; - } - .mr-sm-n2, - .mx-sm-n2 { - margin-right: -0.5rem !important; - } - .mb-sm-n2, - .my-sm-n2 { - margin-bottom: -0.5rem !important; - } - .ml-sm-n2, - .mx-sm-n2 { - margin-left: -0.5rem !important; - } - .m-sm-n3 { - margin: -1rem !important; - } - .mt-sm-n3, - .my-sm-n3 { - margin-top: -1rem !important; - } - .mr-sm-n3, - .mx-sm-n3 { - margin-right: -1rem !important; - } - .mb-sm-n3, - .my-sm-n3 { - margin-bottom: -1rem !important; - } - .ml-sm-n3, - .mx-sm-n3 { - margin-left: -1rem !important; - } - .m-sm-n4 { - margin: -1.5rem !important; - } - .mt-sm-n4, - .my-sm-n4 { - margin-top: -1.5rem !important; - } - .mr-sm-n4, - .mx-sm-n4 { - margin-right: -1.5rem !important; - } - .mb-sm-n4, - .my-sm-n4 { - margin-bottom: -1.5rem !important; - } - .ml-sm-n4, - .mx-sm-n4 { - margin-left: -1.5rem !important; - } - .m-sm-n5 { - margin: -3rem !important; - } - .mt-sm-n5, - .my-sm-n5 { - margin-top: -3rem !important; - } - .mr-sm-n5, - .mx-sm-n5 { - margin-right: -3rem !important; - } - .mb-sm-n5, - .my-sm-n5 { - margin-bottom: -3rem !important; - } - .ml-sm-n5, - .mx-sm-n5 { - margin-left: -3rem !important; - } - .m-sm-auto { - margin: auto !important; - } - .mt-sm-auto, - .my-sm-auto { - margin-top: auto !important; - } - .mr-sm-auto, - .mx-sm-auto { - margin-right: auto !important; - } - .mb-sm-auto, - .my-sm-auto { - margin-bottom: auto !important; - } - .ml-sm-auto, - .mx-sm-auto { - margin-left: auto !important; - } -} - -@media (min-width: 768px) { - .m-md-0 { - margin: 0 !important; - } - .mt-md-0, - .my-md-0 { - margin-top: 0 !important; - } - .mr-md-0, - .mx-md-0 { - margin-right: 0 !important; - } - .mb-md-0, - .my-md-0 { - margin-bottom: 0 !important; - } - .ml-md-0, - .mx-md-0 { - margin-left: 0 !important; - } - .m-md-1 { - margin: 0.25rem !important; - } - .mt-md-1, - .my-md-1 { - margin-top: 0.25rem !important; - } - .mr-md-1, - .mx-md-1 { - margin-right: 0.25rem !important; - } - .mb-md-1, - .my-md-1 { - margin-bottom: 0.25rem !important; - } - .ml-md-1, - .mx-md-1 { - margin-left: 0.25rem !important; - } - .m-md-2 { - margin: 0.5rem !important; - } - .mt-md-2, - .my-md-2 { - margin-top: 0.5rem !important; - } - .mr-md-2, - .mx-md-2 { - margin-right: 0.5rem !important; - } - .mb-md-2, - .my-md-2 { - margin-bottom: 0.5rem !important; - } - .ml-md-2, - .mx-md-2 { - margin-left: 0.5rem !important; - } - .m-md-3 { - margin: 1rem !important; - } - .mt-md-3, - .my-md-3 { - margin-top: 1rem !important; - } - .mr-md-3, - .mx-md-3 { - margin-right: 1rem !important; - } - .mb-md-3, - .my-md-3 { - margin-bottom: 1rem !important; - } - .ml-md-3, - .mx-md-3 { - margin-left: 1rem !important; - } - .m-md-4 { - margin: 1.5rem !important; - } - .mt-md-4, - .my-md-4 { - margin-top: 1.5rem !important; - } - .mr-md-4, - .mx-md-4 { - margin-right: 1.5rem !important; - } - .mb-md-4, - .my-md-4 { - margin-bottom: 1.5rem !important; - } - .ml-md-4, - .mx-md-4 { - margin-left: 1.5rem !important; - } - .m-md-5 { - margin: 3rem !important; - } - .mt-md-5, - .my-md-5 { - margin-top: 3rem !important; - } - .mr-md-5, - .mx-md-5 { - margin-right: 3rem !important; - } - .mb-md-5, - .my-md-5 { - margin-bottom: 3rem !important; - } - .ml-md-5, - .mx-md-5 { - margin-left: 3rem !important; - } - .p-md-0 { - padding: 0 !important; - } - .pt-md-0, - .py-md-0 { - padding-top: 0 !important; - } - .pr-md-0, - .px-md-0 { - padding-right: 0 !important; - } - .pb-md-0, - .py-md-0 { - padding-bottom: 0 !important; - } - .pl-md-0, - .px-md-0 { - padding-left: 0 !important; - } - .p-md-1 { - padding: 0.25rem !important; - } - .pt-md-1, - .py-md-1 { - padding-top: 0.25rem !important; - } - .pr-md-1, - .px-md-1 { - padding-right: 0.25rem !important; - } - .pb-md-1, - .py-md-1 { - padding-bottom: 0.25rem !important; - } - .pl-md-1, - .px-md-1 { - padding-left: 0.25rem !important; - } - .p-md-2 { - padding: 0.5rem !important; - } - .pt-md-2, - .py-md-2 { - padding-top: 0.5rem !important; - } - .pr-md-2, - .px-md-2 { - padding-right: 0.5rem !important; - } - .pb-md-2, - .py-md-2 { - padding-bottom: 0.5rem !important; - } - .pl-md-2, - .px-md-2 { - padding-left: 0.5rem !important; - } - .p-md-3 { - padding: 1rem !important; - } - .pt-md-3, - .py-md-3 { - padding-top: 1rem !important; - } - .pr-md-3, - .px-md-3 { - padding-right: 1rem !important; - } - .pb-md-3, - .py-md-3 { - padding-bottom: 1rem !important; - } - .pl-md-3, - .px-md-3 { - padding-left: 1rem !important; - } - .p-md-4 { - padding: 1.5rem !important; - } - .pt-md-4, - .py-md-4 { - padding-top: 1.5rem !important; - } - .pr-md-4, - .px-md-4 { - padding-right: 1.5rem !important; - } - .pb-md-4, - .py-md-4 { - padding-bottom: 1.5rem !important; - } - .pl-md-4, - .px-md-4 { - padding-left: 1.5rem !important; - } - .p-md-5 { - padding: 3rem !important; - } - .pt-md-5, - .py-md-5 { - padding-top: 3rem !important; - } - .pr-md-5, - .px-md-5 { - padding-right: 3rem !important; - } - .pb-md-5, - .py-md-5 { - padding-bottom: 3rem !important; - } - .pl-md-5, - .px-md-5 { - padding-left: 3rem !important; - } - .m-md-n1 { - margin: -0.25rem !important; - } - .mt-md-n1, - .my-md-n1 { - margin-top: -0.25rem !important; - } - .mr-md-n1, - .mx-md-n1 { - margin-right: -0.25rem !important; - } - .mb-md-n1, - .my-md-n1 { - margin-bottom: -0.25rem !important; - } - .ml-md-n1, - .mx-md-n1 { - margin-left: -0.25rem !important; - } - .m-md-n2 { - margin: -0.5rem !important; - } - .mt-md-n2, - .my-md-n2 { - margin-top: -0.5rem !important; - } - .mr-md-n2, - .mx-md-n2 { - margin-right: -0.5rem !important; - } - .mb-md-n2, - .my-md-n2 { - margin-bottom: -0.5rem !important; - } - .ml-md-n2, - .mx-md-n2 { - margin-left: -0.5rem !important; - } - .m-md-n3 { - margin: -1rem !important; - } - .mt-md-n3, - .my-md-n3 { - margin-top: -1rem !important; - } - .mr-md-n3, - .mx-md-n3 { - margin-right: -1rem !important; - } - .mb-md-n3, - .my-md-n3 { - margin-bottom: -1rem !important; - } - .ml-md-n3, - .mx-md-n3 { - margin-left: -1rem !important; - } - .m-md-n4 { - margin: -1.5rem !important; - } - .mt-md-n4, - .my-md-n4 { - margin-top: -1.5rem !important; - } - .mr-md-n4, - .mx-md-n4 { - margin-right: -1.5rem !important; - } - .mb-md-n4, - .my-md-n4 { - margin-bottom: -1.5rem !important; - } - .ml-md-n4, - .mx-md-n4 { - margin-left: -1.5rem !important; - } - .m-md-n5 { - margin: -3rem !important; - } - .mt-md-n5, - .my-md-n5 { - margin-top: -3rem !important; - } - .mr-md-n5, - .mx-md-n5 { - margin-right: -3rem !important; - } - .mb-md-n5, - .my-md-n5 { - margin-bottom: -3rem !important; - } - .ml-md-n5, - .mx-md-n5 { - margin-left: -3rem !important; - } - .m-md-auto { - margin: auto !important; - } - .mt-md-auto, - .my-md-auto { - margin-top: auto !important; - } - .mr-md-auto, - .mx-md-auto { - margin-right: auto !important; - } - .mb-md-auto, - .my-md-auto { - margin-bottom: auto !important; - } - .ml-md-auto, - .mx-md-auto { - margin-left: auto !important; - } -} - -@media (min-width: 992px) { - .m-lg-0 { - margin: 0 !important; - } - .mt-lg-0, - .my-lg-0 { - margin-top: 0 !important; - } - .mr-lg-0, - .mx-lg-0 { - margin-right: 0 !important; - } - .mb-lg-0, - .my-lg-0 { - margin-bottom: 0 !important; - } - .ml-lg-0, - .mx-lg-0 { - margin-left: 0 !important; - } - .m-lg-1 { - margin: 0.25rem !important; - } - .mt-lg-1, - .my-lg-1 { - margin-top: 0.25rem !important; - } - .mr-lg-1, - .mx-lg-1 { - margin-right: 0.25rem !important; - } - .mb-lg-1, - .my-lg-1 { - margin-bottom: 0.25rem !important; - } - .ml-lg-1, - .mx-lg-1 { - margin-left: 0.25rem !important; - } - .m-lg-2 { - margin: 0.5rem !important; - } - .mt-lg-2, - .my-lg-2 { - margin-top: 0.5rem !important; - } - .mr-lg-2, - .mx-lg-2 { - margin-right: 0.5rem !important; - } - .mb-lg-2, - .my-lg-2 { - margin-bottom: 0.5rem !important; - } - .ml-lg-2, - .mx-lg-2 { - margin-left: 0.5rem !important; - } - .m-lg-3 { - margin: 1rem !important; - } - .mt-lg-3, - .my-lg-3 { - margin-top: 1rem !important; - } - .mr-lg-3, - .mx-lg-3 { - margin-right: 1rem !important; - } - .mb-lg-3, - .my-lg-3 { - margin-bottom: 1rem !important; - } - .ml-lg-3, - .mx-lg-3 { - margin-left: 1rem !important; - } - .m-lg-4 { - margin: 1.5rem !important; - } - .mt-lg-4, - .my-lg-4 { - margin-top: 1.5rem !important; - } - .mr-lg-4, - .mx-lg-4 { - margin-right: 1.5rem !important; - } - .mb-lg-4, - .my-lg-4 { - margin-bottom: 1.5rem !important; - } - .ml-lg-4, - .mx-lg-4 { - margin-left: 1.5rem !important; - } - .m-lg-5 { - margin: 3rem !important; - } - .mt-lg-5, - .my-lg-5 { - margin-top: 3rem !important; - } - .mr-lg-5, - .mx-lg-5 { - margin-right: 3rem !important; - } - .mb-lg-5, - .my-lg-5 { - margin-bottom: 3rem !important; - } - .ml-lg-5, - .mx-lg-5 { - margin-left: 3rem !important; - } - .p-lg-0 { - padding: 0 !important; - } - .pt-lg-0, - .py-lg-0 { - padding-top: 0 !important; - } - .pr-lg-0, - .px-lg-0 { - padding-right: 0 !important; - } - .pb-lg-0, - .py-lg-0 { - padding-bottom: 0 !important; - } - .pl-lg-0, - .px-lg-0 { - padding-left: 0 !important; - } - .p-lg-1 { - padding: 0.25rem !important; - } - .pt-lg-1, - .py-lg-1 { - padding-top: 0.25rem !important; - } - .pr-lg-1, - .px-lg-1 { - padding-right: 0.25rem !important; - } - .pb-lg-1, - .py-lg-1 { - padding-bottom: 0.25rem !important; - } - .pl-lg-1, - .px-lg-1 { - padding-left: 0.25rem !important; - } - .p-lg-2 { - padding: 0.5rem !important; - } - .pt-lg-2, - .py-lg-2 { - padding-top: 0.5rem !important; - } - .pr-lg-2, - .px-lg-2 { - padding-right: 0.5rem !important; - } - .pb-lg-2, - .py-lg-2 { - padding-bottom: 0.5rem !important; - } - .pl-lg-2, - .px-lg-2 { - padding-left: 0.5rem !important; - } - .p-lg-3 { - padding: 1rem !important; - } - .pt-lg-3, - .py-lg-3 { - padding-top: 1rem !important; - } - .pr-lg-3, - .px-lg-3 { - padding-right: 1rem !important; - } - .pb-lg-3, - .py-lg-3 { - padding-bottom: 1rem !important; - } - .pl-lg-3, - .px-lg-3 { - padding-left: 1rem !important; - } - .p-lg-4 { - padding: 1.5rem !important; - } - .pt-lg-4, - .py-lg-4 { - padding-top: 1.5rem !important; - } - .pr-lg-4, - .px-lg-4 { - padding-right: 1.5rem !important; - } - .pb-lg-4, - .py-lg-4 { - padding-bottom: 1.5rem !important; - } - .pl-lg-4, - .px-lg-4 { - padding-left: 1.5rem !important; - } - .p-lg-5 { - padding: 3rem !important; - } - .pt-lg-5, - .py-lg-5 { - padding-top: 3rem !important; - } - .pr-lg-5, - .px-lg-5 { - padding-right: 3rem !important; - } - .pb-lg-5, - .py-lg-5 { - padding-bottom: 3rem !important; - } - .pl-lg-5, - .px-lg-5 { - padding-left: 3rem !important; - } - .m-lg-n1 { - margin: -0.25rem !important; - } - .mt-lg-n1, - .my-lg-n1 { - margin-top: -0.25rem !important; - } - .mr-lg-n1, - .mx-lg-n1 { - margin-right: -0.25rem !important; - } - .mb-lg-n1, - .my-lg-n1 { - margin-bottom: -0.25rem !important; - } - .ml-lg-n1, - .mx-lg-n1 { - margin-left: -0.25rem !important; - } - .m-lg-n2 { - margin: -0.5rem !important; - } - .mt-lg-n2, - .my-lg-n2 { - margin-top: -0.5rem !important; - } - .mr-lg-n2, - .mx-lg-n2 { - margin-right: -0.5rem !important; - } - .mb-lg-n2, - .my-lg-n2 { - margin-bottom: -0.5rem !important; - } - .ml-lg-n2, - .mx-lg-n2 { - margin-left: -0.5rem !important; - } - .m-lg-n3 { - margin: -1rem !important; - } - .mt-lg-n3, - .my-lg-n3 { - margin-top: -1rem !important; - } - .mr-lg-n3, - .mx-lg-n3 { - margin-right: -1rem !important; - } - .mb-lg-n3, - .my-lg-n3 { - margin-bottom: -1rem !important; - } - .ml-lg-n3, - .mx-lg-n3 { - margin-left: -1rem !important; - } - .m-lg-n4 { - margin: -1.5rem !important; - } - .mt-lg-n4, - .my-lg-n4 { - margin-top: -1.5rem !important; - } - .mr-lg-n4, - .mx-lg-n4 { - margin-right: -1.5rem !important; - } - .mb-lg-n4, - .my-lg-n4 { - margin-bottom: -1.5rem !important; - } - .ml-lg-n4, - .mx-lg-n4 { - margin-left: -1.5rem !important; - } - .m-lg-n5 { - margin: -3rem !important; - } - .mt-lg-n5, - .my-lg-n5 { - margin-top: -3rem !important; - } - .mr-lg-n5, - .mx-lg-n5 { - margin-right: -3rem !important; - } - .mb-lg-n5, - .my-lg-n5 { - margin-bottom: -3rem !important; - } - .ml-lg-n5, - .mx-lg-n5 { - margin-left: -3rem !important; - } - .m-lg-auto { - margin: auto !important; - } - .mt-lg-auto, - .my-lg-auto { - margin-top: auto !important; - } - .mr-lg-auto, - .mx-lg-auto { - margin-right: auto !important; - } - .mb-lg-auto, - .my-lg-auto { - margin-bottom: auto !important; - } - .ml-lg-auto, - .mx-lg-auto { - margin-left: auto !important; - } -} - -@media (min-width: 1200px) { - .m-xl-0 { - margin: 0 !important; - } - .mt-xl-0, - .my-xl-0 { - margin-top: 0 !important; - } - .mr-xl-0, - .mx-xl-0 { - margin-right: 0 !important; - } - .mb-xl-0, - .my-xl-0 { - margin-bottom: 0 !important; - } - .ml-xl-0, - .mx-xl-0 { - margin-left: 0 !important; - } - .m-xl-1 { - margin: 0.25rem !important; - } - .mt-xl-1, - .my-xl-1 { - margin-top: 0.25rem !important; - } - .mr-xl-1, - .mx-xl-1 { - margin-right: 0.25rem !important; - } - .mb-xl-1, - .my-xl-1 { - margin-bottom: 0.25rem !important; - } - .ml-xl-1, - .mx-xl-1 { - margin-left: 0.25rem !important; - } - .m-xl-2 { - margin: 0.5rem !important; - } - .mt-xl-2, - .my-xl-2 { - margin-top: 0.5rem !important; - } - .mr-xl-2, - .mx-xl-2 { - margin-right: 0.5rem !important; - } - .mb-xl-2, - .my-xl-2 { - margin-bottom: 0.5rem !important; - } - .ml-xl-2, - .mx-xl-2 { - margin-left: 0.5rem !important; - } - .m-xl-3 { - margin: 1rem !important; - } - .mt-xl-3, - .my-xl-3 { - margin-top: 1rem !important; - } - .mr-xl-3, - .mx-xl-3 { - margin-right: 1rem !important; - } - .mb-xl-3, - .my-xl-3 { - margin-bottom: 1rem !important; - } - .ml-xl-3, - .mx-xl-3 { - margin-left: 1rem !important; - } - .m-xl-4 { - margin: 1.5rem !important; - } - .mt-xl-4, - .my-xl-4 { - margin-top: 1.5rem !important; - } - .mr-xl-4, - .mx-xl-4 { - margin-right: 1.5rem !important; - } - .mb-xl-4, - .my-xl-4 { - margin-bottom: 1.5rem !important; - } - .ml-xl-4, - .mx-xl-4 { - margin-left: 1.5rem !important; - } - .m-xl-5 { - margin: 3rem !important; - } - .mt-xl-5, - .my-xl-5 { - margin-top: 3rem !important; - } - .mr-xl-5, - .mx-xl-5 { - margin-right: 3rem !important; - } - .mb-xl-5, - .my-xl-5 { - margin-bottom: 3rem !important; - } - .ml-xl-5, - .mx-xl-5 { - margin-left: 3rem !important; - } - .p-xl-0 { - padding: 0 !important; - } - .pt-xl-0, - .py-xl-0 { - padding-top: 0 !important; - } - .pr-xl-0, - .px-xl-0 { - padding-right: 0 !important; - } - .pb-xl-0, - .py-xl-0 { - padding-bottom: 0 !important; - } - .pl-xl-0, - .px-xl-0 { - padding-left: 0 !important; - } - .p-xl-1 { - padding: 0.25rem !important; - } - .pt-xl-1, - .py-xl-1 { - padding-top: 0.25rem !important; - } - .pr-xl-1, - .px-xl-1 { - padding-right: 0.25rem !important; - } - .pb-xl-1, - .py-xl-1 { - padding-bottom: 0.25rem !important; - } - .pl-xl-1, - .px-xl-1 { - padding-left: 0.25rem !important; - } - .p-xl-2 { - padding: 0.5rem !important; - } - .pt-xl-2, - .py-xl-2 { - padding-top: 0.5rem !important; - } - .pr-xl-2, - .px-xl-2 { - padding-right: 0.5rem !important; - } - .pb-xl-2, - .py-xl-2 { - padding-bottom: 0.5rem !important; - } - .pl-xl-2, - .px-xl-2 { - padding-left: 0.5rem !important; - } - .p-xl-3 { - padding: 1rem !important; - } - .pt-xl-3, - .py-xl-3 { - padding-top: 1rem !important; - } - .pr-xl-3, - .px-xl-3 { - padding-right: 1rem !important; - } - .pb-xl-3, - .py-xl-3 { - padding-bottom: 1rem !important; - } - .pl-xl-3, - .px-xl-3 { - padding-left: 1rem !important; - } - .p-xl-4 { - padding: 1.5rem !important; - } - .pt-xl-4, - .py-xl-4 { - padding-top: 1.5rem !important; - } - .pr-xl-4, - .px-xl-4 { - padding-right: 1.5rem !important; - } - .pb-xl-4, - .py-xl-4 { - padding-bottom: 1.5rem !important; - } - .pl-xl-4, - .px-xl-4 { - padding-left: 1.5rem !important; - } - .p-xl-5 { - padding: 3rem !important; - } - .pt-xl-5, - .py-xl-5 { - padding-top: 3rem !important; - } - .pr-xl-5, - .px-xl-5 { - padding-right: 3rem !important; - } - .pb-xl-5, - .py-xl-5 { - padding-bottom: 3rem !important; - } - .pl-xl-5, - .px-xl-5 { - padding-left: 3rem !important; - } - .m-xl-n1 { - margin: -0.25rem !important; - } - .mt-xl-n1, - .my-xl-n1 { - margin-top: -0.25rem !important; - } - .mr-xl-n1, - .mx-xl-n1 { - margin-right: -0.25rem !important; - } - .mb-xl-n1, - .my-xl-n1 { - margin-bottom: -0.25rem !important; - } - .ml-xl-n1, - .mx-xl-n1 { - margin-left: -0.25rem !important; - } - .m-xl-n2 { - margin: -0.5rem !important; - } - .mt-xl-n2, - .my-xl-n2 { - margin-top: -0.5rem !important; - } - .mr-xl-n2, - .mx-xl-n2 { - margin-right: -0.5rem !important; - } - .mb-xl-n2, - .my-xl-n2 { - margin-bottom: -0.5rem !important; - } - .ml-xl-n2, - .mx-xl-n2 { - margin-left: -0.5rem !important; - } - .m-xl-n3 { - margin: -1rem !important; - } - .mt-xl-n3, - .my-xl-n3 { - margin-top: -1rem !important; - } - .mr-xl-n3, - .mx-xl-n3 { - margin-right: -1rem !important; - } - .mb-xl-n3, - .my-xl-n3 { - margin-bottom: -1rem !important; - } - .ml-xl-n3, - .mx-xl-n3 { - margin-left: -1rem !important; - } - .m-xl-n4 { - margin: -1.5rem !important; - } - .mt-xl-n4, - .my-xl-n4 { - margin-top: -1.5rem !important; - } - .mr-xl-n4, - .mx-xl-n4 { - margin-right: -1.5rem !important; - } - .mb-xl-n4, - .my-xl-n4 { - margin-bottom: -1.5rem !important; - } - .ml-xl-n4, - .mx-xl-n4 { - margin-left: -1.5rem !important; - } - .m-xl-n5 { - margin: -3rem !important; - } - .mt-xl-n5, - .my-xl-n5 { - margin-top: -3rem !important; - } - .mr-xl-n5, - .mx-xl-n5 { - margin-right: -3rem !important; - } - .mb-xl-n5, - .my-xl-n5 { - margin-bottom: -3rem !important; - } - .ml-xl-n5, - .mx-xl-n5 { - margin-left: -3rem !important; - } - .m-xl-auto { - margin: auto !important; - } - .mt-xl-auto, - .my-xl-auto { - margin-top: auto !important; - } - .mr-xl-auto, - .mx-xl-auto { - margin-right: auto !important; - } - .mb-xl-auto, - .my-xl-auto { - margin-bottom: auto !important; - } - .ml-xl-auto, - .mx-xl-auto { - margin-left: auto !important; - } -} - -.text-monospace { - font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important; -} - -.text-justify { - text-align: justify !important; -} - -.text-wrap { - white-space: normal !important; -} - -.text-nowrap { - white-space: nowrap !important; -} - -.text-truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.text-left { - text-align: left !important; -} - -.text-right { - text-align: right !important; -} - -.text-center { - text-align: center !important; - margin-bottom: 0.3rem; -} -.text-center.medium { - font-size: medium; -} -.text-center.large { - font-size: large; - font-weight: 600; -} - -@media (min-width: 576px) { - .text-sm-left { - text-align: left !important; - } - .text-sm-right { - text-align: right !important; - } - .text-sm-center { - text-align: center !important; - } -} - -@media (min-width: 768px) { - .text-md-left { - text-align: left !important; - } - .text-md-right { - text-align: right !important; - } - .text-md-center { - text-align: center !important; - } -} - -@media (min-width: 992px) { - .text-lg-left { - text-align: left !important; - } - .text-lg-right { - text-align: right !important; - } - .text-lg-center { - text-align: center !important; - } -} - -@media (min-width: 1200px) { - .text-xl-left { - text-align: left !important; - } - .text-xl-right { - text-align: right !important; - } - .text-xl-center { - text-align: center !important; - } -} - -.text-lowercase { - text-transform: lowercase !important; -} - -.text-uppercase { - text-transform: uppercase !important; -} - -.text-capitalize { - text-transform: capitalize !important; -} - -.font-weight-light { - font-weight: 300 !important; -} - -.font-weight-lighter { - font-weight: lighter !important; -} - -.font-weight-normal { - font-weight: 400 !important; -} - -.font-weight-bold { - font-weight: 700 !important; -} - -.font-weight-bolder { - font-weight: bolder !important; -} - -.font-italic { - font-style: italic !important; -} - -.text-white { - color: #fff !important; -} - -.text-primary { - color: #3f84fc !important; -} - -a.text-primary:hover, -a.text-primary:focus { - color: #0458eb !important; -} - -.text-secondary { - color: #727f94 !important; -} - -a.text-secondary:hover, -a.text-secondary:focus { - color: #505a69 !important; -} - -.text-success { - color: #1dab47 !important; -} - -a.text-success:hover, -a.text-success:focus { - color: #126a2c !important; -} - -.text-info { - color: #8a3ffc !important; -} - -a.text-info:hover, -a.text-info:focus { - color: #5f04eb !important; -} - -.text-warning { - color: #fcae3f !important; -} - -a.text-warning:hover, -a.text-warning:focus { - color: #eb8b04 !important; -} - -.text-danger { - color: #fc413f !important; -} - -a.text-danger:hover, -a.text-danger:focus { - color: #eb0604 !important; -} - -.text-light { - color: #f8f9fa !important; -} - -a.text-light:hover, -a.text-light:focus { - color: #cbd3da !important; -} - -.text-dark { - color: #1e232d !important; -} - -a.text-dark:hover, -a.text-dark:focus { - color: black !important; -} - -.text-body { - color: #515151 !important; -} - -.text-muted { - color: #6c757d !important; -} - -.text-black-50 { - color: rgba(0, 0, 0, 0.5) !important; -} - -.text-white-50 { - color: rgba(255, 255, 255, 0.5) !important; -} - -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} - -.text-decoration-none { - text-decoration: none !important; -} - -.text-break { - word-break: break-word !important; - overflow-wrap: break-word !important; -} - -.text-reset { - color: inherit !important; -} - -.visible { - visibility: visible !important; -} - -.invisible { - visibility: hidden !important; -} - -@media print { - *, - *::before, - *::after { - text-shadow: none !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; - } - a:not(.btn) { - text-decoration: underline; - } - abbr[title]::after { - content: " (" attr(title) ")"; - } - pre { - white-space: pre-wrap !important; - } - pre, - blockquote { - border: 1px solid #adb5bd; - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - p, - /* h2, - h3 { - orphans: 3; - widows: 3; } - h2, - h3 { - page-break-after: avoid; } - @page { - size: a3; } */ - body { - min-width: 992px !important; - } - .container { - min-width: 992px !important; - } - .navbar { - display: none; - } - .badge { - border: 1px solid #000; - } - .table { - border-collapse: collapse !important; - } - .table td, - .table th { - background-color: #fff !important; - } - .table-bordered th, - .table-bordered td { - border: 1px solid #dee2e6 !important; - } - .table-dark { - color: inherit; - } - .table-dark th, - .table-dark td, - .table-dark thead th, - .table-dark tbody + tbody { - border-color: #dee2e6; - } - .table .thead-dark th { - color: inherit; - border-color: #dee2e6; - } -} - -.spur-card { - border: 1px solid #d3d3d3; - background: #fff; - margin-bottom: 30px; -} -.spur-card .card-header { - min-height: 57px; - background-color: #f0f1f7; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - padding: 8px 32px; -} -.spur-card .card-body { - padding: 24px 32px; -} -@media (max-width: 767.98px) { - .spur-card .card-body { - padding: 12px 18px; - } -} - -.spur-card-icon { - margin-right: 20px; -} - -.spur-card-title { - font-weight: bold; -} - -.spur-card-menu { - margin-left: auto; -} - -.spur-card-menu-link { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - width: 30px; - height: 30px; - margin-right: -15px; -} -.spur-card-menu-link::after { - content: ""; - display: inline-block; - width: 0; - height: 0; - border-left: 5px solid transparent; - border-right: 5px solid transparent; - border-top: 5px solid rgba(81, 81, 81, 0.8); -} -.text-white .spur-card-menu-link::after { - border-top-color: #fff; -} - -.spur-card-body-chart { - position: relative; - max-width: 99%; -} -@media (max-width: 767.98px) { - .spur-card-body-chart { - padding: 12px 5px; - } -} - -/* h1 { - font-family: "Nunito", sans-serif; - font-weight: normal; } */ - -.dash-title { - margin-bottom: 30px; -} - -.content-anchor::before { - display: block; - height: 6rem; - margin-top: -6rem; - visibility: hidden; - content: ""; -} - -.content-anchor-link { - color: #292829; - opacity: 0.46; - font-size: 19px; - margin-left: 7px; -} - -body { - background: #e9edf4; -} - -.dash { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - min-height: 100vh; -} - -.dash-app { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-flex: 2; - -webkit-flex-grow: 2; - -ms-flex-positive: 2; - flex-grow: 2; - /* margin-top: 200px; */ -} -/* @media (min-width: 800px) { - .dash-app { - margin-left: 0; } - .dash-compact .dash-app { - margin-left: 0; } } */ - -.dash-content { - -webkit-box-flex: 2; - -webkit-flex-grow: 2; - -ms-flex-positive: 2; - flex-grow: 2; - padding: 25px; - height: 100%; -} -@media (max-width: 780px) { - .dash-content { - padding: 15px 0px; - } -} - -.dash-row { - margin-bottom: 30px; -} - -.form-screen { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - min-height: 100vh; - padding-top: 100px; -} -.form-screen .spur-logo { - margin-bottom: 60px; - opacity: 0.9; -} -.form-screen .spur-logo i { - color: #515151; -} - -.account-dialog { - max-width: 360px; -} -@media (min-width: 1200px) { - .account-dialog { - min-width: 360px; - } -} - -.account-dialog-actions { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; -} - -.account-dialog-link { - margin-left: 15px; - font-size: 14px; - color: rgba(81, 81, 81, 0.8); -} -.account-dialog-link:hover { - color: #515151; - text-decoration: none; -} - -.dash-nav { - min-width: 238px; - position: fixed; - left: 0; - top: 0; - bottom: 0; - overflow: auto; -} -.dash-compact .dash-nav { - display: none; -} -.dash-nav::-webkit-scrollbar { - width: 0; - background: transparent; -} -@media (max-width: 991.98px) { - .dash-nav { - display: none; - position: fixed; - top: 0; - right: 0; - left: 0; - bottom: 0; - z-index: 1070; - } - .dash-nav.mobile-show { - display: block; - } -} -.dash-nav header { - min-height: 84px; - padding: 8px 27px; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; -} -.dash-nav header .menu-toggle { - display: none; - margin-right: auto; -} -@media (max-width: 991.98px) { - .dash-nav header .menu-toggle { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - } -} -.dash-nav header .spur-logo { - margin-right: auto; - padding-right: 42px; -} -.dash-nav a { - color: #515151; -} -.dash-nav a:hover { - text-decoration: none; -} -.dash-nav.dash-nav-dark { - background-color: #181f2c; -} -.dash-nav.dash-nav-dark a { - color: #fff; -} - -.spur-logo { - font-family: "Nunito", sans-serif; - font-weight: bold; - font-size: 20px; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - color: #515151; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; -} -.spur-logo:focus, -.spur-logo:active, -.spur-logo:hover { - color: #515151; - text-decoration: none; -} -.spur-logo i { - color: #576177; - font-size: 27px; - margin-right: 10px; -} - -.dash-nav-list { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; -} - -.dash-nav-item { - min-height: 45px; - padding: 8px 20px 8px 20px; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - letter-spacing: 0.02em; -} -.dash-nav-item i { - width: 30px; - font-size: 18px; - margin-left: 5px; -} -.dash-nav-dark .dash-nav-item:hover { - background: rgba(255, 255, 255, 0.04); - text-decoration: none; -} - -.dash-nav-dropdown { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; -} -.dash-nav-dark .dash-nav-dropdown.show { - background: rgba(255, 255, 255, 0.04); - display: block; -} -.dash-nav-dropdown.show > .dash-nav-dropdown-toggle { - font-weight: bold; - text-decoration: none; -} -.dash-nav-dropdown.show > .dash-nav-dropdown-toggle:after { - -webkit-transform: none; - -o-transform: none; - transform: none; -} -.dash-nav-dropdown.show > .dash-nav-dropdown-menu { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; -} -.dash-nav-dropdown.show .dash-nav-dropdown.show { - background: none; -} - -.dash-nav-dropdown-toggle:after { - content: ""; - margin-left: auto; - display: inline-block; - width: 0; - height: 0; - border-left: 5px solid transparent; - border-right: 5px solid transparent; - border-top: 5px solid rgba(81, 81, 81, 0.8); - -webkit-transform: rotate(90deg); - -o-transform: rotate(90deg); - transform: rotate(90deg); -} -.dash-nav-dark .dash-nav-dropdown-toggle:after { - border-top-color: rgba(255, 255, 255, 0.72); -} - -.dash-nav-dropdown-menu { - display: none; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; -} -.dash-nav-dropdown-menu > .dash-nav-dropdown .dash-nav-dropdown-menu .dash-nav-dropdown-item { - padding-left: 87px; -} - -.dash-nav-dropdown-item { - min-height: 40px; - max-width: 210px; - text-align: right; - items-align: center; - /* background-color: hsl(339,90%,30%); */ - color: #fff; - font-size: 11px; - text-decoration: none; - margin: 5px 5px; - margin-left: 15px; - padding: 8px 40px; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - /* box-shadow: 0 1px 15px 1px rgba(39,39,39,.1); */ - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; -} - -.dash-nav-dropdown-item:hover { - /* background: hsla(339,86.8%,38.6%, 0.7); - border-radius: 25px; - color: #fff; */ - text-decoration: none; -} -.dash-nav-dropdown-item:active, -.dash-nav-dropdown-item:focus { - /* background-color: #fff; - color: hsl(339,90%,30%); - border-radius: 25px; */ - text-decoration: none; -} - -.notifications { - margin: -8px -32px; -} -@media (max-width: 767.98px) { - .notifications { - margin: -8px -18px; - } -} - -.notification { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - padding: 8px 32px; - color: #515151; -} -.notification:hover, -.notification:focus, -.notification:active { - color: #515151; - text-decoration: none; - background-color: #f0f1f7; -} - -.notification-icon { - width: 35px; -} - -.notification-time { - margin-left: auto; - opacity: 0.8; -} - -.notifications-show-all { - margin-top: 8px; - margin-left: 67px; -} -.notifications-show-all a { - color: #515151; - text-decoration: underline; -} -.notifications-show-all a:focus, -.notifications-show-all a:hover, -.notifications-show-all a:active { - color: #515151; -} - -.table-in-card { - margin: -12px 0; -} -.table-in-card thead tr th { - border-top-color: transparent; -} - -.card-body-with-dark-table { - background-color: #212529; -} - -.menu-toggle, -.searchbox-toggle, -.searchbox-submit, -.tools-item { - position: relative; - width: 42px; - height: 42px; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - color: #515151; -} -.menu-toggle:hover, -.searchbox-toggle:hover, -.searchbox-submit:hover, -.tools-item:hover, -.menu-toggle:active, -.searchbox-toggle:active, -.searchbox-submit:active, -.tools-item:active, -.menu-toggle:focus, -.searchbox-toggle:focus, -.searchbox-submit:focus, -.tools-item:focus { - text-decoration: none; - color: #515151; -} -.menu-toggle i, -.searchbox-toggle i, -.searchbox-submit i, -.tools-item i { - font-size: 20px; -} - -.tools-item .tools-item-count { - width: 15px; - height: 15px; - border-radius: 20px; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - position: absolute; - top: 3px; - right: 3px; - font-style: normal; - font-size: 11px; - background: #ff5a00; - color: #fff; -} - -.dash-toolbar { - height: 60px; - width: 300px; - background-color: #f3f3f3; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - padding: 5px 20px; - top: 0; - right: 0; - left: 0; - z-index: 1000; -} -@media (min-width: 992px) { - .dash-toolbar { - left: 240px; - } - .dash-compact .dash-toolbar { - left: 0; - } -} - -.searchbox { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-flex: 2; - -webkit-flex-grow: 2; - -ms-flex-positive: 2; - flex-grow: 2; -} -@media (max-width: 767.98px) { - .searchbox { - display: none; - position: fixed; - top: 0; - right: 0; - left: 0; - background: #f3f3f3; - min-height: 84px; - z-index: 1071; - padding: 8px 27px; - } - .searchbox.show { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - } -} - -.searchbox-toggle { - display: none; - color: #515151; -} -.searchbox-toggle:hover, -.searchbox-toggle:active, -.searchbox-toggle:focus { - text-decoration: none; - color: #515151; -} -@media (max-width: 767.98px) { - .searchbox-toggle { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - } -} - -.searchbox-input { - border: none; - background-color: #f3f3f3; - height: 50px; - padding: 8px 8px 11px 4px; - -webkit-box-flex: 2; - -webkit-flex-grow: 2; - -ms-flex-positive: 2; - flex-grow: 2; - width: 100px; -} -.searchbox-input::-webkit-input-placeholder { - color: #8b8b8b; -} -.searchbox-input::-moz-placeholder { - color: #8b8b8b; -} -.searchbox-input:-ms-input-placeholder { - color: #8b8b8b; -} -.searchbox-input::-ms-input-placeholder { - color: #8b8b8b; -} -.searchbox-input::placeholder { - color: #8b8b8b; -} -.searchbox-input:focus { - outline: none; -} - -.searchbox-submit { - border: none; - background: none; - padding: 0; -} -@media (max-width: 767.98px) { - .searchbox-submit { - -webkit-box-ordinal-group: 10; - -webkit-order: 9; - -ms-flex-order: 9; - order: 9; - } -} -.searchbox-submit:focus { - outline: none; -} -.searchbox-submit:hover { - cursor: pointer; -} - -.tools { - margin-left: auto; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; -} -.tools a { - color: #515151; -} - -.stats { - padding: 18px 23px; - font-family: "Nunito", sans-serif; - -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.25); - box-shadow: 0 0 5px rgba(0, 0, 0, 0.25); - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - min-height: 170px; - margin-bottom: 30px; -} - -.stats-content { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - margin-top: auto; - -webkit-box-align: end; - -webkit-align-items: flex-end; - -ms-flex-align: end; - align-items: flex-end; -} - -.stats-title { - font-size: 26px; - font-weight: 600; - letter-spacing: 0.04em; -} - -.stats-icon { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-align: end; - -webkit-align-items: flex-end; - -ms-flex-align: end; - align-items: flex-end; - font-size: 20px; -} - -.stats-data { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: end; - -webkit-align-items: flex-end; - -ms-flex-align: end; - align-items: flex-end; - margin-left: auto; -} - -.stats-number { - font-size: 33px; - line-height: 33px; - font-weight: 600; - letter-spacing: 0.04em; -} - -.stats-change { - margin-top: 5px; - font-family: "Open Sans", sans-serif; -} - -.stats-percentage { - opacity: 1; -} - -.stats-timeframe { - opacity: 0.5; -} - -.stats-primary { - color: #fff; - background: #3f84fc; -} - -.stats-secondary { - color: #fff; - background: #727f94; -} - -.stats-success { - color: #fff; - background: #1dab47; -} - -.stats-info { - color: #fff; - background: #8a3ffc; -} - -.stats-warning { - color: #212529; - background: #fcae3f; -} - -.stats-danger { - color: #fff; - background: #fc413f; -} - -.stats-light { - color: #212529; - background: #f8f9fa; -} - -.stats-dark { - color: #fff; - background: #1e232d; -} +abbr[title], +abbr[data-original-title] { + text-decoration: underline; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + border-bottom: 0; + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 700; +} + +dd { + margin-bottom: 0.5rem; + margin-left: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +b, +strong { + font-weight: bolder; +} + +small { + font-size: 80%; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* a { + color: #3F84FC; + text-decoration: none; + background-color: transparent; } + a:hover { + color: #0458eb; + text-decoration: underline; } + +a:not([href]):not([tabindex]) { + color: inherit; + text-decoration: none; } + a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { + color: inherit; + text-decoration: none; } + a:not([href]):not([tabindex]):focus { + outline: 0; } + +pre, +code, +kbd, +samp { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-size: 1em; } + +pre { + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; } + +figure { + margin: 0 0 1rem; } + +img { + vertical-align: middle; + border-style: none; } + +svg { + overflow: hidden; + vertical-align: middle; } + +table { + border-collapse: collapse; } + +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #6c757d; + text-align: left; + caption-side: bottom; } + +th { + text-align: inherit; } + +label { + display: inline-block; + margin-bottom: 0.5rem; } + +button { + border-radius: 0; } + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; } + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; } + +button, +input { + overflow: visible; } + +button, +select { + text-transform: none; } + +select { + word-wrap: normal; } + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; } + +button:not(:disabled), +[type="button"]:not(:disabled), +[type="reset"]:not(:disabled), +[type="submit"]:not(:disabled) { + cursor: pointer; } + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + padding: 0; + border-style: none; } + +input[type="radio"], +input[type="checkbox"] { + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 0; } + +input[type="date"], +input[type="time"], +input[type="datetime-local"], +input[type="month"] { + -webkit-appearance: listbox; } + +textarea { + overflow: auto; + resize: vertical; } + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; } + +legend { + display: block; + width: 100%; + max-width: 100%; + padding: 0; + margin-bottom: .5rem; + font-size: 1.5rem; + line-height: inherit; + color: inherit; + white-space: normal; } */ + +progress { + vertical-align: baseline; +} + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +[type="search"] { + outline-offset: -2px; + -webkit-appearance: none; +} + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; +} + +output { + display: inline-block; +} + +summary { + display: list-item; + cursor: pointer; +} + +template { + display: none; +} + +[hidden] { + display: none !important; +} + +/* h1, h2, h3, h4, h5, h6, +.h1, .h2, .h3, .h4, .h5, .h6 { + margin-bottom: 0.5rem; + font-weight: 500; + line-height: 1.2; } + +h1, .h1 { + font-size: 2.5rem; } + +h2, .h2 { + font-size: 2rem; } + +h3, .h3 { + font-size: 1.75rem; } + +h4, .h4 { + font-size: 1.5rem; } + +h5, .h5 { + font-size: 1.25rem; } + +h6, .h6 { + font-size: 1rem; } */ + +.lead { + font-size: 1.25rem; + font-weight: 300; +} + +.display-1 { + font-size: 6rem; + font-weight: 300; + line-height: 1.2; +} + +.display-2 { + font-size: 5.5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-3 { + font-size: 4.5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-4 { + font-size: 3.5rem; + font-weight: 300; + line-height: 1.2; +} + +hr { + margin-top: 1rem; + margin-bottom: 1rem; + border: 0; + border-top: 1px solid rgba(0, 0, 0, 0.1); +} + +small, +.small { + font-size: 80%; + font-weight: 400; +} + +mark, +.mark { + padding: 0; + background-color: #fcf8e3; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline-item { + display: inline-block; +} +.list-inline-item:not(:last-child) { + margin-right: 0.5rem; +} + +.initialism { + font-size: 90%; + text-transform: uppercase; +} + +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem; +} + +.blockquote-footer { + display: block; + font-size: 80%; + color: #6c757d; +} +.blockquote-footer::before { + content: "\2014\00A0"; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: #fff; + border: 1px solid #dee2e6; + border-radius: 0; + max-width: 100%; + height: auto; +} + +.figure { + display: inline-block; +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} + +.figure-caption { + font-size: 90%; + color: #6c757d; +} + +code { + font-size: 87.5%; + color: #e83e8c; + word-break: break-word; +} +a > code { + color: inherit; +} + +kbd { + padding: 0.2rem 0.4rem; + font-size: 87.5%; + color: #fff; + background-color: #212529; + border-radius: 0.2rem; +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: 700; +} + +pre { + display: block; + font-size: 87.5%; + color: #212529; +} +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +.container { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +@media (min-width: 576px) { + .container { + max-width: 540px; + } +} +@media (min-width: 768px) { + .container { + max-width: 720px; + } +} +@media (min-width: 992px) { + .container { + max-width: 960px; + } +} +@media (min-width: 1200px) { + .container { + max-width: 1140px; + } +} + +.container-fluid { + width: 100%; + height: 85%; + padding-right: 20px; + padding-left: 20px; + margin-right: auto; + margin-left: auto; + margin-top: 5px; +} + +.row { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; +} + +.no-gutters { + margin-right: 0; + margin-left: 0; +} +.no-gutters > .col, +.no-gutters > [class*="col-"] { + padding-right: 0; + padding-left: 0; +} + +.col-1, +.col-2, +.col-3, +.col-4, +.col-5, +.col-6, +.col-7, +.col-8, +.col-9, +.col-10, +.col-11, +.col-12, +.col, +.col-auto, +.col-sm-1, +.col-sm-2, +.col-sm-3, +.col-sm-4, +.col-sm-5, +.col-sm-6, +.col-sm-7, +.col-sm-8, +.col-sm-9, +.col-sm-10, +.col-sm-11, +.col-sm-12, +.col-sm, +.col-sm-auto, +.col-md-1, +.col-md-2, +.col-md-3, +.col-md-4, +.col-md-5, +.col-md-6, +.col-md-7, +.col-md-8, +.col-md-9, +.col-md-10, +.col-md-11, +.col-md-12, +.col-md, +.col-md-auto, +.col-lg-1, +.col-lg-2, +.col-lg-3, +.col-lg-4, +.col-lg-5, +.col-lg-6, +.col-lg-7, +.col-lg-8, +.col-lg-9, +.col-lg-10, +.col-lg-11, +.col-lg-12, +.col-lg, +.col-lg-auto, +.col-xl-1, +.col-xl-2, +.col-xl-3, +.col-xl-4, +.col-xl-5, +.col-xl-6, +.col-xl-7, +.col-xl-8, +.col-xl-9, +.col-xl-10, +.col-xl-11, +.col-xl-12, +.col-xl, +.col-xl-auto { + position: relative; + width: fit-content; + padding-right: 15px; + padding-left: 15px; +} + +.col { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; +} + +.col-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; +} + +.col-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.33333%; + -ms-flex: 0 0 8.33333%; + flex: 0 0 8.33333%; + max-width: 8.33333%; +} + +.col-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.66667%; + -ms-flex: 0 0 16.66667%; + flex: 0 0 16.66667%; + max-width: 16.66667%; +} + +.col-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; +} + +.col-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.33333%; + -ms-flex: 0 0 33.33333%; + flex: 0 0 33.33333%; + max-width: 33.33333%; +} + +.col-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.66667%; + -ms-flex: 0 0 41.66667%; + flex: 0 0 41.66667%; + max-width: 41.66667%; +} + +.col-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; +} + +.col-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.33333%; + -ms-flex: 0 0 58.33333%; + flex: 0 0 58.33333%; + max-width: 58.33333%; +} + +.col-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.66667%; + -ms-flex: 0 0 66.66667%; + flex: 0 0 66.66667%; + max-width: 66.66667%; +} + +.col-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; +} + +.col-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.33333%; + -ms-flex: 0 0 83.33333%; + flex: 0 0 83.33333%; + max-width: 83.33333%; +} + +.col-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.66667%; + -ms-flex: 0 0 91.66667%; + flex: 0 0 91.66667%; + max-width: 91.66667%; +} + +.col-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; +} + +.order-first { + -webkit-box-ordinal-group: 0; + -webkit-order: -1; + -ms-flex-order: -1; + order: -1; +} + +.order-last { + -webkit-box-ordinal-group: 14; + -webkit-order: 13; + -ms-flex-order: 13; + order: 13; +} + +.order-0 { + -webkit-box-ordinal-group: 1; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; +} + +.order-1 { + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; +} + +.order-2 { + -webkit-box-ordinal-group: 3; + -webkit-order: 2; + -ms-flex-order: 2; + order: 2; +} + +.order-3 { + -webkit-box-ordinal-group: 4; + -webkit-order: 3; + -ms-flex-order: 3; + order: 3; +} + +.order-4 { + -webkit-box-ordinal-group: 5; + -webkit-order: 4; + -ms-flex-order: 4; + order: 4; +} + +.order-5 { + -webkit-box-ordinal-group: 6; + -webkit-order: 5; + -ms-flex-order: 5; + order: 5; +} + +.order-6 { + -webkit-box-ordinal-group: 7; + -webkit-order: 6; + -ms-flex-order: 6; + order: 6; +} + +.order-7 { + -webkit-box-ordinal-group: 8; + -webkit-order: 7; + -ms-flex-order: 7; + order: 7; +} + +.order-8 { + -webkit-box-ordinal-group: 9; + -webkit-order: 8; + -ms-flex-order: 8; + order: 8; +} + +.order-9 { + -webkit-box-ordinal-group: 10; + -webkit-order: 9; + -ms-flex-order: 9; + order: 9; +} + +.order-10 { + -webkit-box-ordinal-group: 11; + -webkit-order: 10; + -ms-flex-order: 10; + order: 10; +} + +.order-11 { + -webkit-box-ordinal-group: 12; + -webkit-order: 11; + -ms-flex-order: 11; + order: 11; +} + +.order-12 { + -webkit-box-ordinal-group: 13; + -webkit-order: 12; + -ms-flex-order: 12; + order: 12; +} + +.offset-1 { + margin-left: 8.33333%; +} + +.offset-2 { + margin-left: 16.66667%; +} + +.offset-3 { + margin-left: 25%; +} + +.offset-4 { + margin-left: 33.33333%; +} + +.offset-5 { + margin-left: 41.66667%; +} + +.offset-6 { + margin-left: 50%; +} + +.offset-7 { + margin-left: 58.33333%; +} + +.offset-8 { + margin-left: 66.66667%; +} + +.offset-9 { + margin-left: 75%; +} + +.offset-10 { + margin-left: 83.33333%; +} + +.offset-11 { + margin-left: 91.66667%; +} + +@media (min-width: 576px) { + .col-sm { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-sm-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-sm-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.33333%; + -ms-flex: 0 0 8.33333%; + flex: 0 0 8.33333%; + max-width: 8.33333%; + } + .col-sm-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.66667%; + -ms-flex: 0 0 16.66667%; + flex: 0 0 16.66667%; + max-width: 16.66667%; + } + .col-sm-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-sm-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.33333%; + -ms-flex: 0 0 33.33333%; + flex: 0 0 33.33333%; + max-width: 33.33333%; + } + .col-sm-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.66667%; + -ms-flex: 0 0 41.66667%; + flex: 0 0 41.66667%; + max-width: 41.66667%; + } + .col-sm-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-sm-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.33333%; + -ms-flex: 0 0 58.33333%; + flex: 0 0 58.33333%; + max-width: 58.33333%; + } + .col-sm-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.66667%; + -ms-flex: 0 0 66.66667%; + flex: 0 0 66.66667%; + max-width: 66.66667%; + } + .col-sm-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-sm-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.33333%; + -ms-flex: 0 0 83.33333%; + flex: 0 0 83.33333%; + max-width: 83.33333%; + } + .col-sm-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.66667%; + -ms-flex: 0 0 91.66667%; + flex: 0 0 91.66667%; + max-width: 91.66667%; + } + .col-sm-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-sm-first { + -webkit-box-ordinal-group: 0; + -webkit-order: -1; + -ms-flex-order: -1; + order: -1; + } + .order-sm-last { + -webkit-box-ordinal-group: 14; + -webkit-order: 13; + -ms-flex-order: 13; + order: 13; + } + .order-sm-0 { + -webkit-box-ordinal-group: 1; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + } + .order-sm-1 { + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; + } + .order-sm-2 { + -webkit-box-ordinal-group: 3; + -webkit-order: 2; + -ms-flex-order: 2; + order: 2; + } + .order-sm-3 { + -webkit-box-ordinal-group: 4; + -webkit-order: 3; + -ms-flex-order: 3; + order: 3; + } + .order-sm-4 { + -webkit-box-ordinal-group: 5; + -webkit-order: 4; + -ms-flex-order: 4; + order: 4; + } + .order-sm-5 { + -webkit-box-ordinal-group: 6; + -webkit-order: 5; + -ms-flex-order: 5; + order: 5; + } + .order-sm-6 { + -webkit-box-ordinal-group: 7; + -webkit-order: 6; + -ms-flex-order: 6; + order: 6; + } + .order-sm-7 { + -webkit-box-ordinal-group: 8; + -webkit-order: 7; + -ms-flex-order: 7; + order: 7; + } + .order-sm-8 { + -webkit-box-ordinal-group: 9; + -webkit-order: 8; + -ms-flex-order: 8; + order: 8; + } + .order-sm-9 { + -webkit-box-ordinal-group: 10; + -webkit-order: 9; + -ms-flex-order: 9; + order: 9; + } + .order-sm-10 { + -webkit-box-ordinal-group: 11; + -webkit-order: 10; + -ms-flex-order: 10; + order: 10; + } + .order-sm-11 { + -webkit-box-ordinal-group: 12; + -webkit-order: 11; + -ms-flex-order: 11; + order: 11; + } + .order-sm-12 { + -webkit-box-ordinal-group: 13; + -webkit-order: 12; + -ms-flex-order: 12; + order: 12; + } + .offset-sm-0 { + margin-left: 0; + } + .offset-sm-1 { + margin-left: 8.33333%; + } + .offset-sm-2 { + margin-left: 16.66667%; + } + .offset-sm-3 { + margin-left: 25%; + } + .offset-sm-4 { + margin-left: 33.33333%; + } + .offset-sm-5 { + margin-left: 41.66667%; + } + .offset-sm-6 { + margin-left: 50%; + } + .offset-sm-7 { + margin-left: 58.33333%; + } + .offset-sm-8 { + margin-left: 66.66667%; + } + .offset-sm-9 { + margin-left: 75%; + } + .offset-sm-10 { + margin-left: 83.33333%; + } + .offset-sm-11 { + margin-left: 91.66667%; + } +} + +@media (min-width: 768px) { + .col-md { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-md-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-md-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.33333%; + -ms-flex: 0 0 8.33333%; + flex: 0 0 8.33333%; + max-width: 8.33333%; + } + .col-md-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.66667%; + -ms-flex: 0 0 16.66667%; + flex: 0 0 16.66667%; + max-width: 16.66667%; + } + .col-md-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-md-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.33333%; + -ms-flex: 0 0 33.33333%; + flex: 0 0 33.33333%; + max-width: 33.33333%; + } + .col-md-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.66667%; + -ms-flex: 0 0 41.66667%; + flex: 0 0 41.66667%; + max-width: 41.66667%; + } + .col-md-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-md-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.33333%; + -ms-flex: 0 0 58.33333%; + flex: 0 0 58.33333%; + max-width: 58.33333%; + } + .col-md-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.66667%; + -ms-flex: 0 0 66.66667%; + flex: 0 0 66.66667%; + max-width: 66.66667%; + } + .col-md-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-md-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.33333%; + -ms-flex: 0 0 83.33333%; + flex: 0 0 83.33333%; + max-width: 83.33333%; + } + .col-md-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.66667%; + -ms-flex: 0 0 91.66667%; + flex: 0 0 91.66667%; + max-width: 91.66667%; + } + .col-md-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-md-first { + -webkit-box-ordinal-group: 0; + -webkit-order: -1; + -ms-flex-order: -1; + order: -1; + } + .order-md-last { + -webkit-box-ordinal-group: 14; + -webkit-order: 13; + -ms-flex-order: 13; + order: 13; + } + .order-md-0 { + -webkit-box-ordinal-group: 1; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + } + .order-md-1 { + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; + } + .order-md-2 { + -webkit-box-ordinal-group: 3; + -webkit-order: 2; + -ms-flex-order: 2; + order: 2; + } + .order-md-3 { + -webkit-box-ordinal-group: 4; + -webkit-order: 3; + -ms-flex-order: 3; + order: 3; + } + .order-md-4 { + -webkit-box-ordinal-group: 5; + -webkit-order: 4; + -ms-flex-order: 4; + order: 4; + } + .order-md-5 { + -webkit-box-ordinal-group: 6; + -webkit-order: 5; + -ms-flex-order: 5; + order: 5; + } + .order-md-6 { + -webkit-box-ordinal-group: 7; + -webkit-order: 6; + -ms-flex-order: 6; + order: 6; + } + .order-md-7 { + -webkit-box-ordinal-group: 8; + -webkit-order: 7; + -ms-flex-order: 7; + order: 7; + } + .order-md-8 { + -webkit-box-ordinal-group: 9; + -webkit-order: 8; + -ms-flex-order: 8; + order: 8; + } + .order-md-9 { + -webkit-box-ordinal-group: 10; + -webkit-order: 9; + -ms-flex-order: 9; + order: 9; + } + .order-md-10 { + -webkit-box-ordinal-group: 11; + -webkit-order: 10; + -ms-flex-order: 10; + order: 10; + } + .order-md-11 { + -webkit-box-ordinal-group: 12; + -webkit-order: 11; + -ms-flex-order: 11; + order: 11; + } + .order-md-12 { + -webkit-box-ordinal-group: 13; + -webkit-order: 12; + -ms-flex-order: 12; + order: 12; + } + .offset-md-0 { + margin-left: 0; + } + .offset-md-1 { + margin-left: 8.33333%; + } + .offset-md-2 { + margin-left: 16.66667%; + } + .offset-md-3 { + margin-left: 25%; + } + .offset-md-4 { + margin-left: 33.33333%; + } + .offset-md-5 { + margin-left: 41.66667%; + } + .offset-md-6 { + margin-left: 50%; + } + .offset-md-7 { + margin-left: 58.33333%; + } + .offset-md-8 { + margin-left: 66.66667%; + } + .offset-md-9 { + margin-left: 75%; + } + .offset-md-10 { + margin-left: 83.33333%; + } + .offset-md-11 { + margin-left: 91.66667%; + } +} + +@media (min-width: 992px) { + .col-lg { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-lg-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-lg-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.33333%; + -ms-flex: 0 0 8.33333%; + flex: 0 0 8.33333%; + max-width: 8.33333%; + } + .col-lg-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.66667%; + -ms-flex: 0 0 16.66667%; + flex: 0 0 16.66667%; + max-width: 16.66667%; + } + .col-lg-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-lg-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.33333%; + -ms-flex: 0 0 33.33333%; + flex: 0 0 33.33333%; + max-width: 33.33333%; + } + .col-lg-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.66667%; + -ms-flex: 0 0 41.66667%; + flex: 0 0 41.66667%; + max-width: 41.66667%; + } + .col-lg-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-lg-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.33333%; + -ms-flex: 0 0 58.33333%; + flex: 0 0 58.33333%; + max-width: 58.33333%; + } + .col-lg-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.66667%; + -ms-flex: 0 0 66.66667%; + flex: 0 0 66.66667%; + max-width: 66.66667%; + } + .col-lg-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-lg-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.33333%; + -ms-flex: 0 0 83.33333%; + flex: 0 0 83.33333%; + max-width: 83.33333%; + } + .col-lg-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.66667%; + -ms-flex: 0 0 91.66667%; + flex: 0 0 91.66667%; + max-width: 91.66667%; + } + .col-lg-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-lg-first { + -webkit-box-ordinal-group: 0; + -webkit-order: -1; + -ms-flex-order: -1; + order: -1; + } + .order-lg-last { + -webkit-box-ordinal-group: 14; + -webkit-order: 13; + -ms-flex-order: 13; + order: 13; + } + .order-lg-0 { + -webkit-box-ordinal-group: 1; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + } + .order-lg-1 { + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; + } + .order-lg-2 { + -webkit-box-ordinal-group: 3; + -webkit-order: 2; + -ms-flex-order: 2; + order: 2; + } + .order-lg-3 { + -webkit-box-ordinal-group: 4; + -webkit-order: 3; + -ms-flex-order: 3; + order: 3; + } + .order-lg-4 { + -webkit-box-ordinal-group: 5; + -webkit-order: 4; + -ms-flex-order: 4; + order: 4; + } + .order-lg-5 { + -webkit-box-ordinal-group: 6; + -webkit-order: 5; + -ms-flex-order: 5; + order: 5; + } + .order-lg-6 { + -webkit-box-ordinal-group: 7; + -webkit-order: 6; + -ms-flex-order: 6; + order: 6; + } + .order-lg-7 { + -webkit-box-ordinal-group: 8; + -webkit-order: 7; + -ms-flex-order: 7; + order: 7; + } + .order-lg-8 { + -webkit-box-ordinal-group: 9; + -webkit-order: 8; + -ms-flex-order: 8; + order: 8; + } + .order-lg-9 { + -webkit-box-ordinal-group: 10; + -webkit-order: 9; + -ms-flex-order: 9; + order: 9; + } + .order-lg-10 { + -webkit-box-ordinal-group: 11; + -webkit-order: 10; + -ms-flex-order: 10; + order: 10; + } + .order-lg-11 { + -webkit-box-ordinal-group: 12; + -webkit-order: 11; + -ms-flex-order: 11; + order: 11; + } + .order-lg-12 { + -webkit-box-ordinal-group: 13; + -webkit-order: 12; + -ms-flex-order: 12; + order: 12; + } + .offset-lg-0 { + margin-left: 0; + } + .offset-lg-1 { + margin-left: 8.33333%; + } + .offset-lg-2 { + margin-left: 16.66667%; + } + .offset-lg-3 { + margin-left: 25%; + } + .offset-lg-4 { + margin-left: 33.33333%; + } + .offset-lg-5 { + margin-left: 41.66667%; + } + .offset-lg-6 { + margin-left: 50%; + } + .offset-lg-7 { + margin-left: 58.33333%; + } + .offset-lg-8 { + margin-left: 66.66667%; + } + .offset-lg-9 { + margin-left: 75%; + } + .offset-lg-10 { + margin-left: 83.33333%; + } + .offset-lg-11 { + margin-left: 91.66667%; + } +} + +@media (min-width: 1200px) { + .col-xl { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-xl-auto { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-xl-1 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 8.33333%; + -ms-flex: 0 0 8.33333%; + flex: 0 0 8.33333%; + max-width: 8.33333%; + } + .col-xl-2 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 16.66667%; + -ms-flex: 0 0 16.66667%; + flex: 0 0 16.66667%; + max-width: 16.66667%; + } + .col-xl-3 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-xl-4 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.33333%; + -ms-flex: 0 0 33.33333%; + flex: 0 0 33.33333%; + max-width: 33.33333%; + } + .col-xl-5 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 41.66667%; + -ms-flex: 0 0 41.66667%; + flex: 0 0 41.66667%; + max-width: 41.66667%; + } + .col-xl-6 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-xl-7 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 58.33333%; + -ms-flex: 0 0 58.33333%; + flex: 0 0 58.33333%; + max-width: 58.33333%; + } + .col-xl-8 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.66667%; + -ms-flex: 0 0 66.66667%; + flex: 0 0 66.66667%; + max-width: 66.66667%; + } + .col-xl-9 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-xl-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 83.33333%; + -ms-flex: 0 0 83.33333%; + flex: 0 0 83.33333%; + max-width: 83.33333%; + } + .col-xl-11 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 91.66667%; + -ms-flex: 0 0 91.66667%; + flex: 0 0 91.66667%; + max-width: 91.66667%; + } + .col-xl-12 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 100%; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-xl-first { + -webkit-box-ordinal-group: 0; + -webkit-order: -1; + -ms-flex-order: -1; + order: -1; + } + .order-xl-last { + -webkit-box-ordinal-group: 14; + -webkit-order: 13; + -ms-flex-order: 13; + order: 13; + } + .order-xl-0 { + -webkit-box-ordinal-group: 1; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + } + .order-xl-1 { + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; + } + .order-xl-2 { + -webkit-box-ordinal-group: 3; + -webkit-order: 2; + -ms-flex-order: 2; + order: 2; + } + .order-xl-3 { + -webkit-box-ordinal-group: 4; + -webkit-order: 3; + -ms-flex-order: 3; + order: 3; + } + .order-xl-4 { + -webkit-box-ordinal-group: 5; + -webkit-order: 4; + -ms-flex-order: 4; + order: 4; + } + .order-xl-5 { + -webkit-box-ordinal-group: 6; + -webkit-order: 5; + -ms-flex-order: 5; + order: 5; + } + .order-xl-6 { + -webkit-box-ordinal-group: 7; + -webkit-order: 6; + -ms-flex-order: 6; + order: 6; + } + .order-xl-7 { + -webkit-box-ordinal-group: 8; + -webkit-order: 7; + -ms-flex-order: 7; + order: 7; + } + .order-xl-8 { + -webkit-box-ordinal-group: 9; + -webkit-order: 8; + -ms-flex-order: 8; + order: 8; + } + .order-xl-9 { + -webkit-box-ordinal-group: 10; + -webkit-order: 9; + -ms-flex-order: 9; + order: 9; + } + .order-xl-10 { + -webkit-box-ordinal-group: 11; + -webkit-order: 10; + -ms-flex-order: 10; + order: 10; + } + .order-xl-11 { + -webkit-box-ordinal-group: 12; + -webkit-order: 11; + -ms-flex-order: 11; + order: 11; + } + .order-xl-12 { + -webkit-box-ordinal-group: 13; + -webkit-order: 12; + -ms-flex-order: 12; + order: 12; + } + .offset-xl-0 { + margin-left: 0; + } + .offset-xl-1 { + margin-left: 8.33333%; + } + .offset-xl-2 { + margin-left: 16.66667%; + } + .offset-xl-3 { + margin-left: 25%; + } + .offset-xl-4 { + margin-left: 33.33333%; + } + .offset-xl-5 { + margin-left: 41.66667%; + } + .offset-xl-6 { + margin-left: 50%; + } + .offset-xl-7 { + margin-left: 58.33333%; + } + .offset-xl-8 { + margin-left: 66.66667%; + } + .offset-xl-9 { + margin-left: 75%; + } + .offset-xl-10 { + margin-left: 83.33333%; + } + .offset-xl-11 { + margin-left: 91.66667%; + } +} + +.table { + width: 100%; + margin-bottom: 1rem; + color: #515151; +} +.table th, +.table td { + padding: 0.75rem; + vertical-align: top; + border-top: 1px solid #dee2e6; +} +.table thead th { + vertical-align: bottom; + border-bottom: 2px solid #dee2e6; +} +.table tbody + tbody { + border-top: 2px solid #dee2e6; +} + +.table-sm th, +.table-sm td { + padding: 0.3rem; +} + +.table-bordered { + border: 1px solid #dee2e6; +} +.table-bordered th, +.table-bordered td { + border: 1px solid #dee2e6; +} +.table-bordered thead th, +.table-bordered thead td { + border-bottom-width: 2px; +} + +.table-borderless th, +.table-borderless td, +.table-borderless thead th, +.table-borderless tbody + tbody { + border: 0; +} + +.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(0, 0, 0, 0.05); +} + +.table-hover tbody tr:hover { + color: #515151; + background-color: rgba(0, 0, 0, 0.075); +} + +.table-primary, +.table-primary > th, +.table-primary > td { + background-color: #c9ddfe; +} + +.table-primary th, +.table-primary td, +.table-primary thead th, +.table-primary tbody + tbody { + border-color: #9bbffd; +} + +.table-hover .table-primary:hover { + background-color: #b0cdfe; +} +.table-hover .table-primary:hover > td, +.table-hover .table-primary:hover > th { + background-color: #b0cdfe; +} + +.table-secondary, +.table-secondary > th, +.table-secondary > td { + background-color: #d8dbe1; +} + +.table-secondary th, +.table-secondary td, +.table-secondary thead th, +.table-secondary tbody + tbody { + border-color: #b6bcc7; +} + +.table-hover .table-secondary:hover { + background-color: #caced6; +} +.table-hover .table-secondary:hover > td, +.table-hover .table-secondary:hover > th { + background-color: #caced6; +} + +.table-success, +.table-success > th, +.table-success > td { + background-color: #c0e7cb; +} + +.table-success th, +.table-success td, +.table-success thead th, +.table-success tbody + tbody { + border-color: #89d39f; +} + +.table-hover .table-success:hover { + background-color: #aee0bc; +} +.table-hover .table-success:hover > td, +.table-hover .table-success:hover > th { + background-color: #aee0bc; +} + +.table-info, +.table-info > th, +.table-info > td { + background-color: #dec9fe; +} + +.table-info th, +.table-info td, +.table-info thead th, +.table-info tbody + tbody { + border-color: #c29bfd; +} + +.table-hover .table-info:hover { + background-color: #cfb0fe; +} +.table-hover .table-info:hover > td, +.table-hover .table-info:hover > th { + background-color: #cfb0fe; +} + +.table-warning, +.table-warning > th, +.table-warning > td { + background-color: #fee8c9; +} + +.table-warning th, +.table-warning td, +.table-warning thead th, +.table-warning tbody + tbody { + border-color: #fdd59b; +} + +.table-hover .table-warning:hover { + background-color: #feddb0; +} +.table-hover .table-warning:hover > td, +.table-hover .table-warning:hover > th { + background-color: #feddb0; +} + +.table-danger, +.table-danger > th, +.table-danger > td { + background-color: #fecac9; +} + +.table-danger th, +.table-danger td, +.table-danger thead th, +.table-danger tbody + tbody { + border-color: #fd9c9b; +} + +.table-hover .table-danger:hover { + background-color: #feb1b0; +} +.table-hover .table-danger:hover > td, +.table-hover .table-danger:hover > th { + background-color: #feb1b0; +} + +.table-light, +.table-light > th, +.table-light > td { + background-color: #fdfdfe; +} + +.table-light th, +.table-light td, +.table-light thead th, +.table-light tbody + tbody { + border-color: #fbfcfc; +} + +.table-hover .table-light:hover { + background-color: #ececf6; +} +.table-hover .table-light:hover > td, +.table-hover .table-light:hover > th { + background-color: #ececf6; +} + +.table-dark, +.table-dark > th, +.table-dark > td { + background-color: #c0c1c4; +} + +.table-dark th, +.table-dark td, +.table-dark thead th, +.table-dark tbody + tbody { + border-color: #8a8d92; +} + +.table-hover .table-dark:hover { + background-color: #b3b4b8; +} +.table-hover .table-dark:hover > td, +.table-hover .table-dark:hover > th { + background-color: #b3b4b8; +} + +.table-active, +.table-active > th, +.table-active > td { + background-color: rgba(0, 0, 0, 0.075); +} + +.table-hover .table-active:hover { + background-color: rgba(0, 0, 0, 0.075); +} +.table-hover .table-active:hover > td, +.table-hover .table-active:hover > th { + background-color: rgba(0, 0, 0, 0.075); +} + +.table .thead-dark th { + color: #fff; + background-color: #343a40; + border-color: #454d55; +} + +.table .thead-light th { + color: #495057; + background-color: #e9ecef; + border-color: #dee2e6; +} + +.table-dark { + color: #fff; + background-color: #343a40; +} +.table-dark th, +.table-dark td, +.table-dark thead th { + border-color: #454d55; +} +.table-dark.table-bordered { + border: 0; +} +.table-dark.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(255, 255, 255, 0.05); +} +.table-dark.table-hover tbody tr:hover { + color: #fff; + background-color: rgba(255, 255, 255, 0.075); +} + +@media (max-width: 575.98px) { + .table-responsive-sm { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-sm > .table-bordered { + border: 0; + } +} + +@media (max-width: 767.98px) { + .table-responsive-md { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-md > .table-bordered { + border: 0; + } +} + +@media (max-width: 991.98px) { + .table-responsive-lg { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-lg > .table-bordered { + border: 0; + } +} + +@media (max-width: 1199.98px) { + .table-responsive-xl { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-xl > .table-bordered { + border: 0; + } +} + +.table-responsive { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} +.table-responsive > .table-bordered { + border: 0; +} + +.form-control { + display: block; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ced4da; + border-radius: 0; + -webkit-transition: + border-color 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + transition: + border-color 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + -o-transition: + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; + transition: + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; + transition: + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control { + -webkit-transition: none; + -o-transition: none; + transition: none; + } +} +.form-control::-ms-expand { + background-color: transparent; + border: 0; +} +.form-control:focus { + color: #495057; + background-color: #fff; + border: 1px solid var(--color-light-green); + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.25); +} +.form-control::-webkit-input-placeholder { + color: #6c757d; + opacity: 1; +} +.form-control::-moz-placeholder { + color: #6c757d; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #6c757d; + opacity: 1; +} +.form-control::-ms-input-placeholder { + color: #6c757d; + opacity: 1; +} +.form-control::placeholder { + color: #6c757d; + opacity: 1; +} +.form-control:disabled, +.form-control[readonly] { + background-color: #e9ecef; + opacity: 1; +} + +select.form-control:focus::-ms-value { + color: #495057; + background-color: #fff; +} + +.form-control-file, +.form-control-range { + display: block; + width: 100%; +} + +.col-form-label { + padding-top: calc(0.375rem + 1px); + padding-bottom: calc(0.375rem + 1px); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5; +} + +.col-form-label-lg { + padding-top: calc(0.5rem + 1px); + padding-bottom: calc(0.5rem + 1px); + font-size: 1.25rem; + line-height: 1.5; +} + +.col-form-label-sm { + padding-top: calc(0.25rem + 1px); + padding-bottom: calc(0.25rem + 1px); + font-size: 0.875rem; + line-height: 1.5; +} + +.form-control-plaintext { + display: block; + width: 100%; + padding-top: 0.375rem; + padding-bottom: 0.375rem; + margin-bottom: 0; + line-height: 1.5; + color: #515151; + background-color: transparent; + border: solid transparent; + border-width: 1px 0; +} +.form-control-plaintext.form-control-sm, +.form-control-plaintext.form-control-lg { + padding-right: 0; + padding-left: 0; +} + +.form-control-sm { + height: calc(1.5em + 0.5rem + 2px); + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; +} + +.form-control-lg { + height: calc(1.5em + 1rem + 2px); + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; +} + +select.form-control[size], +select.form-control[multiple] { + height: auto; +} + +textarea.form-control { + height: auto; +} + +/* .form-group { + margin-bottom: 1rem; } */ + +.form-text { + display: block; + margin-top: 0.25rem; +} + +/* .form-row { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -5px; + margin-left: -5px; } + .form-row > .col, + .form-row > [class*="col-"] { + padding-right: 5px; + padding-left: 5px; } + +.form-check { + position: relative; + display: block; + padding-left: 1.25rem; } + +.form-check-input { + position: absolute; + margin-top: 0.3rem; + margin-left: -1.25rem; } + .form-check-input:disabled ~ .form-check-label { + color: #6c757d; } + +.form-check-label { + margin-bottom: 0; } + +.form-check-inline { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + padding-left: 0; + margin-right: 0.75rem; } + .form-check-inline .form-check-input { + position: static; + margin-top: 0; + margin-right: 0.3125rem; + margin-left: 0; } + */ +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 80%; + color: #1dab47; +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + line-height: 1.5; + color: #fff; + background-color: rgba(29, 171, 71, 0.9); + border-radius: 0; +} + +.was-validated .form-control:valid, +.form-control.is-valid { + border-color: #1dab47; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%231DAB47' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: center right calc(0.375em + 0.1875rem); + -webkit-background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-control:valid:focus, +.form-control.is-valid:focus { + border-color: #1dab47; + -webkit-box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.25); + box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.25); +} +.was-validated .form-control:valid ~ .valid-feedback, +.was-validated .form-control:valid ~ .valid-tooltip, +.form-control.is-valid ~ .valid-feedback, +.form-control.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated textarea.form-control:valid, +textarea.form-control.is-valid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} + +.was-validated .custom-select:valid, +.custom-select.is-valid { + border-color: #1dab47; + padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem); + background: + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") + no-repeat right 0.75rem center/8px 10px, + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%231DAB47' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") + #fff no-repeat center right 1.75rem / calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .custom-select:valid:focus, +.custom-select.is-valid:focus { + border-color: #1dab47; + -webkit-box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.25); + box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.25); +} +.was-validated .custom-select:valid ~ .valid-feedback, +.was-validated .custom-select:valid ~ .valid-tooltip, +.custom-select.is-valid ~ .valid-feedback, +.custom-select.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-control-file:valid ~ .valid-feedback, +.was-validated .form-control-file:valid ~ .valid-tooltip, +.form-control-file.is-valid ~ .valid-feedback, +.form-control-file.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-check-input:valid ~ .form-check-label, +.form-check-input.is-valid ~ .form-check-label { + color: #1dab47; +} + +.was-validated .form-check-input:valid ~ .valid-feedback, +.was-validated .form-check-input:valid ~ .valid-tooltip, +.form-check-input.is-valid ~ .valid-feedback, +.form-check-input.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .custom-control-input:valid ~ .custom-control-label, +.custom-control-input.is-valid ~ .custom-control-label { + color: #1dab47; +} +.was-validated .custom-control-input:valid ~ .custom-control-label::before, +.custom-control-input.is-valid ~ .custom-control-label::before { + border-color: #1dab47; +} + +.was-validated .custom-control-input:valid ~ .valid-feedback, +.was-validated .custom-control-input:valid ~ .valid-tooltip, +.custom-control-input.is-valid ~ .valid-feedback, +.custom-control-input.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, +.custom-control-input.is-valid:checked ~ .custom-control-label::before { + border-color: #24d759; + background-color: #24d759; +} + +.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, +.custom-control-input.is-valid:focus ~ .custom-control-label::before { + -webkit-box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.25); + box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.25); +} + +.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, +.custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before { + border-color: #1dab47; +} + +.was-validated .custom-file-input:valid ~ .custom-file-label, +.custom-file-input.is-valid ~ .custom-file-label { + border-color: #1dab47; +} + +.was-validated .custom-file-input:valid ~ .valid-feedback, +.was-validated .custom-file-input:valid ~ .valid-tooltip, +.custom-file-input.is-valid ~ .valid-feedback, +.custom-file-input.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .custom-file-input:valid:focus ~ .custom-file-label, +.custom-file-input.is-valid:focus ~ .custom-file-label { + border-color: #1dab47; + -webkit-box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.25); + box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.25); +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 80%; + color: #fc413f; +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + line-height: 1.5; + color: #fff; + background-color: rgba(252, 65, 63, 0.9); + border-radius: 0; +} + +.was-validated .form-control:invalid, +.form-control.is-invalid { + border-color: #fc413f; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23FC413F' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23FC413F' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"); + background-repeat: no-repeat; + background-position: center right calc(0.375em + 0.1875rem); + -webkit-background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-control:invalid:focus, +.form-control.is-invalid:focus { + border-color: #fc413f; + -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.25); + box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.25); +} +.was-validated .form-control:invalid ~ .invalid-feedback, +.was-validated .form-control:invalid ~ .invalid-tooltip, +.form-control.is-invalid ~ .invalid-feedback, +.form-control.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated textarea.form-control:invalid, +textarea.form-control.is-invalid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} + +.was-validated .custom-select:invalid, +.custom-select.is-invalid { + border-color: #fc413f; + padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem); + background: + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") + no-repeat right 0.75rem center/8px 10px, + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23FC413F' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23FC413F' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") + #fff no-repeat center right 1.75rem / calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .custom-select:invalid:focus, +.custom-select.is-invalid:focus { + border-color: #fc413f; + -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.25); + box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.25); +} +.was-validated .custom-select:invalid ~ .invalid-feedback, +.was-validated .custom-select:invalid ~ .invalid-tooltip, +.custom-select.is-invalid ~ .invalid-feedback, +.custom-select.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-control-file:invalid ~ .invalid-feedback, +.was-validated .form-control-file:invalid ~ .invalid-tooltip, +.form-control-file.is-invalid ~ .invalid-feedback, +.form-control-file.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-check-input:invalid ~ .form-check-label, +.form-check-input.is-invalid ~ .form-check-label { + color: #fc413f; +} + +.was-validated .form-check-input:invalid ~ .invalid-feedback, +.was-validated .form-check-input:invalid ~ .invalid-tooltip, +.form-check-input.is-invalid ~ .invalid-feedback, +.form-check-input.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .custom-control-input:invalid ~ .custom-control-label, +.custom-control-input.is-invalid ~ .custom-control-label { + color: #fc413f; +} +.was-validated .custom-control-input:invalid ~ .custom-control-label::before, +.custom-control-input.is-invalid ~ .custom-control-label::before { + border-color: #fc413f; +} + +.was-validated .custom-control-input:invalid ~ .invalid-feedback, +.was-validated .custom-control-input:invalid ~ .invalid-tooltip, +.custom-control-input.is-invalid ~ .invalid-feedback, +.custom-control-input.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, +.custom-control-input.is-invalid:checked ~ .custom-control-label::before { + border-color: #fd7371; + background-color: #fd7371; +} + +.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, +.custom-control-input.is-invalid:focus ~ .custom-control-label::before { + -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.25); + box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.25); +} + +.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, +.custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before { + border-color: #fc413f; +} + +.was-validated .custom-file-input:invalid ~ .custom-file-label, +.custom-file-input.is-invalid ~ .custom-file-label { + border-color: #fc413f; +} + +.was-validated .custom-file-input:invalid ~ .invalid-feedback, +.was-validated .custom-file-input:invalid ~ .invalid-tooltip, +.custom-file-input.is-invalid ~ .invalid-feedback, +.custom-file-input.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, +.custom-file-input.is-invalid:focus ~ .custom-file-label { + border-color: #fc413f; + -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.25); + box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.25); +} + +.form-inline { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; +} +.form-inline .form-check { + width: 100%; +} +@media (min-width: 576px) { + .form-inline label { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + margin-bottom: 0; + } + .form-inline .form-group { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + margin-bottom: 0; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-plaintext { + display: inline-block; + } + .form-inline .input-group, + .form-inline .custom-select { + width: auto; + } + .form-inline .form-check { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + width: auto; + padding-left: 0; + } + .form-inline .form-check-input { + position: relative; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + margin-top: 0; + margin-right: 0.25rem; + margin-left: 0; + } + .form-inline .custom-control { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + } + .form-inline .custom-control-label { + margin-bottom: 0; + } +} + +.btn { + display: inline-block; + font-weight: 400; + color: #515151; + text-align: center; + vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: transparent; + border: 1px solid transparent; + padding: 0.375rem 0.75rem; + font-size: 1rem; + line-height: 1.5; + border-radius: 0; + -webkit-transition: + color 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + transition: + color 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + -o-transition: + color 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; + transition: + color 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; + transition: + color 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .btn { + -webkit-transition: none; + -o-transition: none; + transition: none; + } +} +.btn:hover { + color: #515151; + text-decoration: none; +} +.btn:focus, +.btn.focus { + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.25); + box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.25); +} +.btn.disabled, +.btn:disabled { + opacity: 0.65; +} + +a.btn.disabled, +fieldset:disabled a.btn { + pointer-events: none; +} + +.btn-primary { + color: #fff; + background-color: #3f84fc; + border-color: #3f84fc; +} +.btn-primary:hover { + color: #fff; + background-color: #196cfb; + border-color: #0d64fb; +} +.btn-primary:focus, +.btn-primary.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(92, 150, 252, 0.5); + box-shadow: 0 0 0 0.2rem rgba(92, 150, 252, 0.5); +} +.btn-primary.disabled, +.btn-primary:disabled { + color: #fff; + background-color: #3f84fc; + border-color: #3f84fc; +} +.btn-primary:not(:disabled):not(.disabled):active, +.btn-primary:not(:disabled):not(.disabled).active, +.show > .btn-primary.dropdown-toggle { + color: #fff; + background-color: #0d64fb; + border-color: #045df7; +} +.btn-primary:not(:disabled):not(.disabled):active:focus, +.btn-primary:not(:disabled):not(.disabled).active:focus, +.show > .btn-primary.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(92, 150, 252, 0.5); + box-shadow: 0 0 0 0.2rem rgba(92, 150, 252, 0.5); +} + +.btn-secondary { + color: #fff; + background-color: #727f94; + border-color: #727f94; +} +.btn-secondary:hover { + color: #fff; + background-color: #616c7f; + border-color: #5b6678; +} +.btn-secondary:focus, +.btn-secondary.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(135, 146, 164, 0.5); + box-shadow: 0 0 0 0.2rem rgba(135, 146, 164, 0.5); +} +.btn-secondary.disabled, +.btn-secondary:disabled { + color: #fff; + background-color: #727f94; + border-color: #727f94; +} +.btn-secondary:not(:disabled):not(.disabled):active, +.btn-secondary:not(:disabled):not(.disabled).active, +.show > .btn-secondary.dropdown-toggle { + color: #fff; + background-color: #5b6678; + border-color: #566071; +} +.btn-secondary:not(:disabled):not(.disabled):active:focus, +.btn-secondary:not(:disabled):not(.disabled).active:focus, +.show > .btn-secondary.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(135, 146, 164, 0.5); + box-shadow: 0 0 0 0.2rem rgba(135, 146, 164, 0.5); +} + +.btn-success { + color: #fff; + background-color: #1dab47; + border-color: #1dab47; +} +.btn-success:hover { + color: #fff; + background-color: #178a39; + border-color: #167f35; +} +.btn-success:focus, +.btn-success.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(63, 184, 99, 0.5); + box-shadow: 0 0 0 0.2rem rgba(63, 184, 99, 0.5); +} +.btn-success.disabled, +.btn-success:disabled { + color: #fff; + background-color: #1dab47; + border-color: #1dab47; +} +.btn-success:not(:disabled):not(.disabled):active, +.btn-success:not(:disabled):not(.disabled).active, +.show > .btn-success.dropdown-toggle { + color: #fff; + background-color: #167f35; + border-color: #147430; +} +.btn-success:not(:disabled):not(.disabled):active:focus, +.btn-success:not(:disabled):not(.disabled).active:focus, +.show > .btn-success.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(63, 184, 99, 0.5); + box-shadow: 0 0 0 0.2rem rgba(63, 184, 99, 0.5); +} + +.btn-info { + color: #fff; + background-color: #8a3ffc; + border-color: #8a3ffc; +} +.btn-info:hover { + color: #fff; + background-color: #7319fb; + border-color: #6b0dfb; +} +.btn-info:focus, +.btn-info.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(156, 92, 252, 0.5); + box-shadow: 0 0 0 0.2rem rgba(156, 92, 252, 0.5); +} +.btn-info.disabled, +.btn-info:disabled { + color: #fff; + background-color: #8a3ffc; + border-color: #8a3ffc; +} +.btn-info:not(:disabled):not(.disabled):active, +.btn-info:not(:disabled):not(.disabled).active, +.show > .btn-info.dropdown-toggle { + color: #fff; + background-color: #6b0dfb; + border-color: #6504f7; +} +.btn-info:not(:disabled):not(.disabled):active:focus, +.btn-info:not(:disabled):not(.disabled).active:focus, +.show > .btn-info.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(156, 92, 252, 0.5); + box-shadow: 0 0 0 0.2rem rgba(156, 92, 252, 0.5); +} + +.btn-warning { + color: #212529; + background-color: #fcae3f; + border-color: #fcae3f; +} +.btn-warning:hover { + color: #212529; + background-color: #fb9e19; + border-color: #fb990d; +} +.btn-warning:focus, +.btn-warning.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(219, 153, 60, 0.5); + box-shadow: 0 0 0 0.2rem rgba(219, 153, 60, 0.5); +} +.btn-warning.disabled, +.btn-warning:disabled { + color: #212529; + background-color: #fcae3f; + border-color: #fcae3f; +} +.btn-warning:not(:disabled):not(.disabled):active, +.btn-warning:not(:disabled):not(.disabled).active, +.show > .btn-warning.dropdown-toggle { + color: #212529; + background-color: #fb990d; + border-color: #f79304; +} +.btn-warning:not(:disabled):not(.disabled):active:focus, +.btn-warning:not(:disabled):not(.disabled).active:focus, +.show > .btn-warning.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(219, 153, 60, 0.5); + box-shadow: 0 0 0 0.2rem rgba(219, 153, 60, 0.5); +} + +.btn-danger { + color: #fff; + background-color: #fc413f; + border-color: #fc413f; +} +.btn-danger:hover { + color: #fff; + background-color: #fb1c19; + border-color: #fb0f0d; +} +.btn-danger:focus, +.btn-danger.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 94, 92, 0.5); + box-shadow: 0 0 0 0.2rem rgba(252, 94, 92, 0.5); +} +.btn-danger.disabled, +.btn-danger:disabled { + color: #fff; + background-color: #fc413f; + border-color: #fc413f; +} +.btn-danger:not(:disabled):not(.disabled):active, +.btn-danger:not(:disabled):not(.disabled).active, +.show > .btn-danger.dropdown-toggle { + color: #fff; + background-color: #fb0f0d; + border-color: #f70604; +} +.btn-danger:not(:disabled):not(.disabled):active:focus, +.btn-danger:not(:disabled):not(.disabled).active:focus, +.show > .btn-danger.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 94, 92, 0.5); + box-shadow: 0 0 0 0.2rem rgba(252, 94, 92, 0.5); +} + +.btn-light { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; +} +.btn-light:hover { + color: #212529; + background-color: #e2e6ea; + border-color: #dae0e5; +} +.btn-light:focus, +.btn-light.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); + box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); +} +.btn-light.disabled, +.btn-light:disabled { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; +} +.btn-light:not(:disabled):not(.disabled):active, +.btn-light:not(:disabled):not(.disabled).active, +.show > .btn-light.dropdown-toggle { + color: #212529; + background-color: #dae0e5; + border-color: #d3d9df; +} +.btn-light:not(:disabled):not(.disabled):active:focus, +.btn-light:not(:disabled):not(.disabled).active:focus, +.show > .btn-light.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); + box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); +} + +.btn-dark { + color: #fff; + background-color: #1e232d; + border-color: #1e232d; +} +.btn-dark:hover { + color: #fff; + background-color: #0f1116; + border-color: #0a0b0e; +} +.btn-dark:focus, +.btn-dark.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(64, 68, 77, 0.5); + box-shadow: 0 0 0 0.2rem rgba(64, 68, 77, 0.5); +} +.btn-dark.disabled, +.btn-dark:disabled { + color: #fff; + background-color: #1e232d; + border-color: #1e232d; +} +.btn-dark:not(:disabled):not(.disabled):active, +.btn-dark:not(:disabled):not(.disabled).active, +.show > .btn-dark.dropdown-toggle { + color: #fff; + background-color: #0a0b0e; + border-color: #050507; +} +.btn-dark:not(:disabled):not(.disabled):active:focus, +.btn-dark:not(:disabled):not(.disabled).active:focus, +.show > .btn-dark.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(64, 68, 77, 0.5); + box-shadow: 0 0 0 0.2rem rgba(64, 68, 77, 0.5); +} + +.btn-outline-primary { + color: #3f84fc; + border-color: #3f84fc; +} +.btn-outline-primary:hover { + color: #fff; + background-color: #3f84fc; + border-color: #3f84fc; +} +.btn-outline-primary:focus, +.btn-outline-primary.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.5); + box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.5); +} +.btn-outline-primary.disabled, +.btn-outline-primary:disabled { + color: #3f84fc; + background-color: transparent; +} +.btn-outline-primary:not(:disabled):not(.disabled):active, +.btn-outline-primary:not(:disabled):not(.disabled).active, +.show > .btn-outline-primary.dropdown-toggle { + color: #fff; + background-color: #3f84fc; + border-color: #3f84fc; +} +.btn-outline-primary:not(:disabled):not(.disabled):active:focus, +.btn-outline-primary:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-primary.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.5); + box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.5); +} + +.btn-outline-secondary { + color: #727f94; + border-color: #727f94; +} +.btn-outline-secondary:hover { + color: #fff; + background-color: #727f94; + border-color: #727f94; +} +.btn-outline-secondary:focus, +.btn-outline-secondary.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(114, 127, 148, 0.5); + box-shadow: 0 0 0 0.2rem rgba(114, 127, 148, 0.5); +} +.btn-outline-secondary.disabled, +.btn-outline-secondary:disabled { + color: #727f94; + background-color: transparent; +} +.btn-outline-secondary:not(:disabled):not(.disabled):active, +.btn-outline-secondary:not(:disabled):not(.disabled).active, +.show > .btn-outline-secondary.dropdown-toggle { + color: #fff; + background-color: #727f94; + border-color: #727f94; +} +.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, +.btn-outline-secondary:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-secondary.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(114, 127, 148, 0.5); + box-shadow: 0 0 0 0.2rem rgba(114, 127, 148, 0.5); +} + +.btn-outline-success { + color: #1dab47; + border-color: #1dab47; +} +.btn-outline-success:hover { + color: #fff; + background-color: #1dab47; + border-color: #1dab47; +} +.btn-outline-success:focus, +.btn-outline-success.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.5); + box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.5); +} +.btn-outline-success.disabled, +.btn-outline-success:disabled { + color: #1dab47; + background-color: transparent; +} +.btn-outline-success:not(:disabled):not(.disabled):active, +.btn-outline-success:not(:disabled):not(.disabled).active, +.show > .btn-outline-success.dropdown-toggle { + color: #fff; + background-color: #1dab47; + border-color: #1dab47; +} +.btn-outline-success:not(:disabled):not(.disabled):active:focus, +.btn-outline-success:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-success.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.5); + box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.5); +} + +.btn-outline-info { + color: #8a3ffc; + border-color: #8a3ffc; +} +.btn-outline-info:hover { + color: #fff; + background-color: #8a3ffc; + border-color: #8a3ffc; +} +.btn-outline-info:focus, +.btn-outline-info.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(138, 63, 252, 0.5); + box-shadow: 0 0 0 0.2rem rgba(138, 63, 252, 0.5); +} +.btn-outline-info.disabled, +.btn-outline-info:disabled { + color: #8a3ffc; + background-color: transparent; +} +.btn-outline-info:not(:disabled):not(.disabled):active, +.btn-outline-info:not(:disabled):not(.disabled).active, +.show > .btn-outline-info.dropdown-toggle { + color: #fff; + background-color: #8a3ffc; + border-color: #8a3ffc; +} +.btn-outline-info:not(:disabled):not(.disabled):active:focus, +.btn-outline-info:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-info.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(138, 63, 252, 0.5); + box-shadow: 0 0 0 0.2rem rgba(138, 63, 252, 0.5); +} + +.btn-outline-warning { + color: #fcae3f; + border-color: #fcae3f; +} +.btn-outline-warning:hover { + color: #212529; + background-color: #fcae3f; + border-color: #fcae3f; +} +.btn-outline-warning:focus, +.btn-outline-warning.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 174, 63, 0.5); + box-shadow: 0 0 0 0.2rem rgba(252, 174, 63, 0.5); +} +.btn-outline-warning.disabled, +.btn-outline-warning:disabled { + color: #fcae3f; + background-color: transparent; +} +.btn-outline-warning:not(:disabled):not(.disabled):active, +.btn-outline-warning:not(:disabled):not(.disabled).active, +.show > .btn-outline-warning.dropdown-toggle { + color: #212529; + background-color: #fcae3f; + border-color: #fcae3f; +} +.btn-outline-warning:not(:disabled):not(.disabled):active:focus, +.btn-outline-warning:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-warning.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 174, 63, 0.5); + box-shadow: 0 0 0 0.2rem rgba(252, 174, 63, 0.5); +} + +.btn-outline-danger { + color: #fc413f; + border-color: #fc413f; +} +.btn-outline-danger:hover { + color: #fff; + background-color: #fc413f; + border-color: #fc413f; +} +.btn-outline-danger:focus, +.btn-outline-danger.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.5); + box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.5); +} +.btn-outline-danger.disabled, +.btn-outline-danger:disabled { + color: #fc413f; + background-color: transparent; +} +.btn-outline-danger:not(:disabled):not(.disabled):active, +.btn-outline-danger:not(:disabled):not(.disabled).active, +.show > .btn-outline-danger.dropdown-toggle { + color: #fff; + background-color: #fc413f; + border-color: #fc413f; +} +.btn-outline-danger:not(:disabled):not(.disabled):active:focus, +.btn-outline-danger:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-danger.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.5); + box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.5); +} + +.btn-outline-light { + color: #f8f9fa; + border-color: #f8f9fa; +} +.btn-outline-light:hover { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; +} +.btn-outline-light:focus, +.btn-outline-light.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); +} +.btn-outline-light.disabled, +.btn-outline-light:disabled { + color: #f8f9fa; + background-color: transparent; +} +.btn-outline-light:not(:disabled):not(.disabled):active, +.btn-outline-light:not(:disabled):not(.disabled).active, +.show > .btn-outline-light.dropdown-toggle { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; +} +.btn-outline-light:not(:disabled):not(.disabled):active:focus, +.btn-outline-light:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-light.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); +} + +.btn-outline-dark { + color: #1e232d; + border-color: #1e232d; +} +.btn-outline-dark:hover { + color: #fff; + background-color: #1e232d; + border-color: #1e232d; +} +.btn-outline-dark:focus, +.btn-outline-dark.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(30, 35, 45, 0.5); + box-shadow: 0 0 0 0.2rem rgba(30, 35, 45, 0.5); +} +.btn-outline-dark.disabled, +.btn-outline-dark:disabled { + color: #1e232d; + background-color: transparent; +} +.btn-outline-dark:not(:disabled):not(.disabled):active, +.btn-outline-dark:not(:disabled):not(.disabled).active, +.show > .btn-outline-dark.dropdown-toggle { + color: #fff; + background-color: #1e232d; + border-color: #1e232d; +} +.btn-outline-dark:not(:disabled):not(.disabled):active:focus, +.btn-outline-dark:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-dark.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(30, 35, 45, 0.5); + box-shadow: 0 0 0 0.2rem rgba(30, 35, 45, 0.5); +} + +.btn-link { + font-weight: 400; + color: #3f84fc; + text-decoration: none; +} +.btn-link:hover { + color: #0458eb; + text-decoration: underline; +} +.btn-link:focus, +.btn-link.focus { + text-decoration: underline; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link:disabled, +.btn-link.disabled { + color: #6c757d; + pointer-events: none; +} + +.btn-lg, +.btn-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; +} + +.btn-sm, +.btn-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; +} + +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 0.5rem; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.fade { + -webkit-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} +@media (prefers-reduced-motion: reduce) { + .fade { + -webkit-transition: none; + -o-transition: none; + transition: none; + } +} +.fade:not(.show) { + opacity: 0; +} + +.dropup, +.dropright, +.dropdown, +.dropleft { + position: relative; +} + +.dropdown-toggle { + white-space: nowrap; +} +.dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; +} +.dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 10rem; + padding: 0.5rem 0; + margin: 0.125rem 0 0; + font-size: 1rem; + color: #515151; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0; +} + +.dropdown-menu-left { + right: auto; + left: 0; +} + +.dropdown-menu-right { + right: 0; + left: auto; +} + +@media (min-width: 576px) { + .dropdown-menu-sm-left { + right: auto; + left: 0; + } + .dropdown-menu-sm-right { + right: 0; + left: auto; + } +} + +@media (min-width: 768px) { + .dropdown-menu-md-left { + right: auto; + left: 0; + } + .dropdown-menu-md-right { + right: 0; + left: auto; + } +} + +@media (min-width: 992px) { + .dropdown-menu-lg-left { + right: auto; + left: 0; + } + .dropdown-menu-lg-right { + right: 0; + left: auto; + } +} + +@media (min-width: 1200px) { + .dropdown-menu-xl-left { + right: auto; + left: 0; + } + .dropdown-menu-xl-right { + right: 0; + left: auto; + } +} + +.dropup .dropdown-menu { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: 0.125rem; +} + +.dropup .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; +} + +.dropup .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropright .dropdown-menu { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: 0.125rem; +} + +.dropright .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; +} + +.dropright .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropright .dropdown-toggle::after { + vertical-align: 0; +} + +.dropleft .dropdown-menu { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: 0.125rem; +} + +.dropleft .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; +} + +.dropleft .dropdown-toggle::after { + display: none; +} + +.dropleft .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; +} + +.dropleft .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropleft .dropdown-toggle::before { + vertical-align: 0; +} + +.dropdown-menu[x-placement^="top"], +.dropdown-menu[x-placement^="right"], +.dropdown-menu[x-placement^="bottom"], +.dropdown-menu[x-placement^="left"] { + right: auto; + bottom: auto; +} + +.dropdown-divider { + height: 0; + margin: 0.5rem 0; + overflow: hidden; + border-top: 1px solid #e9ecef; +} + +.dropdown-item { + display: block; + width: 100%; + padding: 0.25rem 1.5rem; + clear: both; + font-weight: 400; + color: #212529; + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; +} +.dropdown-item:hover, +.dropdown-item:focus { + color: #16181b; + text-decoration: none; + background-color: #f8f9fa; +} +.dropdown-item.active, +.dropdown-item:active { + color: #fff; + text-decoration: none; + background-color: var(--color-light-green); +} +.dropdown-item.disabled, +.dropdown-item:disabled { + color: #6c757d; + pointer-events: none; + background-color: transparent; +} + +.dropdown-menu.show { + display: block; +} + +.dropdown-header { + display: block; + padding: 0.5rem 1.5rem; + margin-bottom: 0; + font-size: 0.875rem; + color: #6c757d; + white-space: nowrap; +} + +.dropdown-item-text { + display: block; + padding: 0.25rem 1.5rem; + color: #212529; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + -webkit-box-flex: 1; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover { + z-index: 1; +} +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 1; +} + +.btn-toolbar { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.btn-toolbar .input-group { + width: auto; +} + +.btn-group > .btn:not(:first-child), +.btn-group > .btn-group:not(:first-child) { + margin-left: -1px; +} + +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.btn-group > .btn:not(:first-child), +.btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; +} +.dropdown-toggle-split::after, +.dropup .dropdown-toggle-split::after, +.dropright .dropdown-toggle-split::after { + margin-left: 0; +} +.dropleft .dropdown-toggle-split::before { + margin-right: 0; +} + +.btn-sm + .dropdown-toggle-split, +.btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; +} + +.btn-lg + .dropdown-toggle-split, +.btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; +} + +.btn-group-vertical { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group { + width: 100%; +} +.btn-group-vertical > .btn:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) { + margin-top: -1px; +} +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.btn-group-toggle > .btn, +.btn-group-toggle > .btn-group > .btn { + margin-bottom: 0; +} +.btn-group-toggle > .btn input[type="radio"], +.btn-group-toggle > .btn input[type="checkbox"], +.btn-group-toggle > .btn-group > .btn input[type="radio"], +.btn-group-toggle > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} + +.input-group { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: stretch; + -webkit-align-items: stretch; + -ms-flex-align: stretch; + align-items: stretch; + width: 100%; +} +.input-group > .form-control, +.input-group > .form-control-plaintext, +.input-group > .custom-select, +.input-group > .custom-file { + position: relative; + -webkit-box-flex: 1; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + width: 1%; + margin-bottom: 0; +} +.input-group > .form-control + .form-control, +.input-group > .form-control + .custom-select, +.input-group > .form-control + .custom-file, +.input-group > .form-control-plaintext + .form-control, +.input-group > .form-control-plaintext + .custom-select, +.input-group > .form-control-plaintext + .custom-file, +.input-group > .custom-select + .form-control, +.input-group > .custom-select + .custom-select, +.input-group > .custom-select + .custom-file, +.input-group > .custom-file + .form-control, +.input-group > .custom-file + .custom-select, +.input-group > .custom-file + .custom-file { + margin-left: -1px; +} +.input-group > .form-control:focus, +.input-group > .custom-select:focus, +.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label { + z-index: 3; +} +.input-group > .custom-file .custom-file-input:focus { + z-index: 4; +} +.input-group > .form-control:not(:last-child), +.input-group > .custom-select:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group > .form-control:not(:first-child), +.input-group > .custom-select:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group > .custom-file { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; +} +.input-group > .custom-file:not(:last-child) .custom-file-label, +.input-group > .custom-file:not(:last-child) .custom-file-label::after { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group > .custom-file:not(:first-child) .custom-file-label { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.input-group-prepend, +.input-group-append { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +.input-group-prepend .btn, +.input-group-append .btn { + position: relative; + z-index: 2; +} +.input-group-prepend .btn:focus, +.input-group-append .btn:focus { + z-index: 3; +} +.input-group-prepend .btn + .btn, +.input-group-prepend .btn + .input-group-text, +.input-group-prepend .input-group-text + .input-group-text, +.input-group-prepend .input-group-text + .btn, +.input-group-append .btn + .btn, +.input-group-append .btn + .input-group-text, +.input-group-append .input-group-text + .input-group-text, +.input-group-append .input-group-text + .btn { + margin-left: -1px; +} + +.input-group-prepend { + margin-right: -1px; +} + +.input-group-append { + margin-left: -1px; +} + +.input-group-text { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + padding: 0.375rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + text-align: center; + white-space: nowrap; + background-color: #e9ecef; + border: 1px solid #ced4da; + border-radius: 0; +} +.input-group-text input[type="radio"], +.input-group-text input[type="checkbox"] { + margin-top: 0; +} + +.input-group-lg > .form-control:not(textarea), +.input-group-lg > .custom-select { + height: calc(1.5em + 1rem + 2px); +} + +.input-group-lg > .form-control, +.input-group-lg > .custom-select, +.input-group-lg > .input-group-prepend > .input-group-text, +.input-group-lg > .input-group-append > .input-group-text, +.input-group-lg > .input-group-prepend > .btn, +.input-group-lg > .input-group-append > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; +} + +.input-group-sm > .form-control:not(textarea), +.input-group-sm > .custom-select { + height: calc(1.5em + 0.5rem + 2px); +} + +.input-group-sm > .form-control, +.input-group-sm > .custom-select, +.input-group-sm > .input-group-prepend > .input-group-text, +.input-group-sm > .input-group-append > .input-group-text, +.input-group-sm > .input-group-prepend > .btn, +.input-group-sm > .input-group-append > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; +} + +.input-group-lg > .custom-select, +.input-group-sm > .custom-select { + padding-right: 1.75rem; +} + +.input-group > .input-group-prepend > .btn, +.input-group > .input-group-prepend > .input-group-text, +.input-group > .input-group-append:not(:last-child) > .btn, +.input-group > .input-group-append:not(:last-child) > .input-group-text, +.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group > .input-group-append > .btn, +.input-group > .input-group-append > .input-group-text, +.input-group > .input-group-prepend:not(:first-child) > .btn, +.input-group > .input-group-prepend:not(:first-child) > .input-group-text, +.input-group > .input-group-prepend:first-child > .btn:not(:first-child), +.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-control { + position: relative; + display: block; + min-height: 1.5rem; + padding-left: 1.5rem; +} + +.custom-control-inline { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + margin-right: 1rem; +} + +.custom-control-input { + position: absolute; + z-index: -1; + opacity: 0; +} +.custom-control-input:checked ~ .custom-control-label::before { + color: #fff; + border-color: #3f84fc; + background-color: #3f84fc; +} +.custom-control-input:focus ~ .custom-control-label::before { + -webkit-box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.25); + box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.25); +} +.custom-control-input:focus:not(:checked) ~ .custom-control-label::before { + border-color: #bdd4fe; +} +.custom-control-input:not(:disabled):active ~ .custom-control-label::before { + color: #fff; + background-color: #eff5ff; + border-color: #eff5ff; +} +.custom-control-input:disabled ~ .custom-control-label { + color: #6c757d; +} +.custom-control-input:disabled ~ .custom-control-label::before { + background-color: #e9ecef; +} + +.custom-control-label { + position: relative; + margin-bottom: 0; + vertical-align: top; +} +.custom-control-label::before { + position: absolute; + top: 0.25rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + pointer-events: none; + content: ""; + background-color: #fff; + border: #adb5bd solid 1px; +} +.custom-control-label::after { + position: absolute; + top: 0.25rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + content: ""; + background: no-repeat 50% / 50% 50%; +} + +.custom-checkbox .custom-control-label::before { + border-radius: 0; +} + +.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"); +} + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { + border-color: #3f84fc; + background-color: #3f84fc; +} + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e"); +} + +.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(63, 132, 252, 0.5); +} + +.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { + background-color: rgba(63, 132, 252, 0.5); +} + +.custom-radio .custom-control-label::before { + border-radius: 50%; +} + +.custom-radio .custom-control-input:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); +} + +.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(63, 132, 252, 0.5); +} + +.custom-switch { + padding-left: 2.25rem; +} +.custom-switch .custom-control-label::before { + left: -2.25rem; + width: 1.75rem; + pointer-events: all; + border-radius: 0.5rem; +} +.custom-switch .custom-control-label::after { + top: calc(0.25rem + 2px); + left: calc(-2.25rem + 2px); + width: calc(1rem - 4px); + height: calc(1rem - 4px); + background-color: #adb5bd; + border-radius: 0.5rem; + -webkit-transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + -webkit-transform 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + -webkit-transform 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + -o-transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out, + -o-transform 0.15s ease-in-out; + transition: + transform 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; + transition: + transform 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out, + -webkit-transform 0.15s ease-in-out, + -o-transform 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .custom-switch .custom-control-label::after { + -webkit-transition: none; + -o-transition: none; + transition: none; + } +} +.custom-switch .custom-control-input:checked ~ .custom-control-label::after { + background-color: #fff; + -webkit-transform: translateX(0.75rem); + -o-transform: translateX(0.75rem); + transform: translateX(0.75rem); +} +.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(63, 132, 252, 0.5); +} + +.custom-select { + display: inline-block; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem 1.75rem 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + vertical-align: middle; + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") + no-repeat right 0.75rem center/8px 10px; + background-color: #fff; + border: 1px solid #ced4da; + border-radius: 0; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +.custom-select:focus { + border-color: #bdd4fe; + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.25); + box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.25); +} +.custom-select:focus::-ms-value { + color: #495057; + background-color: #fff; +} +.custom-select[multiple], +.custom-select[size]:not([size="1"]) { + height: auto; + padding-right: 0.75rem; + background-image: none; +} +.custom-select:disabled { + color: #6c757d; + background-color: #e9ecef; +} +.custom-select::-ms-expand { + display: none; +} + +.custom-select-sm { + height: calc(1.5em + 0.5rem + 2px); + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + font-size: 0.875rem; +} + +.custom-select-lg { + height: calc(1.5em + 1rem + 2px); + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 1rem; + font-size: 1.25rem; +} + +.custom-file { + position: relative; + display: inline-block; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + margin-bottom: 0; +} + +.custom-file-input { + position: relative; + z-index: 2; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + margin: 0; + opacity: 0; +} +.custom-file-input:focus ~ .custom-file-label { + border-color: #bdd4fe; + -webkit-box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.25); + box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.25); +} +.custom-file-input:disabled ~ .custom-file-label { + background-color: #e9ecef; +} +.custom-file-input:lang(en) ~ .custom-file-label::after { + content: "Browse"; +} +.custom-file-input ~ .custom-file-label[data-browse]::after { + content: attr(data-browse); +} + +.custom-file-label { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 1; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem 0.75rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + background-color: #fff; + border: 1px solid #ced4da; + border-radius: 0; +} +.custom-file-label::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + z-index: 3; + display: block; + height: calc(1.5em + 0.75rem); + padding: 0.375rem 0.75rem; + line-height: 1.5; + color: #495057; + content: "Browse"; + background-color: #e9ecef; + border-left: inherit; + border-radius: 0 0 0 0; +} + +.custom-range { + width: 100%; + height: calc(1rem + 0.4rem); + padding: 0; + background-color: transparent; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +.custom-range:focus { + outline: none; +} +.custom-range:focus::-webkit-slider-thumb { + -webkit-box-shadow: + 0 0 0 1px #fff, + 0 0 0 0.2rem rgba(63, 132, 252, 0.25); + box-shadow: + 0 0 0 1px #fff, + 0 0 0 0.2rem rgba(63, 132, 252, 0.25); +} +.custom-range:focus::-moz-range-thumb { + box-shadow: + 0 0 0 1px #fff, + 0 0 0 0.2rem rgba(63, 132, 252, 0.25); +} +.custom-range:focus::-ms-thumb { + box-shadow: + 0 0 0 1px #fff, + 0 0 0 0.2rem rgba(63, 132, 252, 0.25); +} +.custom-range::-moz-focus-outer { + border: 0; +} +.custom-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + background-color: #3f84fc; + border: 0; + border-radius: 1rem; + -webkit-transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + -o-transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; + transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; + transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + -webkit-appearance: none; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .custom-range::-webkit-slider-thumb { + -webkit-transition: none; + -o-transition: none; + transition: none; + } +} +.custom-range::-webkit-slider-thumb:active { + background-color: #eff5ff; +} +.custom-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; +} +.custom-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + background-color: #3f84fc; + border: 0; + border-radius: 1rem; + -webkit-transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + -o-transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; + transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; + transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + -moz-appearance: none; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .custom-range::-moz-range-thumb { + -webkit-transition: none; + -o-transition: none; + transition: none; + } +} +.custom-range::-moz-range-thumb:active { + background-color: #eff5ff; +} +.custom-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; +} +.custom-range::-ms-thumb { + width: 1rem; + height: 1rem; + margin-top: 0; + margin-right: 0.2rem; + margin-left: 0.2rem; + background-color: #3f84fc; + border: 0; + border-radius: 1rem; + -webkit-transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + -o-transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; + transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; + transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .custom-range::-ms-thumb { + -webkit-transition: none; + -o-transition: none; + transition: none; + } +} +.custom-range::-ms-thumb:active { + background-color: #eff5ff; +} +.custom-range::-ms-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: transparent; + border-color: transparent; + border-width: 0.5rem; +} +.custom-range::-ms-fill-lower { + background-color: #dee2e6; + border-radius: 1rem; +} +.custom-range::-ms-fill-upper { + margin-right: 15px; + background-color: #dee2e6; + border-radius: 1rem; +} +.custom-range:disabled::-webkit-slider-thumb { + background-color: #adb5bd; +} +.custom-range:disabled::-webkit-slider-runnable-track { + cursor: default; +} +.custom-range:disabled::-moz-range-thumb { + background-color: #adb5bd; +} +.custom-range:disabled::-moz-range-track { + cursor: default; +} +.custom-range:disabled::-ms-thumb { + background-color: #adb5bd; +} + +.custom-control-label::before, +.custom-file-label, +.custom-select { + -webkit-transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + -o-transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; + transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; + transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .custom-control-label::before, + .custom-file-label, + .custom-select { + -webkit-transition: none; + -o-transition: none; + transition: none; + } +} + +/* .nav { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; } */ + +.nav-link { + display: block; + padding: 0.5rem 1rem; +} +.nav-link:hover, +.nav-link:focus { + text-decoration: none; +} +.nav-link.disabled { + color: #6c757d; + pointer-events: none; + cursor: default; +} + +.nav-tabs { + border-bottom: 1px solid #dee2e6; +} +.nav-tabs .nav-item { + margin-bottom: -1px; + height: 50px; +} +.nav-tabs .nav-link { + border: 1px solid transparent; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.nav-tabs .nav-link:hover, +.nav-tabs .nav-link:focus { + border-color: #e9ecef #e9ecef #dee2e6; +} +.nav-tabs .nav-link.disabled { + color: #6c757d; + background-color: transparent; + border-color: transparent; +} +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: #495057; + background-color: #fff; + border-color: #dee2e6 #dee2e6 #fff; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav-pills .nav-link { + border-radius: 0; +} + +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: #fff; + background-color: #3f84fc; +} + +.nav-fill .nav-item { + -webkit-box-flex: 1; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + text-align: center; +} + +.nav-justified .nav-item { + -webkit-flex-basis: 0; + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + text-align: center; +} + +.tab-content > .tab-pane { + display: none; +} + +.tab-content > .active { + display: block; +} + +.navbar { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 0.5rem 1rem; +} +.navbar > .container, +.navbar > .container-fluid { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; +} + +.navbar-brand { + display: inline-block; + padding-top: 0.3125rem; + padding-bottom: 0.3125rem; + margin-right: 1rem; + font-size: 1.25rem; + line-height: inherit; + white-space: nowrap; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} + +.navbar-nav { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.navbar-nav .nav-link { + padding-right: 0; + padding-left: 0; +} +.navbar-nav .dropdown-menu { + position: static; + float: none; +} + +.navbar-text { + display: inline-block; + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} + +.navbar-collapse { + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; +} + +.navbar-toggler { + padding: 0.25rem 0.75rem; + font-size: 1.25rem; + line-height: 1; + background-color: transparent; + border: 1px solid transparent; + border-radius: 0; +} +.navbar-toggler:hover, +.navbar-toggler:focus { + text-decoration: none; +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + content: ""; + background: no-repeat center center; + -webkit-background-size: 100% 100%; + background-size: 100% 100%; +} + +@media (max-width: 575.98px) { + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 576px) { + .navbar-expand-sm { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row nowrap; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-sm .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid { + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-sm .navbar-collapse { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + -webkit-flex-basis: auto; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-sm .navbar-toggler { + display: none; + } +} + +@media (max-width: 767.98px) { + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 768px) { + .navbar-expand-md { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row nowrap; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-md .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid { + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-md .navbar-collapse { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + -webkit-flex-basis: auto; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-md .navbar-toggler { + display: none; + } +} + +@media (max-width: 991.98px) { + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 992px) { + .navbar-expand-lg { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row nowrap; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-lg .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid { + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-lg .navbar-collapse { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + -webkit-flex-basis: auto; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-lg .navbar-toggler { + display: none; + } +} + +@media (max-width: 1199.98px) { + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 1200px) { + .navbar-expand-xl { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row nowrap; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-xl .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid { + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-xl .navbar-collapse { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + -webkit-flex-basis: auto; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-xl .navbar-toggler { + display: none; + } +} + +.navbar-expand { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row nowrap; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.navbar-expand > .container, +.navbar-expand > .container-fluid { + padding-right: 0; + padding-left: 0; +} +.navbar-expand .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; +} +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute; +} +.navbar-expand .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; +} +.navbar-expand > .container, +.navbar-expand > .container-fluid { + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; +} +.navbar-expand .navbar-collapse { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + -webkit-flex-basis: auto; + -ms-flex-preferred-size: auto; + flex-basis: auto; +} +.navbar-expand .navbar-toggler { + display: none; +} + +.navbar-light .navbar-brand { + color: rgba(0, 0, 0, 0.9); +} +.navbar-light .navbar-brand:hover, +.navbar-light .navbar-brand:focus { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-nav .nav-link { + color: rgba(0, 0, 0, 0.5); +} +.navbar-light .navbar-nav .nav-link:hover, +.navbar-light .navbar-nav .nav-link:focus { + color: rgba(0, 0, 0, 0.7); +} +.navbar-light .navbar-nav .nav-link.disabled { + color: rgba(0, 0, 0, 0.3); +} + +.navbar-light .navbar-nav .show > .nav-link, +.navbar-light .navbar-nav .active > .nav-link, +.navbar-light .navbar-nav .nav-link.show, +.navbar-light .navbar-nav .nav-link.active { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-toggler { + color: rgba(0, 0, 0, 0.5); + border-color: rgba(0, 0, 0, 0.1); +} + +.navbar-light .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.navbar-light .navbar-text { + color: rgba(0, 0, 0, 0.5); +} +.navbar-light .navbar-text a { + color: rgba(0, 0, 0, 0.9); +} +.navbar-light .navbar-text a:hover, +.navbar-light .navbar-text a:focus { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-dark .navbar-brand { + color: #fff; +} +.navbar-dark .navbar-brand:hover, +.navbar-dark .navbar-brand:focus { + color: #fff; +} + +.navbar-dark .navbar-nav .nav-link { + color: rgba(255, 255, 255, 0.5); +} +.navbar-dark .navbar-nav .nav-link:hover, +.navbar-dark .navbar-nav .nav-link:focus { + color: rgba(255, 255, 255, 0.75); +} +.navbar-dark .navbar-nav .nav-link.disabled { + color: rgba(255, 255, 255, 0.25); +} + +.navbar-dark .navbar-nav .show > .nav-link, +.navbar-dark .navbar-nav .active > .nav-link, +.navbar-dark .navbar-nav .nav-link.show, +.navbar-dark .navbar-nav .nav-link.active { + color: #fff; +} + +.navbar-dark .navbar-toggler { + color: rgba(255, 255, 255, 0.5); + border-color: rgba(255, 255, 255, 0.1); +} + +.navbar-dark .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.navbar-dark .navbar-text { + color: rgba(255, 255, 255, 0.5); +} +.navbar-dark .navbar-text a { + color: #fff; +} +.navbar-dark .navbar-text a:hover, +.navbar-dark .navbar-text a:focus { + color: #fff; +} + +.card { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + min-width: 0; + word-wrap: break-word; + background-color: #fff; + background-clip: border-box; + border: 1px solid rgba(0, 0, 0, 0.125); + border-radius: 0; +} +.card > hr { + margin-right: 0; + margin-left: 0; +} +.card > .list-group:first-child .list-group-item:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.card > .list-group:last-child .list-group-item:last-child { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.card-body { + -webkit-box-flex: 1; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 1.25rem; +} + +.card-title { + margin-bottom: 0.75rem; +} + +.card-subtitle { + margin-top: -0.375rem; + margin-bottom: 0; +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link:hover { + text-decoration: none; +} + +.card-link + .card-link { + margin-left: 1.25rem; +} + +.card-header { + padding: 0.75rem 1.25rem; + margin-bottom: 0; + background-color: rgba(0, 0, 0, 0.03); + border-bottom: 1px solid rgba(0, 0, 0, 0.125); +} +.card-header:first-child { + border-radius: calc(0 - 1px) calc(0 - 1px) 0 0; +} +.card-header + .list-group .list-group-item:first-child { + border-top: 0; +} + +.card-footer { + padding: 0.75rem 1.25rem; + background-color: rgba(0, 0, 0, 0.03); + border-top: 1px solid rgba(0, 0, 0, 0.125); +} +.card-footer:last-child { + border-radius: 0 0 calc(0 - 1px) calc(0 - 1px); +} + +.card-header-tabs { + margin-right: -0.625rem; + margin-bottom: -0.75rem; + margin-left: -0.625rem; + border-bottom: 0; +} + +.card-header-pills { + margin-right: -0.625rem; + margin-left: -0.625rem; +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 1.25rem; +} + +.card-img { + width: 100%; + border-radius: calc(0 - 1px); +} + +.card-img-top { + width: 100%; + border-top-left-radius: calc(0 - 1px); + border-top-right-radius: calc(0 - 1px); +} + +.card-img-bottom { + width: 100%; + border-bottom-right-radius: calc(0 - 1px); + border-bottom-left-radius: calc(0 - 1px); +} + +.card-deck { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} +.card-deck .card { + margin-bottom: 15px; +} +@media (min-width: 576px) { + .card-deck { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + margin-right: -15px; + margin-left: -15px; + } + .card-deck .card { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -webkit-flex: 1 0 0%; + -ms-flex: 1 0 0%; + flex: 1 0 0%; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-right: 15px; + margin-bottom: 0; + margin-left: 15px; + } +} + +.card-group { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} +.card-group > .card { + margin-bottom: 15px; +} +@media (min-width: 576px) { + .card-group { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + } + .card-group > .card { + -webkit-box-flex: 1; + -webkit-flex: 1 0 0%; + -ms-flex: 1 0 0%; + flex: 1 0 0%; + margin-bottom: 0; + } + .card-group > .card + .card { + margin-left: 0; + border-left: 0; + } + .card-group > .card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-top, + .card-group > .card:not(:last-child) .card-header { + border-top-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-bottom, + .card-group > .card:not(:last-child) .card-footer { + border-bottom-right-radius: 0; + } + .card-group > .card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-top, + .card-group > .card:not(:first-child) .card-header { + border-top-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-bottom, + .card-group > .card:not(:first-child) .card-footer { + border-bottom-left-radius: 0; + } +} + +.card-columns .card { + margin-bottom: 0.75rem; +} + +@media (min-width: 576px) { + .card-columns { + -webkit-column-count: 3; + -moz-column-count: 3; + column-count: 3; + -webkit-column-gap: 1.25rem; + -moz-column-gap: 1.25rem; + column-gap: 1.25rem; + orphans: 1; + widows: 1; + } + .card-columns .card { + display: inline-block; + width: 100%; + } +} + +.accordion > .card { + overflow: hidden; +} +.accordion > .card:not(:first-of-type) .card-header:first-child { + border-radius: 0; +} +.accordion > .card:not(:first-of-type):not(:last-of-type) { + border-bottom: 0; + border-radius: 0; +} +.accordion > .card:first-of-type { + border-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.accordion > .card:last-of-type { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.accordion > .card .card-header { + margin-bottom: -1px; +} + +.breadcrumb { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding: 0.75rem 1rem; + margin-bottom: 1rem; + list-style: none; + background-color: #e9ecef; + border-radius: 0; +} + +.breadcrumb-item + .breadcrumb-item { + padding-left: 0.5rem; +} +.breadcrumb-item + .breadcrumb-item::before { + display: inline-block; + padding-right: 0.5rem; + color: #6c757d; + content: "/"; +} + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: underline; +} + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: none; +} + +.breadcrumb-item.active { + color: #6c757d; +} + +.pagination { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding-left: 0; + list-style: none; + border-radius: 0; +} + +.page-link { + position: relative; + display: block; + padding: 0.5rem 0.75rem; + margin-left: -1px; + line-height: 1.25; + color: #3f84fc; + background-color: #fff; + border: 1px solid #dee2e6; +} +.page-link:hover { + z-index: 2; + color: #0458eb; + text-decoration: none; + background-color: #e9ecef; + border-color: #dee2e6; +} +.page-link:focus { + z-index: 2; + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.25); + box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.25); +} + +.page-item:first-child .page-link { + margin-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.page-item:last-child .page-link { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.page-item.active .page-link { + z-index: 1; + color: #fff; + background-color: #3f84fc; + border-color: #3f84fc; +} + +.page-item.disabled .page-link { + color: #6c757d; + pointer-events: none; + cursor: auto; + background-color: #fff; + border-color: #dee2e6; +} + +.pagination-lg .page-link { + padding: 0.75rem 1.5rem; + font-size: 1.25rem; + line-height: 1.5; +} + +.pagination-lg .page-item:first-child .page-link { + border-top-left-radius: 0.3rem; + border-bottom-left-radius: 0.3rem; +} + +.pagination-lg .page-item:last-child .page-link { + border-top-right-radius: 0.3rem; + border-bottom-right-radius: 0.3rem; +} + +.pagination-sm .page-link { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; +} + +.pagination-sm .page-item:first-child .page-link { + border-top-left-radius: 0.2rem; + border-bottom-left-radius: 0.2rem; +} + +.pagination-sm .page-item:last-child .page-link { + border-top-right-radius: 0.2rem; + border-bottom-right-radius: 0.2rem; +} + +.badge { + display: inline-block; + padding: 0.25em 0.4em; + font-size: 75%; + font-weight: 700; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 0; + -webkit-transition: + color 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + transition: + color 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + -o-transition: + color 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; + transition: + color 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; + transition: + color 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .badge { + -webkit-transition: none; + -o-transition: none; + transition: none; + } +} +a.badge:hover, +a.badge:focus { + text-decoration: none; +} +.badge:empty { + display: none; +} + +.btn .badge { + position: relative; + top: -1px; +} + +.badge-pill { + padding-right: 0.6em; + padding-left: 0.6em; + border-radius: 10rem; +} + +.badge-primary { + color: #fff; + background-color: #3f84fc; +} +a.badge-primary:hover, +a.badge-primary:focus { + color: #fff; + background-color: #0d64fb; +} +a.badge-primary:focus, +a.badge-primary.focus { + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.5); + box-shadow: 0 0 0 0.2rem rgba(63, 132, 252, 0.5); +} + +.badge-secondary { + color: #fff; + background-color: #727f94; +} +a.badge-secondary:hover, +a.badge-secondary:focus { + color: #fff; + background-color: #5b6678; +} +a.badge-secondary:focus, +a.badge-secondary.focus { + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(114, 127, 148, 0.5); + box-shadow: 0 0 0 0.2rem rgba(114, 127, 148, 0.5); +} + +.badge-success { + color: #fff; + background-color: #1dab47; +} +a.badge-success:hover, +a.badge-success:focus { + color: #fff; + background-color: #167f35; +} +a.badge-success:focus, +a.badge-success.focus { + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.5); + box-shadow: 0 0 0 0.2rem rgba(29, 171, 71, 0.5); +} + +.badge-info { + color: #fff; + background-color: #8a3ffc; +} +a.badge-info:hover, +a.badge-info:focus { + color: #fff; + background-color: #6b0dfb; +} +a.badge-info:focus, +a.badge-info.focus { + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(138, 63, 252, 0.5); + box-shadow: 0 0 0 0.2rem rgba(138, 63, 252, 0.5); +} + +.badge-warning { + color: #212529; + background-color: #fcae3f; +} +a.badge-warning:hover, +a.badge-warning:focus { + color: #212529; + background-color: #fb990d; +} +a.badge-warning:focus, +a.badge-warning.focus { + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 174, 63, 0.5); + box-shadow: 0 0 0 0.2rem rgba(252, 174, 63, 0.5); +} + +.badge-danger { + color: #fff; + background-color: #fc413f; +} +a.badge-danger:hover, +a.badge-danger:focus { + color: #fff; + background-color: #fb0f0d; +} +a.badge-danger:focus, +a.badge-danger.focus { + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.5); + box-shadow: 0 0 0 0.2rem rgba(252, 65, 63, 0.5); +} + +.badge-light { + color: #212529; + background-color: #f8f9fa; +} +a.badge-light:hover, +a.badge-light:focus { + color: #212529; + background-color: #dae0e5; +} +a.badge-light:focus, +a.badge-light.focus { + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); +} + +.badge-dark { + color: #fff; + background-color: #1e232d; +} +a.badge-dark:hover, +a.badge-dark:focus { + color: #fff; + background-color: #0a0b0e; +} +a.badge-dark:focus, +a.badge-dark.focus { + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(30, 35, 45, 0.5); + box-shadow: 0 0 0 0.2rem rgba(30, 35, 45, 0.5); +} + +.jumbotron { + padding: 2rem 1rem; + margin-bottom: 2rem; + background-color: #e9ecef; + border-radius: 0.3rem; +} +@media (min-width: 576px) { + .jumbotron { + padding: 4rem 2rem; + } +} + +.jumbotron-fluid { + padding-right: 0; + padding-left: 0; + border-radius: 0; +} + +.alert { + position: relative; + padding: 0.3rem 0.5rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: 0; +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: 700; +} + +.alert-dismissible { + padding-right: 4rem; +} +.alert-dismissible .close { + position: absolute; + top: 0; + right: 0; + padding: 0.75rem 1.25rem; + color: inherit; +} + +.alert-primary { + color: #214583; + background-color: #d9e6fe; + border-color: #c9ddfe; +} +.alert-primary hr { + border-top-color: #b0cdfe; +} +.alert-primary .alert-link { + color: #17305a; +} + +.alert-secondary { + color: #3b424d; + background-color: #e3e5ea; + border-color: #d8dbe1; +} +.alert-secondary hr { + border-top-color: #caced6; +} +.alert-secondary .alert-link { + color: #252930; +} + +.alert-success { + color: #0f5925; + background-color: #d2eeda; + border-color: #c0e7cb; +} +.alert-success hr { + border-top-color: #aee0bc; +} +.alert-success .alert-link { + color: #082d13; +} + +.alert-info { + color: #482183; + background-color: #e8d9fe; + border-color: #dec9fe; +} +.alert-info hr { + border-top-color: #cfb0fe; +} +.alert-info .alert-link { + color: #32175a; +} + +.alert-warning { + color: #835a21; + background-color: #feefd9; + border-color: #fee8c9; +} +.alert-warning hr { + border-top-color: #feddb0; +} +.alert-warning .alert-link { + color: #5a3e17; +} + +.alert-danger { + color: #832221; + background-color: #fed9d9; + border-color: #fecac9; +} +.alert-danger hr { + border-top-color: #feb1b0; +} +.alert-danger .alert-link { + color: #5a1717; +} + +.alert-light { + color: #818182; + background-color: #fefefe; + border-color: #fdfdfe; +} +.alert-light hr { + border-top-color: #ececf6; +} +.alert-light .alert-link { + color: #686868; +} + +.alert-dark { + color: #101217; + background-color: #d2d3d5; + border-color: #c0c1c4; +} +.alert-dark hr { + border-top-color: #b3b4b8; +} +.alert-dark .alert-link { + color: black; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} + +.progress { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + height: 1rem; + overflow: hidden; + font-size: 0.75rem; + background-color: #e9ecef; + border-radius: 0; +} + +.progress-bar { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + color: #fff; + text-align: center; + white-space: nowrap; + background-color: #3f84fc; + -webkit-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +@media (prefers-reduced-motion: reduce) { + .progress-bar { + -webkit-transition: none; + -o-transition: none; + transition: none; + } +} + +.progress-bar-striped { + background-image: -webkit-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: -o-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + -webkit-background-size: 1rem 1rem; + background-size: 1rem 1rem; +} + +.progress-bar-animated { + -webkit-animation: progress-bar-stripes 1s linear infinite; + -o-animation: progress-bar-stripes 1s linear infinite; + animation: progress-bar-stripes 1s linear infinite; +} +@media (prefers-reduced-motion: reduce) { + .progress-bar-animated { + -webkit-animation: none; + -o-animation: none; + animation: none; + } +} + +.media { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; +} + +.media-body { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} + +.list-group { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; +} + +.list-group-item-action { + width: 100%; + color: #495057; + text-align: inherit; +} +.list-group-item-action:hover, +.list-group-item-action:focus { + z-index: 1; + color: #495057; + text-decoration: none; + background-color: #f8f9fa; +} +.list-group-item-action:active { + color: #515151; + background-color: #e9ecef; +} + +.list-group-item { + position: relative; + display: block; + padding: 0.75rem 1.25rem; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.125); +} +.list-group-item:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.list-group-item.disabled, +.list-group-item:disabled { + color: #6c757d; + pointer-events: none; + background-color: #fff; +} +.list-group-item.active { + z-index: 2; + color: #fff; + background-color: #3f84fc; + border-color: #3f84fc; +} + +.list-group-horizontal { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; +} +.list-group-horizontal .list-group-item { + margin-right: -1px; + margin-bottom: 0; +} +.list-group-horizontal .list-group-item:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + border-top-right-radius: 0; +} +.list-group-horizontal .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +@media (min-width: 576px) { + .list-group-horizontal-sm { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-sm .list-group-item { + margin-right: -1px; + margin-bottom: 0; + } + .list-group-horizontal-sm .list-group-item:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + border-top-right-radius: 0; + } + .list-group-horizontal-sm .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +} + +@media (min-width: 768px) { + .list-group-horizontal-md { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-md .list-group-item { + margin-right: -1px; + margin-bottom: 0; + } + .list-group-horizontal-md .list-group-item:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + border-top-right-radius: 0; + } + .list-group-horizontal-md .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +} + +@media (min-width: 992px) { + .list-group-horizontal-lg { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-lg .list-group-item { + margin-right: -1px; + margin-bottom: 0; + } + .list-group-horizontal-lg .list-group-item:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + border-top-right-radius: 0; + } + .list-group-horizontal-lg .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +} + +@media (min-width: 1200px) { + .list-group-horizontal-xl { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-xl .list-group-item { + margin-right: -1px; + margin-bottom: 0; + } + .list-group-horizontal-xl .list-group-item:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + border-top-right-radius: 0; + } + .list-group-horizontal-xl .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +} + +.list-group-flush .list-group-item { + border-right: 0; + border-left: 0; + border-radius: 0; +} +.list-group-flush .list-group-item:last-child { + margin-bottom: -1px; +} + +.list-group-flush:first-child .list-group-item:first-child { + border-top: 0; +} + +.list-group-flush:last-child .list-group-item:last-child { + margin-bottom: 0; + border-bottom: 0; +} + +.list-group-item-primary { + color: #214583; + background-color: #c9ddfe; +} +.list-group-item-primary.list-group-item-action:hover, +.list-group-item-primary.list-group-item-action:focus { + color: #214583; + background-color: #b0cdfe; +} +.list-group-item-primary.list-group-item-action.active { + color: #fff; + background-color: #214583; + border-color: #214583; +} + +.list-group-item-secondary { + color: #3b424d; + background-color: #d8dbe1; +} +.list-group-item-secondary.list-group-item-action:hover, +.list-group-item-secondary.list-group-item-action:focus { + color: #3b424d; + background-color: #caced6; +} +.list-group-item-secondary.list-group-item-action.active { + color: #fff; + background-color: #3b424d; + border-color: #3b424d; +} + +.list-group-item-success { + color: #0f5925; + background-color: #c0e7cb; +} +.list-group-item-success.list-group-item-action:hover, +.list-group-item-success.list-group-item-action:focus { + color: #0f5925; + background-color: #aee0bc; +} +.list-group-item-success.list-group-item-action.active { + color: #fff; + background-color: #0f5925; + border-color: #0f5925; +} + +.list-group-item-info { + color: #482183; + background-color: #dec9fe; +} +.list-group-item-info.list-group-item-action:hover, +.list-group-item-info.list-group-item-action:focus { + color: #482183; + background-color: #cfb0fe; +} +.list-group-item-info.list-group-item-action.active { + color: #fff; + background-color: #482183; + border-color: #482183; +} + +.list-group-item-warning { + color: #835a21; + background-color: #fee8c9; +} +.list-group-item-warning.list-group-item-action:hover, +.list-group-item-warning.list-group-item-action:focus { + color: #835a21; + background-color: #feddb0; +} +.list-group-item-warning.list-group-item-action.active { + color: #fff; + background-color: #835a21; + border-color: #835a21; +} + +.list-group-item-danger { + color: #832221; + background-color: #fecac9; +} +.list-group-item-danger.list-group-item-action:hover, +.list-group-item-danger.list-group-item-action:focus { + color: #832221; + background-color: #feb1b0; +} +.list-group-item-danger.list-group-item-action.active { + color: #fff; + background-color: #832221; + border-color: #832221; +} + +.list-group-item-light { + color: #818182; + background-color: #fdfdfe; +} +.list-group-item-light.list-group-item-action:hover, +.list-group-item-light.list-group-item-action:focus { + color: #818182; + background-color: #ececf6; +} +.list-group-item-light.list-group-item-action.active { + color: #fff; + background-color: #818182; + border-color: #818182; +} + +.list-group-item-dark { + color: #101217; + background-color: #c0c1c4; +} +.list-group-item-dark.list-group-item-action:hover, +.list-group-item-dark.list-group-item-action:focus { + color: #101217; + background-color: #b3b4b8; +} +.list-group-item-dark.list-group-item-action.active { + color: #fff; + background-color: #101217; + border-color: #101217; +} + +.close { + float: right; + font-size: 1.5rem; + font-weight: 700; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + opacity: 0.5; +} +.close:hover { + color: #000; + text-decoration: none; +} +.close:not(:disabled):not(.disabled):hover, +.close:not(:disabled):not(.disabled):focus { + opacity: 0.75; +} + +button.close { + padding: 0; + background-color: transparent; + border: 0; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +a.close.disabled { + pointer-events: none; +} + +.toast { + max-width: 350px; + overflow: hidden; + font-size: 0.875rem; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); + box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); + -webkit-backdrop-filter: blur(10px); + backdrop-filter: blur(10px); + opacity: 0; + border-radius: 0.25rem; +} +.toast:not(:last-child) { + margin-bottom: 0.75rem; +} +.toast.showing { + opacity: 1; +} +.toast.show { + display: block; + opacity: 1; +} +.toast.hide { + display: none; +} + +.toast-header { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + padding: 0.25rem 0.75rem; + color: #6c757d; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); +} + +.toast-body { + padding: 0.75rem; +} + +.modal-open { + overflow: hidden; +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} + +.modal { + position: fixed; + top: 0; + left: 0; + z-index: 1050; + display: none; + width: 100%; + height: 100%; + overflow: hidden; + outline: 0; +} + +.modal-dialog { + position: relative; + width: auto; + margin: 0.5rem; + pointer-events: none; +} +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform 0.3s ease-out; + transition: -webkit-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; + transition: + transform 0.3s ease-out, + -webkit-transform 0.3s ease-out, + -o-transform 0.3s ease-out; + -webkit-transform: translate(0, -50px); + -o-transform: translate(0, -50px); + transform: translate(0, -50px); +} +@media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + -webkit-transition: none; + -o-transition: none; + transition: none; + } +} +.modal.show .modal-dialog { + -webkit-transform: none; + -o-transform: none; + transform: none; +} + +.modal-dialog-scrollable { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + max-height: calc(100% - 1rem); +} +.modal-dialog-scrollable .modal-content { + max-height: calc(100vh - 1rem); + overflow: hidden; +} +.modal-dialog-scrollable .modal-header, +.modal-dialog-scrollable .modal-footer { + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; +} +.modal-dialog-scrollable .modal-body { + overflow-y: auto; +} + +.modal-dialog-centered { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + min-height: calc(100% - 1rem); +} +.modal-dialog-centered::before { + display: block; + height: calc(100vh - 1rem); + content: ""; +} +.modal-dialog-centered.modal-dialog-scrollable { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + height: 100%; +} +.modal-dialog-centered.modal-dialog-scrollable .modal-content { + max-height: none; +} +.modal-dialog-centered.modal-dialog-scrollable::before { + content: none; +} + +#banner-modal { + width: auto; +} + +.modal-content { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + width: 100%; + pointer-events: auto; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; + outline: 0; +} + +.modal-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000; +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop.show { + opacity: 0.5; +} + +.modal-header { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 1rem 1rem; + border-bottom: 1px solid #dee2e6; + border-top-left-radius: 0.3rem; + border-top-right-radius: 0.3rem; +} +.modal-header .close { + padding: 1rem 1rem; + margin: -1rem -1rem -1rem auto; +} + +.modal-title { + margin-bottom: 0; + line-height: 1.5; +} + +/* .modal-body { + position: relative; + -webkit-box-flex: 1; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 1rem; } */ + +.modal-footer { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: end; + -webkit-justify-content: flex-end; + -ms-flex-pack: end; + justify-content: flex-end; + padding: 1rem; + border-top: 1px solid #dee2e6; + border-bottom-right-radius: 0.3rem; + border-bottom-left-radius: 0.3rem; +} +.modal-footer > :not(:first-child) { + margin-left: 0.25rem; +} +.modal-footer > :not(:last-child) { + margin-right: 0.25rem; +} + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} + +@media (min-width: 576px) { + .modal-dialog { + max-width: 500px; + margin: 1.75rem auto; + } + .modal-dialog-scrollable { + max-height: calc(100% - 3.5rem); + } + .modal-dialog-scrollable .modal-content { + max-height: calc(100vh - 3.5rem); + } + .modal-dialog-centered { + min-height: calc(100% - 3.5rem); + } + .modal-dialog-centered::before { + height: calc(100vh - 3.5rem); + } + .modal-sm { + max-width: 300px; + } +} + +@media (min-width: 992px) { + .modal-lg, + .modal-xl { + max-width: 800px; + } +} + +@media (min-width: 1200px) { + .modal-xl { + max-width: 1140px; + } +} + +.tooltip { + position: absolute; + z-index: 1070; + display: block; + margin: 0; + font-family: + "Open Sans", + -apple-system, + BlinkMacSystemFont, + "Segoe UI", + Roboto, + "Helvetica Neue", + Arial, + sans-serif, + "Apple Color Emoji", + "Segoe UI Emoji", + "Segoe UI Symbol", + "Noto Color Emoji"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + opacity: 0; +} +.tooltip.show { + opacity: 0.9; +} +.tooltip .arrow { + position: absolute; + display: block; + width: 0.8rem; + height: 0.4rem; +} +.tooltip .arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-tooltip-top, +.bs-tooltip-auto[x-placement^="top"] { + padding: 0.4rem 0; +} +.bs-tooltip-top .arrow, +.bs-tooltip-auto[x-placement^="top"] .arrow { + bottom: 0; +} +.bs-tooltip-top .arrow::before, +.bs-tooltip-auto[x-placement^="top"] .arrow::before { + top: 0; + border-width: 0.4rem 0.4rem 0; + border-top-color: #000; +} + +.bs-tooltip-right, +.bs-tooltip-auto[x-placement^="right"] { + padding: 0 0.4rem; +} +.bs-tooltip-right .arrow, +.bs-tooltip-auto[x-placement^="right"] .arrow { + left: 0; + width: 0.4rem; + height: 0.8rem; +} +.bs-tooltip-right .arrow::before, +.bs-tooltip-auto[x-placement^="right"] .arrow::before { + right: 0; + border-width: 0.4rem 0.4rem 0.4rem 0; + border-right-color: #000; +} + +.bs-tooltip-bottom, +.bs-tooltip-auto[x-placement^="bottom"] { + padding: 0.4rem 0; +} +.bs-tooltip-bottom .arrow, +.bs-tooltip-auto[x-placement^="bottom"] .arrow { + top: 0; +} +.bs-tooltip-bottom .arrow::before, +.bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + bottom: 0; + border-width: 0 0.4rem 0.4rem; + border-bottom-color: #000; +} + +.bs-tooltip-left, +.bs-tooltip-auto[x-placement^="left"] { + padding: 0 0.4rem; +} +.bs-tooltip-left .arrow, +.bs-tooltip-auto[x-placement^="left"] .arrow { + right: 0; + width: 0.4rem; + height: 0.8rem; +} +.bs-tooltip-left .arrow::before, +.bs-tooltip-auto[x-placement^="left"] .arrow::before { + left: 0; + border-width: 0.4rem 0 0.4rem 0.4rem; + border-left-color: #000; +} + +.tooltip-inner { + max-width: 200px; + padding: 0.25rem 0.5rem; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 0; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: block; + max-width: 276px; + font-family: + "Open Sans", + -apple-system, + BlinkMacSystemFont, + "Segoe UI", + Roboto, + "Helvetica Neue", + Arial, + sans-serif, + "Apple Color Emoji", + "Segoe UI Emoji", + "Segoe UI Symbol", + "Noto Color Emoji"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; +} +.popover .arrow { + position: absolute; + display: block; + width: 1rem; + height: 0.5rem; + margin: 0 0.3rem; +} +.popover .arrow::before, +.popover .arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-popover-top, +.bs-popover-auto[x-placement^="top"] { + margin-bottom: 0.5rem; +} +.bs-popover-top > .arrow, +.bs-popover-auto[x-placement^="top"] > .arrow { + bottom: calc((0.5rem + 1px) * -1); +} +.bs-popover-top > .arrow::before, +.bs-popover-auto[x-placement^="top"] > .arrow::before { + bottom: 0; + border-width: 0.5rem 0.5rem 0; + border-top-color: rgba(0, 0, 0, 0.25); +} +.bs-popover-top > .arrow::after, +.bs-popover-auto[x-placement^="top"] > .arrow::after { + bottom: 1px; + border-width: 0.5rem 0.5rem 0; + border-top-color: #fff; +} + +.bs-popover-right, +.bs-popover-auto[x-placement^="right"] { + margin-left: 0.5rem; +} +.bs-popover-right > .arrow, +.bs-popover-auto[x-placement^="right"] > .arrow { + left: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 1rem; + margin: 0.3rem 0; +} +.bs-popover-right > .arrow::before, +.bs-popover-auto[x-placement^="right"] > .arrow::before { + left: 0; + border-width: 0.5rem 0.5rem 0.5rem 0; + border-right-color: rgba(0, 0, 0, 0.25); +} +.bs-popover-right > .arrow::after, +.bs-popover-auto[x-placement^="right"] > .arrow::after { + left: 1px; + border-width: 0.5rem 0.5rem 0.5rem 0; + border-right-color: #fff; +} + +.bs-popover-bottom, +.bs-popover-auto[x-placement^="bottom"] { + margin-top: 0.5rem; +} +.bs-popover-bottom > .arrow, +.bs-popover-auto[x-placement^="bottom"] > .arrow { + top: calc((0.5rem + 1px) * -1); +} +.bs-popover-bottom > .arrow::before, +.bs-popover-auto[x-placement^="bottom"] > .arrow::before { + top: 0; + border-width: 0 0.5rem 0.5rem 0.5rem; + border-bottom-color: rgba(0, 0, 0, 0.25); +} +.bs-popover-bottom > .arrow::after, +.bs-popover-auto[x-placement^="bottom"] > .arrow::after { + top: 1px; + border-width: 0 0.5rem 0.5rem 0.5rem; + border-bottom-color: #fff; +} +.bs-popover-bottom .popover-header::before, +.bs-popover-auto[x-placement^="bottom"] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 1rem; + margin-left: -0.5rem; + content: ""; + border-bottom: 1px solid #f7f7f7; +} + +.bs-popover-left, +.bs-popover-auto[x-placement^="left"] { + margin-right: 0.5rem; +} +.bs-popover-left > .arrow, +.bs-popover-auto[x-placement^="left"] > .arrow { + right: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 1rem; + margin: 0.3rem 0; +} +.bs-popover-left > .arrow::before, +.bs-popover-auto[x-placement^="left"] > .arrow::before { + right: 0; + border-width: 0.5rem 0 0.5rem 0.5rem; + border-left-color: rgba(0, 0, 0, 0.25); +} +.bs-popover-left > .arrow::after, +.bs-popover-auto[x-placement^="left"] > .arrow::after { + right: 1px; + border-width: 0.5rem 0 0.5rem 0.5rem; + border-left-color: #fff; +} + +.popover-header { + padding: 0.5rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-top-left-radius: calc(0.3rem - 1px); + border-top-right-radius: calc(0.3rem - 1px); +} +.popover-header:empty { + display: none; +} + +.popover-body { + padding: 0.5rem 0.75rem; + color: #515151; +} + +.carousel { + position: relative; +} + +.carousel.pointer-event { + -ms-touch-action: pan-y; + touch-action: pan-y; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner::after { + display: block; + clear: both; + content: ""; +} + +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transition: -webkit-transform 0.6s ease-in-out; + transition: -webkit-transform 0.6s ease-in-out; + -o-transition: -o-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out; + transition: + transform 0.6s ease-in-out, + -webkit-transform 0.6s ease-in-out, + -o-transform 0.6s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .carousel-item { + -webkit-transition: none; + -o-transition: none; + transition: none; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +.carousel-item-next:not(.carousel-item-left), +.active.carousel-item-right { + -webkit-transform: translateX(100%); + -o-transform: translateX(100%); + transform: translateX(100%); +} + +.carousel-item-prev:not(.carousel-item-right), +.active.carousel-item-left { + -webkit-transform: translateX(-100%); + -o-transform: translateX(-100%); + transform: translateX(-100%); +} + +.carousel-fade .carousel-item { + opacity: 0; + -webkit-transition-property: opacity; + -o-transition-property: opacity; + transition-property: opacity; + -webkit-transform: none; + -o-transform: none; + transform: none; +} + +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-left, +.carousel-fade .carousel-item-prev.carousel-item-right { + z-index: 1; + opacity: 1; +} + +.carousel-fade .active.carousel-item-left, +.carousel-fade .active.carousel-item-right { + z-index: 0; + opacity: 0; + -webkit-transition: 0s 0.6s opacity; + -o-transition: 0s 0.6s opacity; + transition: 0s 0.6s opacity; +} +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-left, + .carousel-fade .active.carousel-item-right { + -webkit-transition: none; + -o-transition: none; + transition: none; + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + width: 15%; + color: #fff; + text-align: center; + opacity: 0.5; + -webkit-transition: opacity 0.15s ease; + -o-transition: opacity 0.15s ease; + transition: opacity 0.15s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-control-prev, + .carousel-control-next { + -webkit-transition: none; + -o-transition: none; + transition: none; + } +} +.carousel-control-prev:hover, +.carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} + +.carousel-control-prev { + left: 0; +} + +.carousel-control-next { + right: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 20px; + height: 20px; + background: no-repeat 50% / 100% 100%; +} + +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e"); +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e"); +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 15; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + padding-left: 0; + margin-right: 15%; + margin-left: 15%; + list-style: none; +} +.carousel-indicators li { + -webkit-box-sizing: content-box; + box-sizing: content-box; + -webkit-box-flex: 0; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + width: 30px; + height: 3px; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #fff; + background-clip: padding-box; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: 0.5; + -webkit-transition: opacity 0.6s ease; + -o-transition: opacity 0.6s ease; + transition: opacity 0.6s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-indicators li { + -webkit-transition: none; + -o-transition: none; + transition: none; + } +} +.carousel-indicators .active { + opacity: 1; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; +} + +@-webkit-keyframes spinner-border { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@-o-keyframes spinner-border { + to { + -o-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes spinner-border { + to { + -webkit-transform: rotate(360deg); + -o-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +.spinner-border { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: text-bottom; + border: 0.25em solid currentColor; + border-right-color: transparent; + border-radius: 50%; + -webkit-animation: spinner-border 0.75s linear infinite; + -o-animation: spinner-border 0.75s linear infinite; + animation: spinner-border 0.75s linear infinite; +} + +.spinner-border-sm { + width: 1rem; + height: 1rem; + border-width: 0.2em; +} + +@-webkit-keyframes spinner-grow { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + } + 50% { + opacity: 1; + } +} + +@-o-keyframes spinner-grow { + 0% { + -o-transform: scale(0); + transform: scale(0); + } + 50% { + opacity: 1; + } +} + +@keyframes spinner-grow { + 0% { + -webkit-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); + } + 50% { + opacity: 1; + } +} + +.spinner-grow { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: text-bottom; + background-color: currentColor; + border-radius: 50%; + opacity: 0; + -webkit-animation: spinner-grow 0.75s linear infinite; + -o-animation: spinner-grow 0.75s linear infinite; + animation: spinner-grow 0.75s linear infinite; +} + +.spinner-grow-sm { + width: 1rem; + height: 1rem; +} + +.align-baseline { + vertical-align: baseline !important; +} + +.align-top { + vertical-align: top !important; +} + +.align-middle { + vertical-align: middle !important; +} + +.align-bottom { + vertical-align: bottom !important; +} + +.align-text-bottom { + vertical-align: text-bottom !important; +} + +.align-text-top { + vertical-align: text-top !important; +} + +.bg-primary { + background-color: #3f84fc !important; +} + +a.bg-primary:hover, +a.bg-primary:focus, +button.bg-primary:hover, +button.bg-primary:focus { + background-color: #0d64fb !important; +} + +.bg-secondary { + background-color: #727f94 !important; +} + +a.bg-secondary:hover, +a.bg-secondary:focus, +button.bg-secondary:hover, +button.bg-secondary:focus { + background-color: #5b6678 !important; +} + +.bg-success { + background-color: #1dab47 !important; +} + +a.bg-success:hover, +a.bg-success:focus, +button.bg-success:hover, +button.bg-success:focus { + background-color: #167f35 !important; +} + +.bg-info { + background-color: #8a3ffc !important; +} + +a.bg-info:hover, +a.bg-info:focus, +button.bg-info:hover, +button.bg-info:focus { + background-color: #6b0dfb !important; +} + +.bg-warning { + background-color: #fcae3f !important; +} + +a.bg-warning:hover, +a.bg-warning:focus, +button.bg-warning:hover, +button.bg-warning:focus { + background-color: #fb990d !important; +} + +.bg-danger { + background-color: #fc413f !important; +} + +a.bg-danger:hover, +a.bg-danger:focus, +button.bg-danger:hover, +button.bg-danger:focus { + background-color: #fb0f0d !important; +} + +.bg-light { + background-color: #f8f9fa !important; +} + +a.bg-light:hover, +a.bg-light:focus, +button.bg-light:hover, +button.bg-light:focus { + background-color: #dae0e5 !important; +} + +.bg-dark { + background-color: #1e232d !important; +} + +a.bg-dark:hover, +a.bg-dark:focus, +button.bg-dark:hover, +button.bg-dark:focus { + background-color: #0a0b0e !important; +} + +.bg-white { + background-color: #fff !important; +} + +.bg-transparent { + background-color: transparent !important; +} + +.border { + border: 1px solid #dee2e6 !important; +} + +.border-top { + border-top: 1px solid #dee2e6 !important; +} + +.border-right { + border-right: 1px solid #dee2e6 !important; +} + +.border-bottom { + border-bottom: 1px solid #dee2e6 !important; +} + +.border-left { + border-left: 1px solid #dee2e6 !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-right-0 { + border-right: 0 !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-left-0 { + border-left: 0 !important; +} + +.border-primary { + border-color: #3f84fc !important; +} + +.border-secondary { + border-color: #727f94 !important; +} + +.border-success { + border-color: #1dab47 !important; +} + +.border-info { + border-color: #8a3ffc !important; +} + +.border-warning { + border-color: #fcae3f !important; +} + +.border-danger { + border-color: #fc413f !important; +} + +.border-light { + border-color: #f8f9fa !important; +} + +.border-dark { + border-color: #1e232d !important; +} + +.border-white { + border-color: #fff !important; +} + +.rounded-sm { + border-radius: 0.2rem !important; +} + +.rounded { + border-radius: 0 !important; +} + +.rounded-top { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; +} + +.rounded-right { + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +.rounded-bottom { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} + +.rounded-left { + border-top-left-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} + +.rounded-lg { + border-radius: 0.3rem !important; +} + +.rounded-circle { + border-radius: 50% !important; +} + +.rounded-pill { + border-radius: 50rem !important; +} + +.rounded-0 { + border-radius: 0 !important; +} + +.clearfix::after { + display: block; + clear: both; + content: ""; +} + +.d-none { + display: none !important; +} + +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-table { + display: table !important; +} + +.d-table-row { + display: table-row !important; +} + +.d-table-cell { + display: table-cell !important; +} + +.d-flex { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; +} + +.d-inline-flex { + display: -webkit-inline-box !important; + display: -webkit-inline-flex !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; +} + +@media (min-width: 576px) { + .d-sm-none { + display: none !important; + } + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-row { + display: table-row !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-sm-inline-flex { + display: -webkit-inline-box !important; + display: -webkit-inline-flex !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media (min-width: 768px) { + .d-md-none { + display: none !important; + } + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-row { + display: table-row !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-md-inline-flex { + display: -webkit-inline-box !important; + display: -webkit-inline-flex !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media (min-width: 992px) { + .d-lg-none { + display: none !important; + } + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-row { + display: table-row !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-lg-inline-flex { + display: -webkit-inline-box !important; + display: -webkit-inline-flex !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media (min-width: 1200px) { + .d-xl-none { + display: none !important; + } + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-row { + display: table-row !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-xl-inline-flex { + display: -webkit-inline-box !important; + display: -webkit-inline-flex !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media print { + .d-print-none { + display: none !important; + } + .d-print-inline { + display: inline !important; + } + .d-print-inline-block { + display: inline-block !important; + } + .d-print-block { + display: block !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: -webkit-box !important; + display: -webkit-flex !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-print-inline-flex { + display: -webkit-inline-box !important; + display: -webkit-inline-flex !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +.embed-responsive { + position: relative; + display: block; + width: 100%; + padding: 0; + overflow: hidden; +} +.embed-responsive::before { + display: block; + content: ""; +} +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} + +.embed-responsive-21by9::before { + padding-top: 42.85714%; +} + +.embed-responsive-16by9::before { + padding-top: 56.25%; +} + +.embed-responsive-4by3::before { + padding-top: 75%; +} + +.embed-responsive-1by1::before { + padding-top: 100%; +} + +.flex-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: row !important; + -ms-flex-direction: row !important; + flex-direction: row !important; +} + +.flex-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: column !important; + -ms-flex-direction: column !important; + flex-direction: column !important; +} + +.flex-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: row-reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: column-reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; +} + +.flex-wrap { + -webkit-flex-wrap: wrap !important; + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; +} + +.flex-nowrap { + -webkit-flex-wrap: nowrap !important; + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; +} + +.flex-wrap-reverse { + -webkit-flex-wrap: wrap-reverse !important; + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; +} + +.flex-fill { + -webkit-box-flex: 1 !important; + -webkit-flex: 1 1 auto !important; + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; +} + +.flex-grow-0 { + -webkit-box-flex: 0 !important; + -webkit-flex-grow: 0 !important; + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; +} + +.flex-grow-1 { + -webkit-box-flex: 1 !important; + -webkit-flex-grow: 1 !important; + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; +} + +.flex-shrink-0 { + -webkit-flex-shrink: 0 !important; + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; +} + +.flex-shrink-1 { + -webkit-flex-shrink: 1 !important; + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; +} + +.justify-content-start { + -webkit-box-pack: start !important; + -webkit-justify-content: flex-start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; +} + +.justify-content-end { + -webkit-box-pack: end !important; + -webkit-justify-content: flex-end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; +} + +.justify-content-center { + -webkit-box-pack: center !important; + -webkit-justify-content: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; +} + +.justify-content-between { + -webkit-box-pack: justify !important; + -webkit-justify-content: space-between !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; +} + +.justify-content-around { + -webkit-justify-content: space-around !important; + -ms-flex-pack: distribute !important; + justify-content: space-around !important; +} + +.align-items-start { + -webkit-box-align: start !important; + -webkit-align-items: flex-start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; +} + +.align-items-end { + -webkit-box-align: end !important; + -webkit-align-items: flex-end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; +} + +.align-items-center { + -webkit-box-align: center !important; + -webkit-align-items: center !important; + -ms-flex-align: center !important; + align-items: center !important; +} + +.align-items-baseline { + -webkit-box-align: baseline !important; + -webkit-align-items: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; +} + +.align-items-stretch { + -webkit-box-align: stretch !important; + -webkit-align-items: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; +} + +.align-content-start { + -webkit-align-content: flex-start !important; + -ms-flex-line-pack: start !important; + align-content: flex-start !important; +} + +.align-content-end { + -webkit-align-content: flex-end !important; + -ms-flex-line-pack: end !important; + align-content: flex-end !important; +} + +.align-content-center { + -webkit-align-content: center !important; + -ms-flex-line-pack: center !important; + align-content: center !important; +} + +.align-content-between { + -webkit-align-content: space-between !important; + -ms-flex-line-pack: justify !important; + align-content: space-between !important; +} + +.align-content-around { + -webkit-align-content: space-around !important; + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; +} + +.align-content-stretch { + -webkit-align-content: stretch !important; + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; +} + +.align-self-auto { + -webkit-align-self: auto !important; + -ms-flex-item-align: auto !important; + align-self: auto !important; +} + +.align-self-start { + -webkit-align-self: flex-start !important; + -ms-flex-item-align: start !important; + align-self: flex-start !important; +} + +.align-self-end { + -webkit-align-self: flex-end !important; + -ms-flex-item-align: end !important; + align-self: flex-end !important; +} + +.align-self-center { + -webkit-align-self: center !important; + -ms-flex-item-align: center !important; + align-self: center !important; +} + +.align-self-baseline { + -webkit-align-self: baseline !important; + -ms-flex-item-align: baseline !important; + align-self: baseline !important; +} + +.align-self-stretch { + -webkit-align-self: stretch !important; + -ms-flex-item-align: stretch !important; + align-self: stretch !important; +} + +@media (min-width: 576px) { + .flex-sm-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: row !important; + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-sm-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: column !important; + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-sm-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: row-reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: column-reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-sm-wrap { + -webkit-flex-wrap: wrap !important; + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + -webkit-flex-wrap: nowrap !important; + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + -webkit-flex-wrap: wrap-reverse !important; + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .flex-sm-fill { + -webkit-box-flex: 1 !important; + -webkit-flex: 1 1 auto !important; + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-sm-grow-0 { + -webkit-box-flex: 0 !important; + -webkit-flex-grow: 0 !important; + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + -webkit-box-flex: 1 !important; + -webkit-flex-grow: 1 !important; + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-sm-shrink-0 { + -webkit-flex-shrink: 0 !important; + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-sm-shrink-1 { + -webkit-flex-shrink: 1 !important; + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .justify-content-sm-start { + -webkit-box-pack: start !important; + -webkit-justify-content: flex-start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-sm-end { + -webkit-box-pack: end !important; + -webkit-justify-content: flex-end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-sm-center { + -webkit-box-pack: center !important; + -webkit-justify-content: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-sm-between { + -webkit-box-pack: justify !important; + -webkit-justify-content: space-between !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-sm-around { + -webkit-justify-content: space-around !important; + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-sm-start { + -webkit-box-align: start !important; + -webkit-align-items: flex-start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-sm-end { + -webkit-box-align: end !important; + -webkit-align-items: flex-end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-sm-center { + -webkit-box-align: center !important; + -webkit-align-items: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-sm-baseline { + -webkit-box-align: baseline !important; + -webkit-align-items: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-sm-stretch { + -webkit-box-align: stretch !important; + -webkit-align-items: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-sm-start { + -webkit-align-content: flex-start !important; + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-sm-end { + -webkit-align-content: flex-end !important; + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-sm-center { + -webkit-align-content: center !important; + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-sm-between { + -webkit-align-content: space-between !important; + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-sm-around { + -webkit-align-content: space-around !important; + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-sm-stretch { + -webkit-align-content: stretch !important; + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-sm-auto { + -webkit-align-self: auto !important; + -ms-flex-item-align: auto !important; + align-self: auto !important; + } + .align-self-sm-start { + -webkit-align-self: flex-start !important; + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-sm-end { + -webkit-align-self: flex-end !important; + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-sm-center { + -webkit-align-self: center !important; + -ms-flex-item-align: center !important; + align-self: center !important; + } + .align-self-sm-baseline { + -webkit-align-self: baseline !important; + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-sm-stretch { + -webkit-align-self: stretch !important; + -ms-flex-item-align: stretch !important; + align-self: stretch !important; + } +} + +@media (min-width: 768px) { + .flex-md-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: row !important; + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-md-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: column !important; + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-md-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: row-reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: column-reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-md-wrap { + -webkit-flex-wrap: wrap !important; + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-md-nowrap { + -webkit-flex-wrap: nowrap !important; + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + -webkit-flex-wrap: wrap-reverse !important; + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .flex-md-fill { + -webkit-box-flex: 1 !important; + -webkit-flex: 1 1 auto !important; + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-md-grow-0 { + -webkit-box-flex: 0 !important; + -webkit-flex-grow: 0 !important; + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-md-grow-1 { + -webkit-box-flex: 1 !important; + -webkit-flex-grow: 1 !important; + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-md-shrink-0 { + -webkit-flex-shrink: 0 !important; + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-md-shrink-1 { + -webkit-flex-shrink: 1 !important; + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .justify-content-md-start { + -webkit-box-pack: start !important; + -webkit-justify-content: flex-start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-md-end { + -webkit-box-pack: end !important; + -webkit-justify-content: flex-end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-md-center { + -webkit-box-pack: center !important; + -webkit-justify-content: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-md-between { + -webkit-box-pack: justify !important; + -webkit-justify-content: space-between !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-md-around { + -webkit-justify-content: space-around !important; + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-md-start { + -webkit-box-align: start !important; + -webkit-align-items: flex-start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-md-end { + -webkit-box-align: end !important; + -webkit-align-items: flex-end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-md-center { + -webkit-box-align: center !important; + -webkit-align-items: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-md-baseline { + -webkit-box-align: baseline !important; + -webkit-align-items: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-md-stretch { + -webkit-box-align: stretch !important; + -webkit-align-items: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-md-start { + -webkit-align-content: flex-start !important; + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-md-end { + -webkit-align-content: flex-end !important; + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-md-center { + -webkit-align-content: center !important; + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-md-between { + -webkit-align-content: space-between !important; + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-md-around { + -webkit-align-content: space-around !important; + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-md-stretch { + -webkit-align-content: stretch !important; + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-md-auto { + -webkit-align-self: auto !important; + -ms-flex-item-align: auto !important; + align-self: auto !important; + } + .align-self-md-start { + -webkit-align-self: flex-start !important; + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-md-end { + -webkit-align-self: flex-end !important; + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-md-center { + -webkit-align-self: center !important; + -ms-flex-item-align: center !important; + align-self: center !important; + } + .align-self-md-baseline { + -webkit-align-self: baseline !important; + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-md-stretch { + -webkit-align-self: stretch !important; + -ms-flex-item-align: stretch !important; + align-self: stretch !important; + } +} + +@media (min-width: 992px) { + .flex-lg-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: row !important; + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-lg-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: column !important; + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-lg-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: row-reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: column-reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-lg-wrap { + -webkit-flex-wrap: wrap !important; + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + -webkit-flex-wrap: nowrap !important; + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + -webkit-flex-wrap: wrap-reverse !important; + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .flex-lg-fill { + -webkit-box-flex: 1 !important; + -webkit-flex: 1 1 auto !important; + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-lg-grow-0 { + -webkit-box-flex: 0 !important; + -webkit-flex-grow: 0 !important; + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + -webkit-box-flex: 1 !important; + -webkit-flex-grow: 1 !important; + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-lg-shrink-0 { + -webkit-flex-shrink: 0 !important; + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-lg-shrink-1 { + -webkit-flex-shrink: 1 !important; + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .justify-content-lg-start { + -webkit-box-pack: start !important; + -webkit-justify-content: flex-start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-lg-end { + -webkit-box-pack: end !important; + -webkit-justify-content: flex-end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-lg-center { + -webkit-box-pack: center !important; + -webkit-justify-content: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-lg-between { + -webkit-box-pack: justify !important; + -webkit-justify-content: space-between !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-lg-around { + -webkit-justify-content: space-around !important; + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-lg-start { + -webkit-box-align: start !important; + -webkit-align-items: flex-start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-lg-end { + -webkit-box-align: end !important; + -webkit-align-items: flex-end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-lg-center { + -webkit-box-align: center !important; + -webkit-align-items: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-lg-baseline { + -webkit-box-align: baseline !important; + -webkit-align-items: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-lg-stretch { + -webkit-box-align: stretch !important; + -webkit-align-items: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-lg-start { + -webkit-align-content: flex-start !important; + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-lg-end { + -webkit-align-content: flex-end !important; + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-lg-center { + -webkit-align-content: center !important; + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-lg-between { + -webkit-align-content: space-between !important; + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-lg-around { + -webkit-align-content: space-around !important; + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-lg-stretch { + -webkit-align-content: stretch !important; + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-lg-auto { + -webkit-align-self: auto !important; + -ms-flex-item-align: auto !important; + align-self: auto !important; + } + .align-self-lg-start { + -webkit-align-self: flex-start !important; + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-lg-end { + -webkit-align-self: flex-end !important; + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-lg-center { + -webkit-align-self: center !important; + -ms-flex-item-align: center !important; + align-self: center !important; + } + .align-self-lg-baseline { + -webkit-align-self: baseline !important; + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-lg-stretch { + -webkit-align-self: stretch !important; + -ms-flex-item-align: stretch !important; + align-self: stretch !important; + } +} + +@media (min-width: 1200px) { + .flex-xl-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: row !important; + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-xl-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: column !important; + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-xl-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: row-reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -webkit-flex-direction: column-reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-xl-wrap { + -webkit-flex-wrap: wrap !important; + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + -webkit-flex-wrap: nowrap !important; + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + -webkit-flex-wrap: wrap-reverse !important; + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .flex-xl-fill { + -webkit-box-flex: 1 !important; + -webkit-flex: 1 1 auto !important; + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-xl-grow-0 { + -webkit-box-flex: 0 !important; + -webkit-flex-grow: 0 !important; + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + -webkit-box-flex: 1 !important; + -webkit-flex-grow: 1 !important; + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-xl-shrink-0 { + -webkit-flex-shrink: 0 !important; + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-xl-shrink-1 { + -webkit-flex-shrink: 1 !important; + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .justify-content-xl-start { + -webkit-box-pack: start !important; + -webkit-justify-content: flex-start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-xl-end { + -webkit-box-pack: end !important; + -webkit-justify-content: flex-end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-xl-center { + -webkit-box-pack: center !important; + -webkit-justify-content: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-xl-between { + -webkit-box-pack: justify !important; + -webkit-justify-content: space-between !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-xl-around { + -webkit-justify-content: space-around !important; + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-xl-start { + -webkit-box-align: start !important; + -webkit-align-items: flex-start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-xl-end { + -webkit-box-align: end !important; + -webkit-align-items: flex-end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-xl-center { + -webkit-box-align: center !important; + -webkit-align-items: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-xl-baseline { + -webkit-box-align: baseline !important; + -webkit-align-items: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-xl-stretch { + -webkit-box-align: stretch !important; + -webkit-align-items: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-xl-start { + -webkit-align-content: flex-start !important; + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-xl-end { + -webkit-align-content: flex-end !important; + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-xl-center { + -webkit-align-content: center !important; + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-xl-between { + -webkit-align-content: space-between !important; + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-xl-around { + -webkit-align-content: space-around !important; + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-xl-stretch { + -webkit-align-content: stretch !important; + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-xl-auto { + -webkit-align-self: auto !important; + -ms-flex-item-align: auto !important; + align-self: auto !important; + } + .align-self-xl-start { + -webkit-align-self: flex-start !important; + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-xl-end { + -webkit-align-self: flex-end !important; + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-xl-center { + -webkit-align-self: center !important; + -ms-flex-item-align: center !important; + align-self: center !important; + } + .align-self-xl-baseline { + -webkit-align-self: baseline !important; + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-xl-stretch { + -webkit-align-self: stretch !important; + -ms-flex-item-align: stretch !important; + align-self: stretch !important; + } +} + +.float-left { + float: left !important; +} + +.float-right { + float: right !important; +} + +.float-none { + float: none !important; +} + +@media (min-width: 576px) { + .float-sm-left { + float: left !important; + } + .float-sm-right { + float: right !important; + } + .float-sm-none { + float: none !important; + } +} + +@media (min-width: 768px) { + .float-md-left { + float: left !important; + } + .float-md-right { + float: right !important; + } + .float-md-none { + float: none !important; + } +} + +@media (min-width: 992px) { + .float-lg-left { + float: left !important; + } + .float-lg-right { + float: right !important; + } + .float-lg-none { + float: none !important; + } +} + +@media (min-width: 1200px) { + .float-xl-left { + float: left !important; + } + .float-xl-right { + float: right !important; + } + .float-xl-none { + float: none !important; + } +} + +.overflow-auto { + overflow: auto !important; +} + +.overflow-hidden { + overflow: hidden !important; +} + +.position-static { + position: static !important; +} + +.position-relative { + position: relative !important; +} + +.position-absolute { + position: absolute !important; +} + +.position-fixed { + position: fixed !important; +} + +.position-sticky { + position: -webkit-sticky !important; + position: sticky !important; +} + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} + +@supports ((position: -webkit-sticky) or (position: sticky)) { + .sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + overflow: visible; + clip: auto; + white-space: normal; +} + +.shadow-sm { + -webkit-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; +} + +.shadow { + -webkit-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; +} + +.shadow-lg { + -webkit-box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.shadow-none { + -webkit-box-shadow: none !important; + box-shadow: none !important; +} + +.w-25 { + width: 25% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-75 { + width: 75% !important; +} + +.w-100 { + width: 100% !important; +} + +.w-auto { + width: auto !important; +} + +.h-25 { + height: 25% !important; +} + +.h-50 { + height: 50% !important; +} + +.h-75 { + height: 75% !important; +} + +.h-100 { + height: 100% !important; +} + +.h-auto { + height: auto !important; +} + +.mw-100 { + max-width: 100% !important; +} + +.mh-100 { + max-height: 100% !important; +} + +.min-vw-100 { + min-width: 100vw !important; +} + +.min-vh-100 { + min-height: 100vh !important; +} + +.vw-100 { + width: 100vw !important; +} + +.vh-100 { + height: 100vh !important; +} + +.stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + pointer-events: auto; + content: ""; + background-color: rgba(0, 0, 0, 0); +} + +.m-0 { + margin: 0 !important; +} + +.mt-0, +.my-0 { + margin-top: 0 !important; +} + +.mr-0, +.mx-0 { + margin-right: 0 !important; +} + +.mb-0, +.my-0 { + margin-bottom: 0 !important; +} + +.ml-0, +.mx-0 { + margin-left: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.mt-1, +.my-1 { + margin-top: 0.25rem !important; +} + +.mr-1, +.mx-1 { + margin-right: 0.25rem !important; +} + +.mb-1, +.my-1 { + margin-bottom: 0.25rem !important; +} + +.ml-1, +.mx-1 { + margin-left: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.mt-2, +.my-2 { + margin-top: 0.5rem !important; +} + +.mr-2, +.mx-2 { + margin-right: 0.5rem !important; +} + +.mb-2, +.my-2 { + margin-bottom: 0.5rem !important; +} + +.ml-2, +.mx-2 { + margin-left: 0.5rem !important; +} + +.m-3 { + margin: 1rem !important; +} + +.mt-3, +.my-3 { + margin-top: 1rem !important; +} + +.mr-3, +.mx-3 { + margin-right: 1rem !important; +} + +.mb-3, +.my-3 { + margin-bottom: 1rem !important; +} + +.ml-3, +.mx-3 { + margin-left: 1rem !important; +} + +.m-4 { + margin: 1.5rem !important; +} + +.mt-4, +.my-4 { + margin-top: 1.5rem !important; +} + +.mr-4, +.mx-4 { + margin-right: 1.5rem !important; +} + +.mb-4, +.my-4 { + margin-bottom: 1.5rem !important; +} + +.ml-4, +.mx-4 { + margin-left: 1.5rem !important; +} + +.m-5 { + margin: 3rem !important; +} + +.mt-5, +.my-5 { + margin-top: 3rem !important; +} + +.mr-5, +.mx-5 { + margin-right: 3rem !important; +} + +.mb-5, +.my-5 { + margin-bottom: 3rem !important; +} + +.ml-5, +.mx-5 { + margin-left: 3rem !important; +} + +.p-0 { + padding: 0 !important; +} + +.pt-0, +.py-0 { + padding-top: 0 !important; +} + +.pr-0, +.px-0 { + padding-right: 0 !important; +} + +.pb-0, +.py-0 { + padding-bottom: 0 !important; +} + +.pl-0, +.px-0 { + padding-left: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.pt-1, +.py-1 { + padding-top: 0.25rem !important; +} + +.pr-1, +.px-1 { + padding-right: 0.25rem !important; +} + +.pb-1, +.py-1 { + padding-bottom: 0.25rem !important; +} + +.pl-1, +.px-1 { + padding-left: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.pt-2, +.py-2 { + padding-top: 0.5rem !important; +} + +.pr-2, +.px-2 { + padding-right: 0.5rem !important; +} + +.pb-2, +.py-2 { + padding-bottom: 0.5rem !important; +} + +.pl-2, +.px-2 { + padding-left: 0.5rem !important; +} + +.p-3 { + padding: 1rem !important; +} + +.pt-3, +.py-3 { + padding-top: 1rem !important; +} + +.pr-3, +.px-3 { + padding-right: 1rem !important; +} + +.pb-3, +.py-3 { + padding-bottom: 1rem !important; +} + +.pl-3, +.px-3 { + padding-left: 1rem !important; +} + +.p-4 { + padding: 1.5rem !important; +} + +.pt-4, +.py-4 { + padding-top: 1.5rem !important; +} + +.pr-4, +.px-4 { + padding-right: 1.5rem !important; +} + +.pb-4, +.py-4 { + padding-bottom: 1.5rem !important; +} + +.pl-4, +.px-4 { + padding-left: 1.5rem !important; +} + +.p-5 { + padding: 3rem !important; +} + +.pt-5, +.py-5 { + padding-top: 3rem !important; +} + +.pr-5, +.px-5 { + padding-right: 3rem !important; +} + +.pb-5, +.py-5 { + padding-bottom: 3rem !important; +} + +.pl-5, +.px-5 { + padding-left: 3rem !important; +} + +.m-n1 { + margin: -0.25rem !important; +} + +.mt-n1, +.my-n1 { + margin-top: -0.25rem !important; +} + +.mr-n1, +.mx-n1 { + margin-right: -0.25rem !important; +} + +.mb-n1, +.my-n1 { + margin-bottom: -0.25rem !important; +} + +.ml-n1, +.mx-n1 { + margin-left: -0.25rem !important; +} + +.m-n2 { + margin: -0.5rem !important; +} + +.mt-n2, +.my-n2 { + margin-top: -0.5rem !important; +} + +.mr-n2, +.mx-n2 { + margin-right: -0.5rem !important; +} + +.mb-n2, +.my-n2 { + margin-bottom: -0.5rem !important; +} + +.ml-n2, +.mx-n2 { + margin-left: -0.5rem !important; +} + +.m-n3 { + margin: -1rem !important; +} + +.mt-n3, +.my-n3 { + margin-top: -1rem !important; +} + +.mr-n3, +.mx-n3 { + margin-right: -1rem !important; +} + +.mb-n3, +.my-n3 { + margin-bottom: -1rem !important; +} + +.ml-n3, +.mx-n3 { + margin-left: -1rem !important; +} + +.m-n4 { + margin: -1.5rem !important; +} + +.mt-n4, +.my-n4 { + margin-top: -1.5rem !important; +} + +.mr-n4, +.mx-n4 { + margin-right: -1.5rem !important; +} + +.mb-n4, +.my-n4 { + margin-bottom: -1.5rem !important; +} + +.ml-n4, +.mx-n4 { + margin-left: -1.5rem !important; +} + +.m-n5 { + margin: -3rem !important; +} + +.mt-n5, +.my-n5 { + margin-top: -3rem !important; +} + +.mr-n5, +.mx-n5 { + margin-right: -3rem !important; +} + +.mb-n5, +.my-n5 { + margin-bottom: -3rem !important; +} + +.ml-n5, +.mx-n5 { + margin-left: -3rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mt-auto, +.my-auto { + margin-top: auto !important; +} + +.mr-auto, +.mx-auto { + margin-right: auto !important; +} + +.mb-auto, +.my-auto { + margin-bottom: auto !important; +} + +.ml-auto, +.mx-auto { + margin-left: auto !important; +} + +@media (min-width: 576px) { + .m-sm-0 { + margin: 0 !important; + } + .mt-sm-0, + .my-sm-0 { + margin-top: 0 !important; + } + .mr-sm-0, + .mx-sm-0 { + margin-right: 0 !important; + } + .mb-sm-0, + .my-sm-0 { + margin-bottom: 0 !important; + } + .ml-sm-0, + .mx-sm-0 { + margin-left: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .mt-sm-1, + .my-sm-1 { + margin-top: 0.25rem !important; + } + .mr-sm-1, + .mx-sm-1 { + margin-right: 0.25rem !important; + } + .mb-sm-1, + .my-sm-1 { + margin-bottom: 0.25rem !important; + } + .ml-sm-1, + .mx-sm-1 { + margin-left: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .mt-sm-2, + .my-sm-2 { + margin-top: 0.5rem !important; + } + .mr-sm-2, + .mx-sm-2 { + margin-right: 0.5rem !important; + } + .mb-sm-2, + .my-sm-2 { + margin-bottom: 0.5rem !important; + } + .ml-sm-2, + .mx-sm-2 { + margin-left: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem !important; + } + .mt-sm-3, + .my-sm-3 { + margin-top: 1rem !important; + } + .mr-sm-3, + .mx-sm-3 { + margin-right: 1rem !important; + } + .mb-sm-3, + .my-sm-3 { + margin-bottom: 1rem !important; + } + .ml-sm-3, + .mx-sm-3 { + margin-left: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem !important; + } + .mt-sm-4, + .my-sm-4 { + margin-top: 1.5rem !important; + } + .mr-sm-4, + .mx-sm-4 { + margin-right: 1.5rem !important; + } + .mb-sm-4, + .my-sm-4 { + margin-bottom: 1.5rem !important; + } + .ml-sm-4, + .mx-sm-4 { + margin-left: 1.5rem !important; + } + .m-sm-5 { + margin: 3rem !important; + } + .mt-sm-5, + .my-sm-5 { + margin-top: 3rem !important; + } + .mr-sm-5, + .mx-sm-5 { + margin-right: 3rem !important; + } + .mb-sm-5, + .my-sm-5 { + margin-bottom: 3rem !important; + } + .ml-sm-5, + .mx-sm-5 { + margin-left: 3rem !important; + } + .p-sm-0 { + padding: 0 !important; + } + .pt-sm-0, + .py-sm-0 { + padding-top: 0 !important; + } + .pr-sm-0, + .px-sm-0 { + padding-right: 0 !important; + } + .pb-sm-0, + .py-sm-0 { + padding-bottom: 0 !important; + } + .pl-sm-0, + .px-sm-0 { + padding-left: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .pt-sm-1, + .py-sm-1 { + padding-top: 0.25rem !important; + } + .pr-sm-1, + .px-sm-1 { + padding-right: 0.25rem !important; + } + .pb-sm-1, + .py-sm-1 { + padding-bottom: 0.25rem !important; + } + .pl-sm-1, + .px-sm-1 { + padding-left: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .pt-sm-2, + .py-sm-2 { + padding-top: 0.5rem !important; + } + .pr-sm-2, + .px-sm-2 { + padding-right: 0.5rem !important; + } + .pb-sm-2, + .py-sm-2 { + padding-bottom: 0.5rem !important; + } + .pl-sm-2, + .px-sm-2 { + padding-left: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem !important; + } + .pt-sm-3, + .py-sm-3 { + padding-top: 1rem !important; + } + .pr-sm-3, + .px-sm-3 { + padding-right: 1rem !important; + } + .pb-sm-3, + .py-sm-3 { + padding-bottom: 1rem !important; + } + .pl-sm-3, + .px-sm-3 { + padding-left: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem !important; + } + .pt-sm-4, + .py-sm-4 { + padding-top: 1.5rem !important; + } + .pr-sm-4, + .px-sm-4 { + padding-right: 1.5rem !important; + } + .pb-sm-4, + .py-sm-4 { + padding-bottom: 1.5rem !important; + } + .pl-sm-4, + .px-sm-4 { + padding-left: 1.5rem !important; + } + .p-sm-5 { + padding: 3rem !important; + } + .pt-sm-5, + .py-sm-5 { + padding-top: 3rem !important; + } + .pr-sm-5, + .px-sm-5 { + padding-right: 3rem !important; + } + .pb-sm-5, + .py-sm-5 { + padding-bottom: 3rem !important; + } + .pl-sm-5, + .px-sm-5 { + padding-left: 3rem !important; + } + .m-sm-n1 { + margin: -0.25rem !important; + } + .mt-sm-n1, + .my-sm-n1 { + margin-top: -0.25rem !important; + } + .mr-sm-n1, + .mx-sm-n1 { + margin-right: -0.25rem !important; + } + .mb-sm-n1, + .my-sm-n1 { + margin-bottom: -0.25rem !important; + } + .ml-sm-n1, + .mx-sm-n1 { + margin-left: -0.25rem !important; + } + .m-sm-n2 { + margin: -0.5rem !important; + } + .mt-sm-n2, + .my-sm-n2 { + margin-top: -0.5rem !important; + } + .mr-sm-n2, + .mx-sm-n2 { + margin-right: -0.5rem !important; + } + .mb-sm-n2, + .my-sm-n2 { + margin-bottom: -0.5rem !important; + } + .ml-sm-n2, + .mx-sm-n2 { + margin-left: -0.5rem !important; + } + .m-sm-n3 { + margin: -1rem !important; + } + .mt-sm-n3, + .my-sm-n3 { + margin-top: -1rem !important; + } + .mr-sm-n3, + .mx-sm-n3 { + margin-right: -1rem !important; + } + .mb-sm-n3, + .my-sm-n3 { + margin-bottom: -1rem !important; + } + .ml-sm-n3, + .mx-sm-n3 { + margin-left: -1rem !important; + } + .m-sm-n4 { + margin: -1.5rem !important; + } + .mt-sm-n4, + .my-sm-n4 { + margin-top: -1.5rem !important; + } + .mr-sm-n4, + .mx-sm-n4 { + margin-right: -1.5rem !important; + } + .mb-sm-n4, + .my-sm-n4 { + margin-bottom: -1.5rem !important; + } + .ml-sm-n4, + .mx-sm-n4 { + margin-left: -1.5rem !important; + } + .m-sm-n5 { + margin: -3rem !important; + } + .mt-sm-n5, + .my-sm-n5 { + margin-top: -3rem !important; + } + .mr-sm-n5, + .mx-sm-n5 { + margin-right: -3rem !important; + } + .mb-sm-n5, + .my-sm-n5 { + margin-bottom: -3rem !important; + } + .ml-sm-n5, + .mx-sm-n5 { + margin-left: -3rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mt-sm-auto, + .my-sm-auto { + margin-top: auto !important; + } + .mr-sm-auto, + .mx-sm-auto { + margin-right: auto !important; + } + .mb-sm-auto, + .my-sm-auto { + margin-bottom: auto !important; + } + .ml-sm-auto, + .mx-sm-auto { + margin-left: auto !important; + } +} + +@media (min-width: 768px) { + .m-md-0 { + margin: 0 !important; + } + .mt-md-0, + .my-md-0 { + margin-top: 0 !important; + } + .mr-md-0, + .mx-md-0 { + margin-right: 0 !important; + } + .mb-md-0, + .my-md-0 { + margin-bottom: 0 !important; + } + .ml-md-0, + .mx-md-0 { + margin-left: 0 !important; + } + .m-md-1 { + margin: 0.25rem !important; + } + .mt-md-1, + .my-md-1 { + margin-top: 0.25rem !important; + } + .mr-md-1, + .mx-md-1 { + margin-right: 0.25rem !important; + } + .mb-md-1, + .my-md-1 { + margin-bottom: 0.25rem !important; + } + .ml-md-1, + .mx-md-1 { + margin-left: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .mt-md-2, + .my-md-2 { + margin-top: 0.5rem !important; + } + .mr-md-2, + .mx-md-2 { + margin-right: 0.5rem !important; + } + .mb-md-2, + .my-md-2 { + margin-bottom: 0.5rem !important; + } + .ml-md-2, + .mx-md-2 { + margin-left: 0.5rem !important; + } + .m-md-3 { + margin: 1rem !important; + } + .mt-md-3, + .my-md-3 { + margin-top: 1rem !important; + } + .mr-md-3, + .mx-md-3 { + margin-right: 1rem !important; + } + .mb-md-3, + .my-md-3 { + margin-bottom: 1rem !important; + } + .ml-md-3, + .mx-md-3 { + margin-left: 1rem !important; + } + .m-md-4 { + margin: 1.5rem !important; + } + .mt-md-4, + .my-md-4 { + margin-top: 1.5rem !important; + } + .mr-md-4, + .mx-md-4 { + margin-right: 1.5rem !important; + } + .mb-md-4, + .my-md-4 { + margin-bottom: 1.5rem !important; + } + .ml-md-4, + .mx-md-4 { + margin-left: 1.5rem !important; + } + .m-md-5 { + margin: 3rem !important; + } + .mt-md-5, + .my-md-5 { + margin-top: 3rem !important; + } + .mr-md-5, + .mx-md-5 { + margin-right: 3rem !important; + } + .mb-md-5, + .my-md-5 { + margin-bottom: 3rem !important; + } + .ml-md-5, + .mx-md-5 { + margin-left: 3rem !important; + } + .p-md-0 { + padding: 0 !important; + } + .pt-md-0, + .py-md-0 { + padding-top: 0 !important; + } + .pr-md-0, + .px-md-0 { + padding-right: 0 !important; + } + .pb-md-0, + .py-md-0 { + padding-bottom: 0 !important; + } + .pl-md-0, + .px-md-0 { + padding-left: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .pt-md-1, + .py-md-1 { + padding-top: 0.25rem !important; + } + .pr-md-1, + .px-md-1 { + padding-right: 0.25rem !important; + } + .pb-md-1, + .py-md-1 { + padding-bottom: 0.25rem !important; + } + .pl-md-1, + .px-md-1 { + padding-left: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .pt-md-2, + .py-md-2 { + padding-top: 0.5rem !important; + } + .pr-md-2, + .px-md-2 { + padding-right: 0.5rem !important; + } + .pb-md-2, + .py-md-2 { + padding-bottom: 0.5rem !important; + } + .pl-md-2, + .px-md-2 { + padding-left: 0.5rem !important; + } + .p-md-3 { + padding: 1rem !important; + } + .pt-md-3, + .py-md-3 { + padding-top: 1rem !important; + } + .pr-md-3, + .px-md-3 { + padding-right: 1rem !important; + } + .pb-md-3, + .py-md-3 { + padding-bottom: 1rem !important; + } + .pl-md-3, + .px-md-3 { + padding-left: 1rem !important; + } + .p-md-4 { + padding: 1.5rem !important; + } + .pt-md-4, + .py-md-4 { + padding-top: 1.5rem !important; + } + .pr-md-4, + .px-md-4 { + padding-right: 1.5rem !important; + } + .pb-md-4, + .py-md-4 { + padding-bottom: 1.5rem !important; + } + .pl-md-4, + .px-md-4 { + padding-left: 1.5rem !important; + } + .p-md-5 { + padding: 3rem !important; + } + .pt-md-5, + .py-md-5 { + padding-top: 3rem !important; + } + .pr-md-5, + .px-md-5 { + padding-right: 3rem !important; + } + .pb-md-5, + .py-md-5 { + padding-bottom: 3rem !important; + } + .pl-md-5, + .px-md-5 { + padding-left: 3rem !important; + } + .m-md-n1 { + margin: -0.25rem !important; + } + .mt-md-n1, + .my-md-n1 { + margin-top: -0.25rem !important; + } + .mr-md-n1, + .mx-md-n1 { + margin-right: -0.25rem !important; + } + .mb-md-n1, + .my-md-n1 { + margin-bottom: -0.25rem !important; + } + .ml-md-n1, + .mx-md-n1 { + margin-left: -0.25rem !important; + } + .m-md-n2 { + margin: -0.5rem !important; + } + .mt-md-n2, + .my-md-n2 { + margin-top: -0.5rem !important; + } + .mr-md-n2, + .mx-md-n2 { + margin-right: -0.5rem !important; + } + .mb-md-n2, + .my-md-n2 { + margin-bottom: -0.5rem !important; + } + .ml-md-n2, + .mx-md-n2 { + margin-left: -0.5rem !important; + } + .m-md-n3 { + margin: -1rem !important; + } + .mt-md-n3, + .my-md-n3 { + margin-top: -1rem !important; + } + .mr-md-n3, + .mx-md-n3 { + margin-right: -1rem !important; + } + .mb-md-n3, + .my-md-n3 { + margin-bottom: -1rem !important; + } + .ml-md-n3, + .mx-md-n3 { + margin-left: -1rem !important; + } + .m-md-n4 { + margin: -1.5rem !important; + } + .mt-md-n4, + .my-md-n4 { + margin-top: -1.5rem !important; + } + .mr-md-n4, + .mx-md-n4 { + margin-right: -1.5rem !important; + } + .mb-md-n4, + .my-md-n4 { + margin-bottom: -1.5rem !important; + } + .ml-md-n4, + .mx-md-n4 { + margin-left: -1.5rem !important; + } + .m-md-n5 { + margin: -3rem !important; + } + .mt-md-n5, + .my-md-n5 { + margin-top: -3rem !important; + } + .mr-md-n5, + .mx-md-n5 { + margin-right: -3rem !important; + } + .mb-md-n5, + .my-md-n5 { + margin-bottom: -3rem !important; + } + .ml-md-n5, + .mx-md-n5 { + margin-left: -3rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mt-md-auto, + .my-md-auto { + margin-top: auto !important; + } + .mr-md-auto, + .mx-md-auto { + margin-right: auto !important; + } + .mb-md-auto, + .my-md-auto { + margin-bottom: auto !important; + } + .ml-md-auto, + .mx-md-auto { + margin-left: auto !important; + } +} + +@media (min-width: 992px) { + .m-lg-0 { + margin: 0 !important; + } + .mt-lg-0, + .my-lg-0 { + margin-top: 0 !important; + } + .mr-lg-0, + .mx-lg-0 { + margin-right: 0 !important; + } + .mb-lg-0, + .my-lg-0 { + margin-bottom: 0 !important; + } + .ml-lg-0, + .mx-lg-0 { + margin-left: 0 !important; + } + .m-lg-1 { + margin: 0.25rem !important; + } + .mt-lg-1, + .my-lg-1 { + margin-top: 0.25rem !important; + } + .mr-lg-1, + .mx-lg-1 { + margin-right: 0.25rem !important; + } + .mb-lg-1, + .my-lg-1 { + margin-bottom: 0.25rem !important; + } + .ml-lg-1, + .mx-lg-1 { + margin-left: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .mt-lg-2, + .my-lg-2 { + margin-top: 0.5rem !important; + } + .mr-lg-2, + .mx-lg-2 { + margin-right: 0.5rem !important; + } + .mb-lg-2, + .my-lg-2 { + margin-bottom: 0.5rem !important; + } + .ml-lg-2, + .mx-lg-2 { + margin-left: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem !important; + } + .mt-lg-3, + .my-lg-3 { + margin-top: 1rem !important; + } + .mr-lg-3, + .mx-lg-3 { + margin-right: 1rem !important; + } + .mb-lg-3, + .my-lg-3 { + margin-bottom: 1rem !important; + } + .ml-lg-3, + .mx-lg-3 { + margin-left: 1rem !important; + } + .m-lg-4 { + margin: 1.5rem !important; + } + .mt-lg-4, + .my-lg-4 { + margin-top: 1.5rem !important; + } + .mr-lg-4, + .mx-lg-4 { + margin-right: 1.5rem !important; + } + .mb-lg-4, + .my-lg-4 { + margin-bottom: 1.5rem !important; + } + .ml-lg-4, + .mx-lg-4 { + margin-left: 1.5rem !important; + } + .m-lg-5 { + margin: 3rem !important; + } + .mt-lg-5, + .my-lg-5 { + margin-top: 3rem !important; + } + .mr-lg-5, + .mx-lg-5 { + margin-right: 3rem !important; + } + .mb-lg-5, + .my-lg-5 { + margin-bottom: 3rem !important; + } + .ml-lg-5, + .mx-lg-5 { + margin-left: 3rem !important; + } + .p-lg-0 { + padding: 0 !important; + } + .pt-lg-0, + .py-lg-0 { + padding-top: 0 !important; + } + .pr-lg-0, + .px-lg-0 { + padding-right: 0 !important; + } + .pb-lg-0, + .py-lg-0 { + padding-bottom: 0 !important; + } + .pl-lg-0, + .px-lg-0 { + padding-left: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .pt-lg-1, + .py-lg-1 { + padding-top: 0.25rem !important; + } + .pr-lg-1, + .px-lg-1 { + padding-right: 0.25rem !important; + } + .pb-lg-1, + .py-lg-1 { + padding-bottom: 0.25rem !important; + } + .pl-lg-1, + .px-lg-1 { + padding-left: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .pt-lg-2, + .py-lg-2 { + padding-top: 0.5rem !important; + } + .pr-lg-2, + .px-lg-2 { + padding-right: 0.5rem !important; + } + .pb-lg-2, + .py-lg-2 { + padding-bottom: 0.5rem !important; + } + .pl-lg-2, + .px-lg-2 { + padding-left: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem !important; + } + .pt-lg-3, + .py-lg-3 { + padding-top: 1rem !important; + } + .pr-lg-3, + .px-lg-3 { + padding-right: 1rem !important; + } + .pb-lg-3, + .py-lg-3 { + padding-bottom: 1rem !important; + } + .pl-lg-3, + .px-lg-3 { + padding-left: 1rem !important; + } + .p-lg-4 { + padding: 1.5rem !important; + } + .pt-lg-4, + .py-lg-4 { + padding-top: 1.5rem !important; + } + .pr-lg-4, + .px-lg-4 { + padding-right: 1.5rem !important; + } + .pb-lg-4, + .py-lg-4 { + padding-bottom: 1.5rem !important; + } + .pl-lg-4, + .px-lg-4 { + padding-left: 1.5rem !important; + } + .p-lg-5 { + padding: 3rem !important; + } + .pt-lg-5, + .py-lg-5 { + padding-top: 3rem !important; + } + .pr-lg-5, + .px-lg-5 { + padding-right: 3rem !important; + } + .pb-lg-5, + .py-lg-5 { + padding-bottom: 3rem !important; + } + .pl-lg-5, + .px-lg-5 { + padding-left: 3rem !important; + } + .m-lg-n1 { + margin: -0.25rem !important; + } + .mt-lg-n1, + .my-lg-n1 { + margin-top: -0.25rem !important; + } + .mr-lg-n1, + .mx-lg-n1 { + margin-right: -0.25rem !important; + } + .mb-lg-n1, + .my-lg-n1 { + margin-bottom: -0.25rem !important; + } + .ml-lg-n1, + .mx-lg-n1 { + margin-left: -0.25rem !important; + } + .m-lg-n2 { + margin: -0.5rem !important; + } + .mt-lg-n2, + .my-lg-n2 { + margin-top: -0.5rem !important; + } + .mr-lg-n2, + .mx-lg-n2 { + margin-right: -0.5rem !important; + } + .mb-lg-n2, + .my-lg-n2 { + margin-bottom: -0.5rem !important; + } + .ml-lg-n2, + .mx-lg-n2 { + margin-left: -0.5rem !important; + } + .m-lg-n3 { + margin: -1rem !important; + } + .mt-lg-n3, + .my-lg-n3 { + margin-top: -1rem !important; + } + .mr-lg-n3, + .mx-lg-n3 { + margin-right: -1rem !important; + } + .mb-lg-n3, + .my-lg-n3 { + margin-bottom: -1rem !important; + } + .ml-lg-n3, + .mx-lg-n3 { + margin-left: -1rem !important; + } + .m-lg-n4 { + margin: -1.5rem !important; + } + .mt-lg-n4, + .my-lg-n4 { + margin-top: -1.5rem !important; + } + .mr-lg-n4, + .mx-lg-n4 { + margin-right: -1.5rem !important; + } + .mb-lg-n4, + .my-lg-n4 { + margin-bottom: -1.5rem !important; + } + .ml-lg-n4, + .mx-lg-n4 { + margin-left: -1.5rem !important; + } + .m-lg-n5 { + margin: -3rem !important; + } + .mt-lg-n5, + .my-lg-n5 { + margin-top: -3rem !important; + } + .mr-lg-n5, + .mx-lg-n5 { + margin-right: -3rem !important; + } + .mb-lg-n5, + .my-lg-n5 { + margin-bottom: -3rem !important; + } + .ml-lg-n5, + .mx-lg-n5 { + margin-left: -3rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mt-lg-auto, + .my-lg-auto { + margin-top: auto !important; + } + .mr-lg-auto, + .mx-lg-auto { + margin-right: auto !important; + } + .mb-lg-auto, + .my-lg-auto { + margin-bottom: auto !important; + } + .ml-lg-auto, + .mx-lg-auto { + margin-left: auto !important; + } +} + +@media (min-width: 1200px) { + .m-xl-0 { + margin: 0 !important; + } + .mt-xl-0, + .my-xl-0 { + margin-top: 0 !important; + } + .mr-xl-0, + .mx-xl-0 { + margin-right: 0 !important; + } + .mb-xl-0, + .my-xl-0 { + margin-bottom: 0 !important; + } + .ml-xl-0, + .mx-xl-0 { + margin-left: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .mt-xl-1, + .my-xl-1 { + margin-top: 0.25rem !important; + } + .mr-xl-1, + .mx-xl-1 { + margin-right: 0.25rem !important; + } + .mb-xl-1, + .my-xl-1 { + margin-bottom: 0.25rem !important; + } + .ml-xl-1, + .mx-xl-1 { + margin-left: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .mt-xl-2, + .my-xl-2 { + margin-top: 0.5rem !important; + } + .mr-xl-2, + .mx-xl-2 { + margin-right: 0.5rem !important; + } + .mb-xl-2, + .my-xl-2 { + margin-bottom: 0.5rem !important; + } + .ml-xl-2, + .mx-xl-2 { + margin-left: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem !important; + } + .mt-xl-3, + .my-xl-3 { + margin-top: 1rem !important; + } + .mr-xl-3, + .mx-xl-3 { + margin-right: 1rem !important; + } + .mb-xl-3, + .my-xl-3 { + margin-bottom: 1rem !important; + } + .ml-xl-3, + .mx-xl-3 { + margin-left: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem !important; + } + .mt-xl-4, + .my-xl-4 { + margin-top: 1.5rem !important; + } + .mr-xl-4, + .mx-xl-4 { + margin-right: 1.5rem !important; + } + .mb-xl-4, + .my-xl-4 { + margin-bottom: 1.5rem !important; + } + .ml-xl-4, + .mx-xl-4 { + margin-left: 1.5rem !important; + } + .m-xl-5 { + margin: 3rem !important; + } + .mt-xl-5, + .my-xl-5 { + margin-top: 3rem !important; + } + .mr-xl-5, + .mx-xl-5 { + margin-right: 3rem !important; + } + .mb-xl-5, + .my-xl-5 { + margin-bottom: 3rem !important; + } + .ml-xl-5, + .mx-xl-5 { + margin-left: 3rem !important; + } + .p-xl-0 { + padding: 0 !important; + } + .pt-xl-0, + .py-xl-0 { + padding-top: 0 !important; + } + .pr-xl-0, + .px-xl-0 { + padding-right: 0 !important; + } + .pb-xl-0, + .py-xl-0 { + padding-bottom: 0 !important; + } + .pl-xl-0, + .px-xl-0 { + padding-left: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .pt-xl-1, + .py-xl-1 { + padding-top: 0.25rem !important; + } + .pr-xl-1, + .px-xl-1 { + padding-right: 0.25rem !important; + } + .pb-xl-1, + .py-xl-1 { + padding-bottom: 0.25rem !important; + } + .pl-xl-1, + .px-xl-1 { + padding-left: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .pt-xl-2, + .py-xl-2 { + padding-top: 0.5rem !important; + } + .pr-xl-2, + .px-xl-2 { + padding-right: 0.5rem !important; + } + .pb-xl-2, + .py-xl-2 { + padding-bottom: 0.5rem !important; + } + .pl-xl-2, + .px-xl-2 { + padding-left: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem !important; + } + .pt-xl-3, + .py-xl-3 { + padding-top: 1rem !important; + } + .pr-xl-3, + .px-xl-3 { + padding-right: 1rem !important; + } + .pb-xl-3, + .py-xl-3 { + padding-bottom: 1rem !important; + } + .pl-xl-3, + .px-xl-3 { + padding-left: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem !important; + } + .pt-xl-4, + .py-xl-4 { + padding-top: 1.5rem !important; + } + .pr-xl-4, + .px-xl-4 { + padding-right: 1.5rem !important; + } + .pb-xl-4, + .py-xl-4 { + padding-bottom: 1.5rem !important; + } + .pl-xl-4, + .px-xl-4 { + padding-left: 1.5rem !important; + } + .p-xl-5 { + padding: 3rem !important; + } + .pt-xl-5, + .py-xl-5 { + padding-top: 3rem !important; + } + .pr-xl-5, + .px-xl-5 { + padding-right: 3rem !important; + } + .pb-xl-5, + .py-xl-5 { + padding-bottom: 3rem !important; + } + .pl-xl-5, + .px-xl-5 { + padding-left: 3rem !important; + } + .m-xl-n1 { + margin: -0.25rem !important; + } + .mt-xl-n1, + .my-xl-n1 { + margin-top: -0.25rem !important; + } + .mr-xl-n1, + .mx-xl-n1 { + margin-right: -0.25rem !important; + } + .mb-xl-n1, + .my-xl-n1 { + margin-bottom: -0.25rem !important; + } + .ml-xl-n1, + .mx-xl-n1 { + margin-left: -0.25rem !important; + } + .m-xl-n2 { + margin: -0.5rem !important; + } + .mt-xl-n2, + .my-xl-n2 { + margin-top: -0.5rem !important; + } + .mr-xl-n2, + .mx-xl-n2 { + margin-right: -0.5rem !important; + } + .mb-xl-n2, + .my-xl-n2 { + margin-bottom: -0.5rem !important; + } + .ml-xl-n2, + .mx-xl-n2 { + margin-left: -0.5rem !important; + } + .m-xl-n3 { + margin: -1rem !important; + } + .mt-xl-n3, + .my-xl-n3 { + margin-top: -1rem !important; + } + .mr-xl-n3, + .mx-xl-n3 { + margin-right: -1rem !important; + } + .mb-xl-n3, + .my-xl-n3 { + margin-bottom: -1rem !important; + } + .ml-xl-n3, + .mx-xl-n3 { + margin-left: -1rem !important; + } + .m-xl-n4 { + margin: -1.5rem !important; + } + .mt-xl-n4, + .my-xl-n4 { + margin-top: -1.5rem !important; + } + .mr-xl-n4, + .mx-xl-n4 { + margin-right: -1.5rem !important; + } + .mb-xl-n4, + .my-xl-n4 { + margin-bottom: -1.5rem !important; + } + .ml-xl-n4, + .mx-xl-n4 { + margin-left: -1.5rem !important; + } + .m-xl-n5 { + margin: -3rem !important; + } + .mt-xl-n5, + .my-xl-n5 { + margin-top: -3rem !important; + } + .mr-xl-n5, + .mx-xl-n5 { + margin-right: -3rem !important; + } + .mb-xl-n5, + .my-xl-n5 { + margin-bottom: -3rem !important; + } + .ml-xl-n5, + .mx-xl-n5 { + margin-left: -3rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mt-xl-auto, + .my-xl-auto { + margin-top: auto !important; + } + .mr-xl-auto, + .mx-xl-auto { + margin-right: auto !important; + } + .mb-xl-auto, + .my-xl-auto { + margin-bottom: auto !important; + } + .ml-xl-auto, + .mx-xl-auto { + margin-left: auto !important; + } +} + +.text-monospace { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important; +} + +.text-justify { + text-align: justify !important; +} + +.text-wrap { + white-space: normal !important; +} + +.text-nowrap { + white-space: nowrap !important; +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.text-left { + text-align: left !important; +} + +.text-right { + text-align: right !important; +} + +.text-center { + text-align: center !important; + margin-bottom: 0.3rem; +} +.text-center.medium { + font-size: medium; +} +.text-center.large { + font-size: large; + font-weight: 600; +} + +@media (min-width: 576px) { + .text-sm-left { + text-align: left !important; + } + .text-sm-right { + text-align: right !important; + } + .text-sm-center { + text-align: center !important; + } +} + +@media (min-width: 768px) { + .text-md-left { + text-align: left !important; + } + .text-md-right { + text-align: right !important; + } + .text-md-center { + text-align: center !important; + } +} + +@media (min-width: 992px) { + .text-lg-left { + text-align: left !important; + } + .text-lg-right { + text-align: right !important; + } + .text-lg-center { + text-align: center !important; + } +} + +@media (min-width: 1200px) { + .text-xl-left { + text-align: left !important; + } + .text-xl-right { + text-align: right !important; + } + .text-xl-center { + text-align: center !important; + } +} + +.text-lowercase { + text-transform: lowercase !important; +} + +.text-uppercase { + text-transform: uppercase !important; +} + +.text-capitalize { + text-transform: capitalize !important; +} + +.font-weight-light { + font-weight: 300 !important; +} + +.font-weight-lighter { + font-weight: lighter !important; +} + +.font-weight-normal { + font-weight: 400 !important; +} + +.font-weight-bold { + font-weight: 700 !important; +} + +.font-weight-bolder { + font-weight: bolder !important; +} + +.font-italic { + font-style: italic !important; +} + +.text-white { + color: #fff !important; +} + +.text-primary { + color: #3f84fc !important; +} + +a.text-primary:hover, +a.text-primary:focus { + color: #0458eb !important; +} + +.text-secondary { + color: #727f94 !important; +} + +a.text-secondary:hover, +a.text-secondary:focus { + color: #505a69 !important; +} + +.text-success { + color: #1dab47 !important; +} + +a.text-success:hover, +a.text-success:focus { + color: #126a2c !important; +} + +.text-info { + color: #8a3ffc !important; +} + +a.text-info:hover, +a.text-info:focus { + color: #5f04eb !important; +} + +.text-warning { + color: #fcae3f !important; +} + +a.text-warning:hover, +a.text-warning:focus { + color: #eb8b04 !important; +} + +.text-danger { + color: #fc413f !important; +} + +a.text-danger:hover, +a.text-danger:focus { + color: #eb0604 !important; +} + +.text-light { + color: #f8f9fa !important; +} + +a.text-light:hover, +a.text-light:focus { + color: #cbd3da !important; +} + +.text-dark { + color: #1e232d !important; +} + +a.text-dark:hover, +a.text-dark:focus { + color: black !important; +} + +.text-body { + color: #515151 !important; +} + +.text-muted { + color: #6c757d !important; +} + +.text-black-50 { + color: rgba(0, 0, 0, 0.5) !important; +} + +.text-white-50 { + color: rgba(255, 255, 255, 0.5) !important; +} + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.text-decoration-none { + text-decoration: none !important; +} + +.text-break { + word-break: break-word !important; + overflow-wrap: break-word !important; +} + +.text-reset { + color: inherit !important; +} + +.visible { + visibility: visible !important; +} + +.invisible { + visibility: hidden !important; +} + +@media print { + *, + *::before, + *::after { + text-shadow: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + a:not(.btn) { + text-decoration: underline; + } + abbr[title]::after { + content: " (" attr(title) ")"; + } + pre { + white-space: pre-wrap !important; + } + pre, + blockquote { + border: 1px solid #adb5bd; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + p, + /* h2, + h3 { + orphans: 3; + widows: 3; } + h2, + h3 { + page-break-after: avoid; } + @page { + size: a3; } */ + body { + min-width: 992px !important; + } + .container { + min-width: 992px !important; + } + .navbar { + display: none; + } + .badge { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #dee2e6 !important; + } + .table-dark { + color: inherit; + } + .table-dark th, + .table-dark td, + .table-dark thead th, + .table-dark tbody + tbody { + border-color: #dee2e6; + } + .table .thead-dark th { + color: inherit; + border-color: #dee2e6; + } +} + +.spur-card { + border: 1px solid #d3d3d3; + background: #fff; + margin-bottom: 30px; +} +.spur-card .card-header { + min-height: 57px; + background-color: #f0f1f7; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + padding: 8px 32px; +} +.spur-card .card-body { + padding: 24px 32px; +} +@media (max-width: 767.98px) { + .spur-card .card-body { + padding: 12px 18px; + } +} + +.spur-card-icon { + margin-right: 20px; +} + +.spur-card-title { + font-weight: bold; +} + +.spur-card-menu { + margin-left: auto; +} + +.spur-card-menu-link { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + width: 30px; + height: 30px; + margin-right: -15px; +} +.spur-card-menu-link::after { + content: ""; + display: inline-block; + width: 0; + height: 0; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 5px solid rgba(81, 81, 81, 0.8); +} +.text-white .spur-card-menu-link::after { + border-top-color: #fff; +} + +.spur-card-body-chart { + position: relative; + max-width: 99%; +} +@media (max-width: 767.98px) { + .spur-card-body-chart { + padding: 12px 5px; + } +} + +/* h1 { + font-family: "Nunito", sans-serif; + font-weight: normal; } */ + +.dash-title { + margin-bottom: 30px; +} + +.content-anchor::before { + display: block; + height: 6rem; + margin-top: -6rem; + visibility: hidden; + content: ""; +} + +.content-anchor-link { + color: #292829; + opacity: 0.46; + font-size: 19px; + margin-left: 7px; +} + +body { + background: #e9edf4; +} + +.dash { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + min-height: 100vh; +} + +.dash-app { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-flex: 2; + -webkit-flex-grow: 2; + -ms-flex-positive: 2; + flex-grow: 2; + /* margin-top: 200px; */ +} +/* @media (min-width: 800px) { + .dash-app { + margin-left: 0; } + .dash-compact .dash-app { + margin-left: 0; } } */ + +.dash-content { + -webkit-box-flex: 2; + -webkit-flex-grow: 2; + -ms-flex-positive: 2; + flex-grow: 2; + padding: 25px; + height: 100%; +} +@media (max-width: 780px) { + .dash-content { + padding: 15px 0px; + } +} + +.dash-row { + margin-bottom: 30px; +} + +.form-screen { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + min-height: 100vh; + padding-top: 100px; +} +.form-screen .spur-logo { + margin-bottom: 60px; + opacity: 0.9; +} +.form-screen .spur-logo i { + color: #515151; +} + +.account-dialog { + max-width: 360px; +} +@media (min-width: 1200px) { + .account-dialog { + min-width: 360px; + } +} + +.account-dialog-actions { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; +} + +.account-dialog-link { + margin-left: 15px; + font-size: 14px; + color: rgba(81, 81, 81, 0.8); +} +.account-dialog-link:hover { + color: #515151; + text-decoration: none; +} + +.dash-nav { + min-width: 238px; + position: fixed; + left: 0; + top: 0; + bottom: 0; + overflow: auto; +} +.dash-compact .dash-nav { + display: none; +} +.dash-nav::-webkit-scrollbar { + width: 0; + background: transparent; +} +@media (max-width: 991.98px) { + .dash-nav { + display: none; + position: fixed; + top: 0; + right: 0; + left: 0; + bottom: 0; + z-index: 1070; + } + .dash-nav.mobile-show { + display: block; + } +} +.dash-nav header { + min-height: 84px; + padding: 8px 27px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; +} +.dash-nav header .menu-toggle { + display: none; + margin-right: auto; +} +@media (max-width: 991.98px) { + .dash-nav header .menu-toggle { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + } +} +.dash-nav header .spur-logo { + margin-right: auto; + padding-right: 42px; +} +.dash-nav a { + color: #515151; +} +.dash-nav a:hover { + text-decoration: none; +} +.dash-nav.dash-nav-dark { + background-color: #181f2c; +} +.dash-nav.dash-nav-dark a { + color: #fff; +} + +.spur-logo { + font-family: "Nunito", sans-serif; + font-weight: bold; + font-size: 20px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + color: #515151; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; +} +.spur-logo:focus, +.spur-logo:active, +.spur-logo:hover { + color: #515151; + text-decoration: none; +} +.spur-logo i { + color: #576177; + font-size: 27px; + margin-right: 10px; +} + +.dash-nav-list { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.dash-nav-item { + min-height: 45px; + padding: 8px 20px 8px 20px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + letter-spacing: 0.02em; +} +.dash-nav-item i { + width: 30px; + font-size: 18px; + margin-left: 5px; +} +.dash-nav-dark .dash-nav-item:hover { + background: rgba(255, 255, 255, 0.04); + text-decoration: none; +} + +.dash-nav-dropdown { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} +.dash-nav-dark .dash-nav-dropdown.show { + background: rgba(255, 255, 255, 0.04); + display: block; +} +.dash-nav-dropdown.show > .dash-nav-dropdown-toggle { + font-weight: bold; + text-decoration: none; +} +.dash-nav-dropdown.show > .dash-nav-dropdown-toggle:after { + -webkit-transform: none; + -o-transform: none; + transform: none; +} +.dash-nav-dropdown.show > .dash-nav-dropdown-menu { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +.dash-nav-dropdown.show .dash-nav-dropdown.show { + background: none; +} + +.dash-nav-dropdown-toggle:after { + content: ""; + margin-left: auto; + display: inline-block; + width: 0; + height: 0; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 5px solid rgba(81, 81, 81, 0.8); + -webkit-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); +} +.dash-nav-dark .dash-nav-dropdown-toggle:after { + border-top-color: rgba(255, 255, 255, 0.72); +} + +.dash-nav-dropdown-menu { + display: none; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} +.dash-nav-dropdown-menu > .dash-nav-dropdown .dash-nav-dropdown-menu .dash-nav-dropdown-item { + padding-left: 87px; +} + +.dash-nav-dropdown-item { + min-height: 40px; + max-width: 210px; + text-align: right; + items-align: center; + /* background-color: hsl(339,90%,30%); */ + color: #fff; + font-size: 11px; + text-decoration: none; + margin: 5px 5px; + margin-left: 15px; + padding: 8px 40px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + /* box-shadow: 0 1px 15px 1px rgba(39,39,39,.1); */ + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; +} + +.dash-nav-dropdown-item:hover { + /* background: hsla(339,86.8%,38.6%, 0.7); + border-radius: 25px; + color: #fff; */ + text-decoration: none; +} +.dash-nav-dropdown-item:active, +.dash-nav-dropdown-item:focus { + /* background-color: #fff; + color: hsl(339,90%,30%); + border-radius: 25px; */ + text-decoration: none; +} + +.notifications { + margin: -8px -32px; +} +@media (max-width: 767.98px) { + .notifications { + margin: -8px -18px; + } +} + +.notification { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + padding: 8px 32px; + color: #515151; +} +.notification:hover, +.notification:focus, +.notification:active { + color: #515151; + text-decoration: none; + background-color: #f0f1f7; +} + +.notification-icon { + width: 35px; +} + +.notification-time { + margin-left: auto; + opacity: 0.8; +} + +.notifications-show-all { + margin-top: 8px; + margin-left: 67px; +} +.notifications-show-all a { + color: #515151; + text-decoration: underline; +} +.notifications-show-all a:focus, +.notifications-show-all a:hover, +.notifications-show-all a:active { + color: #515151; +} + +.table-in-card { + margin: -12px 0; +} +.table-in-card thead tr th { + border-top-color: transparent; +} + +.card-body-with-dark-table { + background-color: #212529; +} + +.menu-toggle, +.searchbox-toggle, +.searchbox-submit, +.tools-item { + position: relative; + width: 42px; + height: 42px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + color: #515151; +} +.menu-toggle:hover, +.searchbox-toggle:hover, +.searchbox-submit:hover, +.tools-item:hover, +.menu-toggle:active, +.searchbox-toggle:active, +.searchbox-submit:active, +.tools-item:active, +.menu-toggle:focus, +.searchbox-toggle:focus, +.searchbox-submit:focus, +.tools-item:focus { + text-decoration: none; + color: #515151; +} +.menu-toggle i, +.searchbox-toggle i, +.searchbox-submit i, +.tools-item i { + font-size: 20px; +} + +.tools-item .tools-item-count { + width: 15px; + height: 15px; + border-radius: 20px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + position: absolute; + top: 3px; + right: 3px; + font-style: normal; + font-size: 11px; + background: #ff5a00; + color: #fff; +} + +.dash-toolbar { + height: 60px; + width: 300px; + background-color: #f3f3f3; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + padding: 5px 20px; + top: 0; + right: 0; + left: 0; + z-index: 1000; +} +@media (min-width: 992px) { + .dash-toolbar { + left: 240px; + } + .dash-compact .dash-toolbar { + left: 0; + } +} + +.searchbox { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 2; + -webkit-flex-grow: 2; + -ms-flex-positive: 2; + flex-grow: 2; +} +@media (max-width: 767.98px) { + .searchbox { + display: none; + position: fixed; + top: 0; + right: 0; + left: 0; + background: #f3f3f3; + min-height: 84px; + z-index: 1071; + padding: 8px 27px; + } + .searchbox.show { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + } +} + +.searchbox-toggle { + display: none; + color: #515151; +} +.searchbox-toggle:hover, +.searchbox-toggle:active, +.searchbox-toggle:focus { + text-decoration: none; + color: #515151; +} +@media (max-width: 767.98px) { + .searchbox-toggle { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + } +} + +.searchbox-input { + border: none; + background-color: #f3f3f3; + height: 50px; + padding: 8px 8px 11px 4px; + -webkit-box-flex: 2; + -webkit-flex-grow: 2; + -ms-flex-positive: 2; + flex-grow: 2; + width: 100px; +} +.searchbox-input::-webkit-input-placeholder { + color: #8b8b8b; +} +.searchbox-input::-moz-placeholder { + color: #8b8b8b; +} +.searchbox-input:-ms-input-placeholder { + color: #8b8b8b; +} +.searchbox-input::-ms-input-placeholder { + color: #8b8b8b; +} +.searchbox-input::placeholder { + color: #8b8b8b; +} +.searchbox-input:focus { + outline: none; +} + +.searchbox-submit { + border: none; + background: none; + padding: 0; +} +@media (max-width: 767.98px) { + .searchbox-submit { + -webkit-box-ordinal-group: 10; + -webkit-order: 9; + -ms-flex-order: 9; + order: 9; + } +} +.searchbox-submit:focus { + outline: none; +} +.searchbox-submit:hover { + cursor: pointer; +} + +.tools { + margin-left: auto; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +.tools a { + color: #515151; +} + +.stats { + padding: 18px 23px; + font-family: "Nunito", sans-serif; + -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.25); + box-shadow: 0 0 5px rgba(0, 0, 0, 0.25); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + min-height: 170px; + margin-bottom: 30px; +} + +.stats-content { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + margin-top: auto; + -webkit-box-align: end; + -webkit-align-items: flex-end; + -ms-flex-align: end; + align-items: flex-end; +} + +.stats-title { + font-size: 26px; + font-weight: 600; + letter-spacing: 0.04em; +} + +.stats-icon { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: end; + -webkit-align-items: flex-end; + -ms-flex-align: end; + align-items: flex-end; + font-size: 20px; +} + +.stats-data { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: end; + -webkit-align-items: flex-end; + -ms-flex-align: end; + align-items: flex-end; + margin-left: auto; +} + +.stats-number { + font-size: 33px; + line-height: 33px; + font-weight: 600; + letter-spacing: 0.04em; +} + +.stats-change { + margin-top: 5px; + font-family: "Open Sans", sans-serif; +} + +.stats-percentage { + opacity: 1; +} + +.stats-timeframe { + opacity: 0.5; +} + +.stats-primary { + color: #fff; + background: #3f84fc; +} + +.stats-secondary { + color: #fff; + background: #727f94; +} + +.stats-success { + color: #fff; + background: #1dab47; +} + +.stats-info { + color: #fff; + background: #8a3ffc; +} + +.stats-warning { + color: #212529; + background: #fcae3f; +} + +.stats-danger { + color: #fff; + background: #fc413f; +} + +.stats-light { + color: #212529; + background: #f8f9fa; +} + +.stats-dark { + color: #fff; + background: #1e232d; +} diff --git a/src/electron/renderer/assets/css/tablepath.css b/src/electron/renderer/assets/css/tablepath.css index 2d62894a6..1789df706 100755 --- a/src/electron/renderer/assets/css/tablepath.css +++ b/src/electron/renderer/assets/css/tablepath.css @@ -1,11 +1,11 @@ -/* Table path to organize data ------------------ */ - -td { - width: 100px; -} -input[type="button"] { - margin-top: 10px; -} -.save { - display: none; -} +/* Table path to organize data ------------------ */ + +td { + width: 100px; +} +input[type="button"] { + margin-top: 10px; +} +.save { + display: none; +} diff --git a/src/electron/renderer/assets/css/variables.css b/src/electron/renderer/assets/css/variables.css index f311607cd..18a4b5552 100755 --- a/src/electron/renderer/assets/css/variables.css +++ b/src/electron/renderer/assets/css/variables.css @@ -1,47 +1,47 @@ -/* Custom Properties */ - -:root { - --color: hsl(0, 0%, 22%); - --color-subtle: hsl(0, 0%, 44%); - --color-strong: hsl(0, 0%, 11%); - --color-link: hsl(0, 0%, 22%); - --color-bg: hsl(0, 0%, 96%); - --color-sidebar: #e8e8e8; - --color-sidebar-hyperlink-hover: #292929; - - --color-border: hsl(0, 0%, 88%); - --color-bg-plum: hsl(339, 86.8%, 38.6%); - --color-bg-plum-light: #dd1058; - --color-bg-plum-very-light: #fcdbe7; - --color-strong-white: hsl(0, 100%, 100%); - --color-light-green: #13716d; - --color-transparent-soda-green: rgba(19, 113, 109, 0.1); - --color-bg-white: #fff; - --color-teal: #258193; - --color-bg-light-green-button: #d2efee; - --color-bg-yellow: #eccb13; - --color-bg-orange: #ec6713; - - --color-section: hsla(0, 0%, 100%); - - --color-accent: black; /* Fallback */ -} - -/* Category Colors */ - -.u-category-windows { - --color-accent: hsl(190, 60%, 36%); -} - -.u-category-native-ui { - --color-accent: hsl(222, 53%, 50%); -} -.u-category-communication { - --color-accent: hsl(285, 47%, 46%); -} -.u-category-system { - --color-accent: hsl(330, 65%, 48%); -} -.u-category-media { - --color-accent: hsl(36, 77%, 34%); -} +/* Custom Properties */ + +:root { + --color: hsl(0, 0%, 22%); + --color-subtle: hsl(0, 0%, 44%); + --color-strong: hsl(0, 0%, 11%); + --color-link: hsl(0, 0%, 22%); + --color-bg: hsl(0, 0%, 96%); + --color-sidebar: #e8e8e8; + --color-sidebar-hyperlink-hover: #292929; + + --color-border: hsl(0, 0%, 88%); + --color-bg-plum: hsl(339, 86.8%, 38.6%); + --color-bg-plum-light: #dd1058; + --color-bg-plum-very-light: #fcdbe7; + --color-strong-white: hsl(0, 100%, 100%); + --color-light-green: #13716d; + --color-transparent-soda-green: rgba(19, 113, 109, 0.1); + --color-bg-white: #fff; + --color-teal: #258193; + --color-bg-light-green-button: #d2efee; + --color-bg-yellow: #eccb13; + --color-bg-orange: #ec6713; + + --color-section: hsla(0, 0%, 100%); + + --color-accent: black; /* Fallback */ +} + +/* Category Colors */ + +.u-category-windows { + --color-accent: hsl(190, 60%, 36%); +} + +.u-category-native-ui { + --color-accent: hsl(222, 53%, 50%); +} +.u-category-communication { + --color-accent: hsl(285, 47%, 46%); +} +.u-category-system { + --color-accent: hsl(330, 65%, 48%); +} +.u-category-media { + --color-accent: hsl(36, 77%, 34%); +} diff --git a/src/electron/renderer/assets/lotties/contact-us-lotties.js b/src/electron/renderer/assets/lotties/contact-us-lotties.js index c245a4e3d..6cd2d2dd2 100644 --- a/src/electron/renderer/assets/lotties/contact-us-lotties.js +++ b/src/electron/renderer/assets/lotties/contact-us-lotties.js @@ -1,6363 +1,6363 @@ -export const contact_lottie = { - v: "5.7.1", - fr: 25, - ip: 0, - op: 200, - w: 1000, - h: 1000, - nm: "Work frome Home Mailing F 2", - ddd: 0, - assets: [], - layers: [ - { - ddd: 0, - ind: 1, - ty: 3, - nm: "Null 1", - sr: 1, - ks: { - o: { a: 0, k: 0, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [500, 604, 0], ix: 2 }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - ip: 0, - op: 200, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 2, - ty: 4, - nm: "mail 4", - parent: 1, - td: 1, - sr: 1, - ks: { - o: { a: 0, k: 99, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [183.055, -315.211, 0], ix: 2 }, - a: { a: 0, k: [2153.478, 680.843, 0], ix: 1 }, - s: { a: 0, k: [56, 56, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-0.758, -2.403], - [0, 0], - [0, 0], - [0, 0], - [-21.953, -7.476], - [-0.627, -0.393], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [9.299, 3.167], - [1.978, 1.239], - ], - v: [ - [78.735, -34.708], - [80.678, -28.718], - [-58.964, 72.319], - [-68.916, 40.154], - [58.006, -46.114], - [74.435, -40.273], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 4", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.174548238516, 0.452203959227, 0.890196084976, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 3", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [1801.139, 934.164], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [594, 594], ix: 3 }, - r: { a: 0, k: 17.3, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "back 2", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 204, - op: 204, - st: -23, - bm: 0, - hidden: 0, - }, - { - ddd: 0, - ind: 3, - ty: 4, - nm: "plane 2", - parent: 1, - tt: 2, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: -30.27, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.57, y: 1 }, - o: { x: 0.43, y: 0 }, - t: 0, - s: [-417.664, 54.901, 0], - to: [29.664, 67.099, 0], - ti: [8.659, 75.131, 0], - }, - { - i: { x: 0.57, y: 1 }, - o: { x: 0.444, y: 0 }, - t: 50, - s: [384.659, -254.869, 0], - to: [-6.219, -53.959, 0], - ti: [-29.664, -67.099, 0], - }, - { - i: { x: 0.57, y: 1 }, - o: { x: 0.43, y: 0 }, - t: 100, - s: [-417.664, 54.901, 0], - to: [29.664, 67.099, 0], - ti: [8.659, 75.131, 0], - }, - { - i: { x: 0.595, y: 1 }, - o: { x: 0.444, y: 0 }, - t: 150, - s: [384.659, -254.869, 0], - to: [-6.219, -53.959, 0], - ti: [-17.336, -57.901, 0], - }, - { t: 199, s: [-417.664, 54.901, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [816.438, 755.113, 0], ix: 1 }, - s: { a: 0, k: [65, 65, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: -7, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [18.514, -6.941], - [-33.276, 21.927], - [93.386, -0.562], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 3, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-6.915, -14.251], - [-9.38, 40.839], - [47.51, -30.24], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 12, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [21.986, -29.805], - [113.019, 32.241], - [42.547, -64.73], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 30, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-0.528, -14.328], - [129.556, -5.673], - [-49.243, -49.537], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 48, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [12.419, -8.39], - [20.033, -35.22], - [-88.885, -12.543], - ], - c: true, - }, - ], - }, - { - i: { x: 0.32, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 61, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [55.573, 8.709], - [-40.935, -18.354], - [28.444, 45.375], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 70, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [6.11, 3.203], - [-110.008, -19.184], - [7.061, 50.133], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 84, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [70.462, -13.025], - [-68.13, -5.656], - [131.7, 43.826], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 93, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [18.514, -6.941], - [-33.276, 21.927], - [93.387, -0.562], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 103, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-6.915, -14.251], - [-9.38, 40.839], - [47.51, -30.24], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 112, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [21.986, -29.805], - [113.019, 32.241], - [42.547, -64.73], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 130, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-0.528, -14.328], - [129.556, -5.673], - [-49.243, -49.537], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 148, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [12.419, -8.39], - [20.033, -35.22], - [-88.885, -12.543], - ], - c: true, - }, - ], - }, - { - i: { x: 0.32, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 161, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [55.573, 8.709], - [-40.935, -18.354], - [28.444, 45.375], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 170, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [6.11, 3.203], - [-110.008, -19.184], - [7.061, 50.133], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 184, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [70.462, -13.025], - [-68.13, -5.656], - [131.7, 43.826], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 193, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [18.514, -6.941], - [-33.276, 21.927], - [93.386, -0.562], - ], - c: true, - }, - ], - }, - { - t: 203, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-6.915, -14.251], - [-9.38, 40.839], - [47.51, -30.24], - ], - c: true, - }, - ], - }, - ], - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: -7, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-33.276, 21.927], - [5.299, -10.555], - [-29.451, -26.172], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 3, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-9.38, 40.839], - [-24.162, -11.06], - [-91.62, -22.853], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 12, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [113.019, 32.241], - [-1.135, -26.615], - [-113.019, -32.241], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 30, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [129.556, -5.673], - [7.207, -4.426], - [12.17, 72.534], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 48, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [20.033, -35.22], - [24.82, -6.359], - [108.512, 9], - ], - c: true, - }, - ], - }, - { - i: { x: 0.32, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 61, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-40.935, -18.354], - [69.258, 0.624], - [114.118, -27.203], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 70, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-110.008, -19.184], - [15.525, -1.402], - [54.092, -19.43], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 84, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-68.13, -5.656], - [63.129, -26.565], - [63.443, -50.053], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 93, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-33.276, 21.927], - [5.299, -10.555], - [-29.451, -26.172], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 103, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-9.38, 40.839], - [-24.162, -11.06], - [-91.62, -22.853], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 112, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [113.019, 32.241], - [-1.135, -26.615], - [-113.019, -32.241], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 130, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [129.556, -5.673], - [7.207, -4.426], - [12.17, 72.534], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 148, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [20.033, -35.22], - [24.82, -6.359], - [108.512, 9], - ], - c: true, - }, - ], - }, - { - i: { x: 0.32, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 161, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-40.935, -18.354], - [69.258, 0.624], - [114.118, -27.203], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 170, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-110.008, -19.184], - [15.525, -1.402], - [54.092, -19.43], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 184, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-68.13, -5.656], - [63.129, -26.565], - [63.443, -50.053], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 193, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-33.276, 21.927], - [5.299, -10.555], - [-29.451, -26.172], - ], - c: true, - }, - ], - }, - { - t: 203, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-9.38, 40.839], - [-24.162, -11.06], - [-91.62, -22.853], - ], - c: true, - }, - ], - }, - ], - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.828505811504, 0.876804486443, 0.931862146714, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ind: 3, - ty: "sh", - ix: 4, - ks: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: -7, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-14.241, 3.304], - [-30.454, 20.957], - [19.514, -1.564], - [11.823, 5.95], - [3.437, -9.631], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 3, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-21.862, 17.885], - [-9.38, 40.839], - [-6.915, -14.251], - [-10.368, 5.64], - [-25.224, -7.275], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 12, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-24.159, 12.674], - [113.019, 32.241], - [21.986, -29.805], - [17.357, -9.915], - [-16.004, -3.872], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 30, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [55.35, -4.914], - [129.556, -5.673], - [-3.271, -18.353], - [-13.529, 7.902], - [42.148, 1], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 48, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [34.167, -10.201], - [20.033, -35.22], - [10.099, -7.209], - [13.95, 35.083], - [26.183, -5.636], - ], - c: true, - }, - ], - }, - { - i: { x: 0.32, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 61, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [75.86, -3.345], - [-40.935, -18.354], - [42.881, 12.14], - [74.348, 24.549], - [70.369, 1.013], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 70, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [12.51, -7.277], - [-110.008, -19.184], - [-19.192, 3.494], - [20.236, 23.254], - [16.22, -0.587], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 84, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-3.126, -17.964], - [-61.192, -8.042], - [72.921, 0.195], - [59.046, -10.343], - [60.098, -29.814], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 93, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-14.241, 3.304], - [-30.454, 20.957], - [19.514, -1.564], - [11.823, 5.95], - [3.437, -9.631], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 103, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-21.861, 17.885], - [-9.38, 40.839], - [-6.915, -14.251], - [-10.368, 5.64], - [-25.224, -7.275], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 112, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-24.159, 12.674], - [113.019, 32.241], - [21.986, -29.805], - [17.357, -9.915], - [-16.004, -3.872], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 130, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [55.35, -4.914], - [129.556, -5.673], - [-3.271, -18.353], - [-13.529, 7.902], - [42.148, 1], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 148, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [34.167, -10.201], - [20.033, -35.22], - [10.099, -7.209], - [13.95, 35.083], - [26.183, -5.636], - ], - c: true, - }, - ], - }, - { - i: { x: 0.32, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 161, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [75.86, -3.345], - [-40.935, -18.354], - [42.881, 12.14], - [74.348, 24.549], - [70.369, 1.013], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 170, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [12.51, -7.277], - [-110.008, -19.184], - [-19.192, 3.494], - [20.236, 23.254], - [16.22, -0.587], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 184, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-3.126, -17.964], - [-61.192, -8.042], - [72.921, 0.195], - [59.046, -10.343], - [60.098, -29.814], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 193, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-14.241, 3.304], - [-30.454, 20.957], - [19.514, -1.564], - [11.823, 5.95], - [3.437, -9.631], - ], - c: true, - }, - ], - }, - { - t: 203, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-21.862, 17.885], - [-9.38, 40.839], - [-6.915, -14.251], - [-10.368, 5.64], - [-25.224, -7.275], - ], - c: true, - }, - ], - }, - ], - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.65451594334, 0.742976110122, 0.858894258387, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 2", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [795.902, 768.678], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 9", - np: 5, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: -7, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [18.514, -6.941], - [-33.276, 21.927], - [93.386, -0.562], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 3, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-6.915, -14.251], - [-9.38, 40.839], - [47.51, -30.24], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 12, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [21.986, -29.805], - [113.019, 32.241], - [42.547, -64.73], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 30, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-0.528, -14.328], - [129.556, -5.673], - [-49.243, -49.537], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 48, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [12.419, -8.39], - [20.033, -35.22], - [-88.885, -12.543], - ], - c: true, - }, - ], - }, - { - i: { x: 0.32, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 61, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [55.573, 8.709], - [-40.935, -18.354], - [28.444, 45.375], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 70, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [6.11, 3.203], - [-110.008, -19.184], - [7.061, 50.133], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 84, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [70.462, -13.025], - [-68.13, -5.656], - [131.7, 43.826], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 93, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [18.514, -6.941], - [-33.276, 21.927], - [93.387, -0.562], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 103, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-6.915, -14.251], - [-9.38, 40.839], - [47.51, -30.24], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 112, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [21.986, -29.805], - [113.019, 32.241], - [42.547, -64.73], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 130, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-0.528, -14.328], - [129.556, -5.673], - [-49.243, -49.537], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 148, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [12.419, -8.39], - [20.033, -35.22], - [-88.885, -12.543], - ], - c: true, - }, - ], - }, - { - i: { x: 0.32, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 161, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [55.573, 8.709], - [-40.935, -18.354], - [28.444, 45.375], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 170, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [6.11, 3.203], - [-110.008, -19.184], - [7.061, 50.133], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 184, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [70.462, -13.025], - [-68.13, -5.656], - [131.7, 43.826], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 193, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [18.514, -6.941], - [-33.276, 21.927], - [93.386, -0.562], - ], - c: true, - }, - ], - }, - { - t: 203, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-6.915, -14.251], - [-9.38, 40.839], - [47.51, -30.24], - ], - c: true, - }, - ], - }, - ], - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: -7, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-33.276, 21.927], - [5.299, -10.555], - [-29.451, -26.172], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 3, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-9.38, 40.839], - [-24.162, -11.06], - [-91.62, -22.853], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 12, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [113.019, 32.241], - [-1.135, -26.615], - [-113.019, -32.241], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 30, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [129.556, -5.673], - [7.207, -4.426], - [12.17, 72.534], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 48, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [20.033, -35.22], - [24.82, -6.359], - [108.512, 9], - ], - c: true, - }, - ], - }, - { - i: { x: 0.32, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 61, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-40.935, -18.354], - [69.258, 0.624], - [114.118, -27.203], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 70, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-110.008, -19.184], - [15.525, -1.402], - [54.092, -19.43], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 84, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-68.13, -5.656], - [63.129, -26.565], - [63.443, -50.053], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 93, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-33.276, 21.927], - [5.299, -10.555], - [-29.451, -26.172], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 103, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-9.38, 40.839], - [-24.162, -11.06], - [-91.62, -22.853], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 112, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [113.019, 32.241], - [-1.135, -26.615], - [-113.019, -32.241], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 130, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [129.556, -5.673], - [7.207, -4.426], - [12.17, 72.534], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 148, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [20.033, -35.22], - [24.82, -6.359], - [108.512, 9], - ], - c: true, - }, - ], - }, - { - i: { x: 0.32, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 161, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-40.935, -18.354], - [69.258, 0.624], - [114.118, -27.203], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 170, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-110.008, -19.184], - [15.525, -1.402], - [54.092, -19.43], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 184, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-68.13, -5.656], - [63.129, -26.565], - [63.443, -50.053], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 193, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-33.276, 21.927], - [5.299, -10.555], - [-29.451, -26.172], - ], - c: true, - }, - ], - }, - { - t: 203, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-9.38, 40.839], - [-24.162, -11.06], - [-91.62, -22.853], - ], - c: true, - }, - ], - }, - ], - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: -7, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-14.241, 3.304], - [-30.454, 20.957], - [19.514, -1.564], - [11.823, 5.95], - [3.437, -9.631], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 3, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-21.862, 17.885], - [-9.38, 40.839], - [-6.915, -14.251], - [-10.368, 5.64], - [-25.224, -7.275], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 12, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-24.159, 12.674], - [113.019, 32.241], - [21.986, -29.805], - [17.357, -9.915], - [-16.004, -3.872], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 30, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [55.35, -4.914], - [129.556, -5.673], - [-3.271, -18.353], - [-13.529, 7.902], - [42.148, 1], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 48, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [34.167, -10.201], - [20.033, -35.22], - [10.099, -7.209], - [13.95, 35.083], - [26.183, -5.636], - ], - c: true, - }, - ], - }, - { - i: { x: 0.32, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 61, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [75.86, -3.345], - [-40.935, -18.354], - [42.881, 12.14], - [74.348, 24.549], - [70.369, 1.013], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 70, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [12.51, -7.277], - [-110.008, -19.184], - [-19.192, 3.494], - [20.236, 23.254], - [16.22, -0.587], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 84, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-3.126, -17.964], - [-61.192, -8.042], - [72.921, 0.195], - [59.046, -10.343], - [60.098, -29.814], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 93, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-14.241, 3.304], - [-30.454, 20.957], - [19.514, -1.564], - [11.823, 5.95], - [3.437, -9.631], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 103, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-21.861, 17.885], - [-9.38, 40.839], - [-6.915, -14.251], - [-10.368, 5.64], - [-25.224, -7.275], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 112, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-24.159, 12.674], - [113.019, 32.241], - [21.986, -29.805], - [17.357, -9.915], - [-16.004, -3.872], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 130, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [55.35, -4.914], - [129.556, -5.673], - [-3.271, -18.353], - [-13.529, 7.902], - [42.148, 1], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 148, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [34.167, -10.201], - [20.033, -35.22], - [10.099, -7.209], - [13.95, 35.083], - [26.183, -5.636], - ], - c: true, - }, - ], - }, - { - i: { x: 0.32, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 161, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [75.86, -3.345], - [-40.935, -18.354], - [42.881, 12.14], - [74.348, 24.549], - [70.369, 1.013], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 170, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [12.51, -7.277], - [-110.008, -19.184], - [-19.192, 3.494], - [20.236, 23.254], - [16.22, -0.587], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 184, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-3.126, -17.964], - [-61.192, -8.042], - [72.921, 0.195], - [59.046, -10.343], - [60.098, -29.814], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 193, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-14.241, 3.304], - [-30.454, 20.957], - [19.514, -1.564], - [11.823, 5.95], - [3.437, -9.631], - ], - c: true, - }, - ], - }, - { - t: 203, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-21.862, 17.885], - [-9.38, 40.839], - [-6.915, -14.251], - [-10.368, 5.64], - [-25.224, -7.275], - ], - c: true, - }, - ], - }, - ], - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [0, 0, 0, 1], ix: 4 }, - o: { a: 0, k: 20, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 2", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [790.902, 773.678], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 8", - np: 4, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: -2, - op: 201, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 4, - ty: 4, - nm: "Shape Layer 9", - parent: 1, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 0, - s: [141.25, 25, 0], - to: [-3.73, -1.383, 0], - ti: [-8.37, -1.955, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 38, - s: [146.62, 14.455, 0], - to: [5.12, 2.58, 0], - ti: [5.195, 1.594, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 75, - s: [150.18, 5.281, 0], - to: [-5.195, -1.594, 0], - ti: [-0.953, -5.614, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 106, - s: [134.453, 14.614, 0], - to: [0.953, 5.614, 0], - ti: [-3.875, 4.525, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 137, - s: [149.75, 10.975, 0], - to: [3.875, -4.525, 0], - ti: [1.75, -5.25, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 170, - s: [140.625, 8.625, 0], - to: [-1.75, 5.25, 0], - ti: [11.125, -4.375, 0], - }, - { t: 199, s: [141.25, 25, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [197.25, -284, 0], ix: 1 }, - s: { a: 0, k: [82, 82, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [192.5, -319.5], - [250.5, -319.5], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { a: 0, k: [0, 0.47843137254901963, 1, 1], ix: 3 }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 10, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Shape 2", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [192.5, -298], - [313, -298], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "rp", - c: { a: 0, k: 3, ix: 1 }, - o: { a: 0, k: 0, ix: 2 }, - m: 1, - ix: 2, - tr: { - ty: "tr", - p: { a: 0, k: [0, 21], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 4 }, - so: { a: 0, k: 100, ix: 5 }, - eo: { a: 0, k: 100, ix: 6 }, - nm: "Transform", - }, - nm: "Repeater 1", - mn: "ADBE Vector Filter - Repeater", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.874463677406, 0.896885812283, 0.952941179276, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 10, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Shape 1", - np: 3, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-10.631, 0], - [0, -10.631], - [8.016, -3.698], - [-1.065, -13.634], - [13.375, 0], - [4.627, 5.177], - [1.051, 0.57], - [0, 8.437], - ], - o: [ - [10.631, 0], - [0, 8.766], - [-0.831, 0.384], - [-4.815, 6.616], - [-14.376, 0], - [0.627, -13.698], - [-7.554, -4.095], - [0, -10.631], - ], - v: [ - [-74, -32], - [-54.75, -12.75], - [-68.625, 11.021], - [-43.935, 27.259], - [-74, 40.25], - [-105.002, 26.948], - [-80.268, 10.573], - [-93.25, -12.75], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 3", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - d: 1, - ty: "el", - s: { a: 0, k: [93.5, 93.5], ix: 2 }, - p: { a: 0, k: [-74, 0], ix: 3 }, - nm: "Ellipse Path 2", - mn: "ADBE Vector Shape - Ellipse", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.874509871006, 0.898039281368, 0.95294123888, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 2", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "rc", - d: 1, - s: { a: 0, k: [267.5, 111], ix: 2 }, - p: { a: 0, k: [0, 0], ix: 3 }, - r: { a: 0, k: 10, ix: 4 }, - nm: "Rectangle Path 1", - mn: "ADBE Vector Shape - Rect", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "rc", - d: 1, - s: { a: 0, k: [267.5, 111], ix: 2 }, - p: { a: 0, k: [-6, 6], ix: 3 }, - r: { a: 0, k: 10, ix: 4 }, - nm: "Rectangle Path 2", - mn: "ADBE Vector Shape - Rect", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [0, 0, 0, 1], ix: 4 }, - o: { a: 0, k: 17, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 4", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [200.25, -287], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Rectangle 1", - np: 8, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 200, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 5, - ty: 4, - nm: "mail 6", - parent: 1, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 22, - s: [15.427], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 56, - s: [-12.946], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 90, - s: [28.456], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 126, - s: [-12.946], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 167, - s: [24], - }, - { t: 199, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 0, - s: [-192.052, -110.008, 0], - to: [2.552, 4.383, 0], - ti: [6.537, 13.177, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 51, - s: [-171.912, -105.677, 0], - to: [-6.537, -13.177, 0], - ti: [6.357, -1.675, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 85, - s: [-191.107, -93.45, 0], - to: [-6.357, 1.675, 0], - ti: [8.571, -10.521, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 124, - s: [-212.946, -117.604, 0], - to: [-8.571, 10.521, 0], - ti: [9.927, 9.883, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 163, - s: [-174.552, -122.008, 0], - to: [-9.927, -9.883, 0], - ti: [-4.323, -4.992, 0], - }, - { t: 199, s: [-192.052, -110.008, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [2153.478, 680.843, 0], ix: 1 }, - s: { a: 0, k: [67, 67, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [4.932, 0], - [0, 5.066], - [-8.798, 0], - [-1.066, -0.267], - ], - o: [ - [-1.2, 7.732], - [-4.398, 0], - [0, -10.264], - [1.732, 0], - [0, 0], - ], - v: [ - [6.604, -0.329], - [-4.726, 13.668], - [-11.391, 5.403], - [4.339, -13.526], - [8.47, -12.993], - ], - c: true, - }, - ix: 2, - }, - nm: "@", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [6.798, 0], - [0, 22.262], - [-20.396, 0], - [0, -17.33], - [5.73, 0.205], - [-1.333, 7.865], - [0, 0], - [5.865, 0], - [0, -16.263], - [-8.665, 0], - [-4.133, 6.799], - [0, 0], - [-6.266, 0], - [0, 19.462], - [23.461, 0], - [0, -27.194], - [-22.127, 0], - [-7.998, 3.599], - ], - o: [ - [-5.333, 2.799], - [-19.862, 0], - [0, -25.461], - [20.662, 0], - [0, 15.33], - [-3.732, -0.133], - [0, 0], - [-3.333, -1.866], - [-19.196, 0], - [0, 10.931], - [7.065, 0], - [0, 0], - [0.667, 7.065], - [14.396, 0], - [0, -22.395], - [-30.127, 0], - [0, 26.128], - [9.465, 0], - [0, 0], - ], - v: [ - [17.936, 34.33], - [-1.393, 38.596], - [-35.519, 3.67], - [2.74, -37.787], - [34.598, -6.994], - [21.668, 15.534], - [18.336, 3.937], - [22.335, -20.724], - [6.472, -24.057], - [-24.722, 7.003], - [-9.791, 24.332], - [7.405, 14.068], - [7.671, 14.068], - [19.136, 24.332], - [44.463, -7.394], - [4.206, -45.919], - [-45.65, 4.87], - [-4.06, 46.861], - [20.335, 42.062], - ], - c: true, - }, - ix: 2, - }, - nm: "@ 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [0, 0.47843137254901963, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 3", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - d: 1, - ty: "el", - s: { a: 0, k: [126.905, 126.905], ix: 2 }, - p: { a: 0, k: [0, 0], ix: 3 }, - nm: "Ellipse Path 1", - mn: "ADBE Vector Shape - Ellipse", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.885428667068, 0.920325279236, 0.960784316063, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 2", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [2140.425, 652.021], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 5", - np: 5, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - d: 1, - ty: "el", - s: { a: 0, k: [126.905, 126.905], ix: 2 }, - p: { a: 0, k: [-4, 11], ix: 3 }, - nm: "Ellipse Path 1", - mn: "ADBE Vector Shape - Ellipse", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [0, 0, 0, 1], ix: 4 }, - o: { a: 0, k: 18, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 2", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [2140.425, 652.021], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 200, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 6, - ty: 4, - nm: "mail 3", - parent: 1, - sr: 1, - ks: { - o: { a: 0, k: 99, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [183.055, -315.211, 0], ix: 2 }, - a: { a: 0, k: [2153.478, 680.843, 0], ix: 1 }, - s: { a: 0, k: [56, 56, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 1, y: 0 }, - t: 5, - s: [ - { - i: [ - [1.212, 0.293], - [-0.053, 1.063], - [-0.465, 1.092], - [-2.964, 0.923], - [0, 0], - [-2.408, -1.462], - [-0.75, -0.938], - [9.093, -10.048], - ], - o: [ - [-13.028, -3.146], - [0.06, -1.209], - [1.127, -2.65], - [0, 0], - [2.9, -0.902], - [1.008, 0.612], - [0.699, 0.874], - [-0.845, 0.934], - ], - v: [ - [11.967, 33.017], - [-77.516, 10.287], - [-76.716, 6.809], - [-70.385, 1.081], - [66.005, -41.368], - [74.313, -40.349], - [76.976, -38.011], - [15.15, 32.025], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 10, - s: [ - { - i: [ - [1.113, -0.027], - [12.953, -2.709], - [-0.38, 0.852], - [-2.964, 0.923], - [0, 0], - [-2.227, -0.88], - [0.429, -0.708], - [10.164, -6.61], - ], - o: [ - [-11.959, 0.286], - [-0.893, -0.313], - [0.756, -1.716], - [0, 0], - [2.9, -0.903], - [0.932, 0.368], - [-12.428, 5.23], - [-0.945, 0.614], - ], - v: [ - [4.34, 8.53], - [-73.957, 7.989], - [-75.054, 6.191], - [-70.014, 2.274], - [66.374, -40.184], - [72.789, -39.988], - [73.406, -38.058], - [7.523, 7.538], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 11, - s: [ - { - i: [ - [1.022, -0.318], - [22.981, -7.154], - [-0.472, 0.148], - [-2.964, 0.923], - [0, 0], - [-1.781, 0.553], - [1.404, -0.438], - [11.142, -3.471], - ], - o: [ - [-10.983, 3.42], - [-1.629, 0.507], - [0.69, -0.217], - [0, 0], - [2.899, -0.903], - [0.745, -0.231], - [-23.438, 7.303], - [-1.036, 0.323], - ], - v: [ - [-4.379, -19.464], - [-72.465, 1.734], - [-74.732, 2.437], - [-70.385, 1.081], - [65.996, -41.397], - [70.589, -42.826], - [69.196, -42.389], - [-1.196, -20.456], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 12, - s: [ - { - i: [ - [0, 0], - [0.003, -0.005], - [-0.001, -0.001], - [-0.001, 0], - [0, 0], - [0.001, 0.003], - [0, 0], - [0.002, 0], - ], - o: [ - [-0.002, 0.002], - [0, 0], - [0.001, 0.002], - [0, 0], - [0.001, 0], - [0, -0.001], - [-0.005, -0.003], - [0, 0], - ], - v: [ - [-73.926, 5.759], - [-73.934, 5.774], - [-73.933, 5.778], - [-73.932, 5.781], - [-73.908, 5.773], - [-73.908, 5.77], - [-73.909, 5.767], - [-73.925, 5.759], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 87, - s: [ - { - i: [ - [0, 0], - [0.003, -0.005], - [-0.001, -0.001], - [0, 0], - [0, 0], - [0.001, 0.003], - [0, 0], - [0.002, 0], - ], - o: [ - [-0.001, 0.002], - [0, 0], - [0.001, 0.002], - [0, 0], - [0, 0], - [0, -0.001], - [-0.005, -0.003], - [0, 0], - ], - v: [ - [-73.926, 5.759], - [-73.934, 5.774], - [-73.933, 5.778], - [-73.932, 5.781], - [-73.908, 5.773], - [-73.908, 5.77], - [-73.909, 5.767], - [-73.925, 5.759], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 88, - s: [ - { - i: [ - [1.022, -0.318], - [22.981, -7.154], - [-0.472, 0.148], - [-2.964, 0.923], - [0, 0], - [-1.781, 0.552], - [1.404, -0.438], - [11.142, -3.471], - ], - o: [ - [-10.983, 3.42], - [-1.629, 0.507], - [0.69, -0.217], - [0, 0], - [2.899, -0.903], - [0.745, -0.231], - [-23.438, 7.303], - [-1.036, 0.323], - ], - v: [ - [-4.379, -19.464], - [-72.465, 1.734], - [-74.732, 2.437], - [-70.385, 1.081], - [65.996, -41.397], - [70.589, -42.826], - [69.197, -42.389], - [-1.196, -20.456], - ], - c: true, - }, - ], - }, - { - i: { x: 0, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 89, - s: [ - { - i: [ - [1.113, -0.027], - [12.953, -2.709], - [-0.38, 0.852], - [-2.964, 0.923], - [0, 0], - [-2.227, -0.88], - [0.429, -0.708], - [10.164, -6.61], - ], - o: [ - [-11.959, 0.286], - [-0.893, -0.313], - [0.756, -1.716], - [0, 0], - [2.9, -0.903], - [0.932, 0.368], - [-12.428, 5.23], - [-0.945, 0.614], - ], - v: [ - [4.34, 8.53], - [-73.957, 7.989], - [-75.054, 6.191], - [-70.014, 2.274], - [66.374, -40.184], - [72.789, -39.988], - [73.406, -38.058], - [7.523, 7.538], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 94, - s: [ - { - i: [ - [1.212, 0.293], - [-0.052, 1.063], - [-0.465, 1.092], - [-2.964, 0.923], - [0, 0], - [-2.408, -1.462], - [-0.75, -0.938], - [9.093, -10.048], - ], - o: [ - [-13.028, -3.146], - [0.06, -1.209], - [1.127, -2.65], - [0, 0], - [2.9, -0.902], - [1.008, 0.612], - [0.699, 0.874], - [-0.845, 0.934], - ], - v: [ - [11.967, 33.017], - [-77.516, 10.287], - [-76.716, 6.809], - [-70.385, 1.081], - [66.005, -41.368], - [74.313, -40.349], - [76.976, -38.011], - [15.15, 32.025], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 1, y: 0 }, - t: 106, - s: [ - { - i: [ - [1.212, 0.293], - [-0.052, 1.063], - [-0.465, 1.092], - [-2.964, 0.923], - [0, 0], - [-2.408, -1.462], - [-0.75, -0.938], - [9.093, -10.048], - ], - o: [ - [-13.028, -3.146], - [0.06, -1.209], - [1.127, -2.65], - [0, 0], - [2.9, -0.902], - [1.008, 0.612], - [0.699, 0.874], - [-0.845, 0.934], - ], - v: [ - [11.967, 33.017], - [-77.516, 10.287], - [-76.716, 6.809], - [-70.385, 1.081], - [66.005, -41.368], - [74.313, -40.349], - [76.976, -38.011], - [15.15, 32.025], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 111, - s: [ - { - i: [ - [1.113, -0.027], - [12.953, -2.709], - [-0.38, 0.852], - [-2.964, 0.923], - [0, 0], - [-2.227, -0.88], - [0.429, -0.708], - [10.164, -6.61], - ], - o: [ - [-11.959, 0.286], - [-0.893, -0.313], - [0.756, -1.716], - [0, 0], - [2.9, -0.903], - [0.932, 0.368], - [-12.428, 5.23], - [-0.945, 0.614], - ], - v: [ - [4.34, 8.53], - [-73.957, 7.989], - [-75.054, 6.191], - [-70.014, 2.274], - [66.374, -40.184], - [72.789, -39.988], - [73.406, -38.058], - [7.523, 7.538], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 112, - s: [ - { - i: [ - [1.022, -0.318], - [22.981, -7.154], - [-0.472, 0.148], - [-2.964, 0.923], - [0, 0], - [-1.781, 0.552], - [1.404, -0.438], - [11.142, -3.471], - ], - o: [ - [-10.983, 3.42], - [-1.629, 0.507], - [0.69, -0.217], - [0, 0], - [2.899, -0.903], - [0.745, -0.231], - [-23.438, 7.303], - [-1.036, 0.323], - ], - v: [ - [-4.379, -19.464], - [-72.465, 1.734], - [-74.732, 2.437], - [-70.385, 1.081], - [65.996, -41.397], - [70.589, -42.826], - [69.197, -42.389], - [-1.196, -20.456], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 113, - s: [ - { - i: [ - [0, 0], - [0.003, -0.005], - [-0.001, -0.001], - [0, 0], - [0, 0], - [0.001, 0.003], - [0, 0], - [0.002, 0], - ], - o: [ - [-0.001, 0.002], - [0, 0], - [0.001, 0.002], - [0, 0], - [0, 0], - [0, -0.001], - [-0.005, -0.003], - [0, 0], - ], - v: [ - [-73.926, 5.759], - [-73.934, 5.774], - [-73.933, 5.778], - [-73.932, 5.781], - [-73.908, 5.773], - [-73.908, 5.77], - [-73.909, 5.767], - [-73.925, 5.759], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 188, - s: [ - { - i: [ - [0, 0], - [0.003, -0.005], - [-0.001, -0.001], - [0, 0], - [0, 0], - [0.001, 0.003], - [0, 0], - [0.002, 0], - ], - o: [ - [-0.001, 0.002], - [0, 0], - [0.001, 0.002], - [0, 0], - [0, 0], - [0, -0.001], - [-0.005, -0.003], - [0, 0], - ], - v: [ - [-73.926, 5.759], - [-73.934, 5.774], - [-73.933, 5.778], - [-73.932, 5.781], - [-73.908, 5.773], - [-73.908, 5.77], - [-73.909, 5.767], - [-73.925, 5.759], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 189, - s: [ - { - i: [ - [1.022, -0.318], - [22.981, -7.154], - [-0.472, 0.148], - [-2.964, 0.923], - [0, 0], - [-1.781, 0.552], - [1.404, -0.438], - [11.142, -3.471], - ], - o: [ - [-10.983, 3.42], - [-1.629, 0.507], - [0.69, -0.217], - [0, 0], - [2.899, -0.903], - [0.745, -0.231], - [-23.438, 7.303], - [-1.036, 0.323], - ], - v: [ - [-4.379, -19.464], - [-72.465, 1.734], - [-74.732, 2.437], - [-70.385, 1.081], - [65.996, -41.397], - [70.589, -42.826], - [69.197, -42.389], - [-1.196, -20.456], - ], - c: true, - }, - ], - }, - { - i: { x: 0, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 190, - s: [ - { - i: [ - [1.113, -0.027], - [12.953, -2.709], - [-0.38, 0.852], - [-2.964, 0.923], - [0, 0], - [-2.227, -0.88], - [0.429, -0.708], - [10.164, -6.61], - ], - o: [ - [-11.959, 0.286], - [-0.893, -0.313], - [0.756, -1.716], - [0, 0], - [2.9, -0.903], - [0.932, 0.368], - [-12.428, 5.23], - [-0.945, 0.614], - ], - v: [ - [4.34, 8.53], - [-73.957, 7.989], - [-75.054, 6.191], - [-70.014, 2.274], - [66.374, -40.184], - [72.789, -39.988], - [73.406, -38.058], - [7.523, 7.538], - ], - c: true, - }, - ], - }, - { - t: 195, - s: [ - { - i: [ - [1.212, 0.293], - [-0.052, 1.063], - [-0.465, 1.092], - [-2.964, 0.923], - [0, 0], - [-2.408, -1.462], - [-0.75, -0.938], - [9.093, -10.048], - ], - o: [ - [-13.028, -3.146], - [0.06, -1.209], - [1.127, -2.65], - [0, 0], - [2.9, -0.902], - [1.008, 0.612], - [0.699, 0.874], - [-0.845, 0.934], - ], - v: [ - [11.967, 33.017], - [-77.516, 10.287], - [-76.716, 6.809], - [-70.385, 1.081], - [66.005, -41.368], - [74.313, -40.349], - [76.976, -38.011], - [15.15, 32.025], - ], - c: true, - }, - ], - }, - ], - ix: 2, - }, - nm: "Path 6", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.401014983654, 0.635570943356, 0.964705884457, 1], - ix: 4, - }, - o: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 10, - s: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 11, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 87, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 88, - s: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 111, - s: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 112, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 188, - s: [0], - }, - { t: 189, s: [100] }, - ], - ix: 5, - }, - r: 1, - bm: 0, - nm: "Fill 6", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [4.2, -1.308], - [0, 0], - [2.5, 3.352], - [0, 0], - [-2.717, 0.813], - [0, 0], - ], - o: [ - [-0.18, 4.162], - [0, 0], - [-4.22, 1.315], - [0, 0], - [0, 0], - [2.717, -0.813], - [0, 0], - ], - v: [ - [103.625, 47.302], - [96.485, 56.565], - [-39.905, 99.014], - [-51.065, 95.387], - [5.902, 26.402], - [11.27, 22.465], - [17.541, 22.927], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 5", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.349019616842, 0.592156887054, 0.933333396912, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 5", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ind: 4, - ty: "sh", - ix: 5, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [4.2, -1.308], - [0, 0], - [2.53, 3.45], - [0, 0], - [-2.717, 0.812], - [0, 0], - ], - o: [ - [-0.149, 4.26], - [0, 0], - [-4.22, 1.315], - [0, 0], - [0, 0], - [2.717, -0.812], - [0, 0], - ], - v: [ - [103.573, 47.134], - [96.485, 56.565], - [-39.905, 99.013], - [-51.118, 95.217], - [5.469, 25.011], - [10.82, 21.02], - [17.108, 21.54], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.1254902035, 0.1254902035, 0.1254902035, 1], - ix: 4, - }, - o: { a: 0, k: 30, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 2", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ind: 6, - ty: "sh", - ix: 7, - ks: { - a: 0, - k: { - i: [ - [-1.69, -5.354], - [0, 0], - [0.05, -1.142], - [4.2, -1.308], - [0, 0], - [2.5, 3.352], - [0.36, 1.136], - [0, 0], - [-6.374, -1.622], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0.36, 1.157], - [-0.18, 4.162], - [0, 0], - [-4.22, 1.315], - [-0.68, -0.903], - [0, 0], - [-1.67, -5.372], - [0, 0], - [0, 0], - [4.139, -4.613], - ], - v: [ - [78.958, -33.99], - [103.175, 43.824], - [103.625, 47.302], - [96.485, 56.565], - [-39.905, 99.014], - [-51.065, 95.387], - [-52.635, 92.318], - [-76.841, 14.537], - [-68.329, 7.683], - [12.317, 29.181], - [68.061, -34.766], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [0, 0.47843137254901963, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 4", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [1801.139, 934.164], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [594, 594], ix: 3 }, - r: { a: 0, k: 17.3, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "front", - np: 8, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [1741.752, 1155.556], - [1787.515, 1141.378], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 6", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [1746.435, 1170.589], - [1844.124, 1140.151], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 5", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "rp", - c: { a: 0, k: 4, ix: 1 }, - o: { a: 0, k: 0, ix: 2 }, - m: 1, - ix: 3, - tr: { - ty: "tr", - p: { a: 0, k: [5, 15], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 4 }, - so: { a: 0, k: 100, ix: 5 }, - eo: { a: 0, k: 100, ix: 6 }, - nm: "Transform", - }, - nm: "Repeater 1", - mn: "ADBE Vector Filter - Repeater", - hd: false, - }, - { - ty: "tm", - s: { a: 0, k: 0, ix: 1 }, - e: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 17, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 46, - s: [100], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 105, - s: [100], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 106, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 118, - s: [0], - }, - { t: 147, s: [100] }, - ], - ix: 2, - }, - o: { a: 0, k: 0, ix: 3 }, - m: 2, - ix: 4, - nm: "Trim Paths 1", - mn: "ADBE Vector Filter - Trim", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.750726640224, 0.811723232269, 0.886274516582, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 5, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [-1792, -1153], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 5, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-1.152, -3.69], - [0, 0], - [3.69, -1.152], - [0, 0], - [1.152, 3.69], - [0, 0], - [-3.69, 1.152], - [0, 0], - ], - o: [ - [0, 0], - [1.152, 3.69], - [0, 0], - [-3.69, 1.152], - [0, 0], - [-1.152, -3.69], - [0, 0], - [3.69, -1.152], - ], - v: [ - [1861.208, 1111.749], - [1886.121, 1191.558], - [1881.524, 1200.325], - [1753.446, 1240.409], - [1744.678, 1235.813], - [1719.765, 1156.005], - [1724.362, 1147.237], - [1852.441, 1107.153], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 5", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.926412940025, 0.952468276024, 0.984313726425, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 3", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [-1792, -1153], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "tr", - p: { - a: 1, - k: [ - { - i: { x: 0, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 14, - s: [1801.139, 977.164], - to: [0, -35.5], - ti: [0, 35.5], - }, - { t: 29, s: [1801.139, 764.164], h: 1 }, - { - i: { x: 0, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 72, - s: [1801.139, 764.164], - to: [0, 35.5], - ti: [0, -35.5], - }, - { - i: { x: 0.833, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 87, - s: [1801.139, 977.164], - to: [0, 35.5], - ti: [0, 0], - }, - { - i: { x: 0, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 115, - s: [1801.139, 977.164], - to: [0, -35.5], - ti: [0, 35.5], - }, - { t: 130, s: [1801.139, 764.164], h: 1 }, - { - i: { x: 0, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 173, - s: [1801.139, 764.164], - to: [0, 35.5], - ti: [0, -35.5], - }, - { t: 188, s: [1801.139, 977.164] }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [594, 594], ix: 3 }, - r: { a: 0, k: 17.3, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 5", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 10, - s: [ - { - i: [ - [-0.758, -2.403], - [0, 0], - [0.05, -1.142], - [4.2, -1.308], - [0, 0], - [2.5, 3.352], - [0.36, 1.136], - [0, 0], - [-0.788, 2.059], - [-14.49, 5.196], - [-2.265, 0.603], - [-2.109, -1.321], - ], - o: [ - [0, 0], - [0.36, 1.157], - [-0.18, 4.162], - [0, 0], - [-4.22, 1.315], - [-0.68, -0.903], - [0, 0], - [-0.707, -2.273], - [0.933, -2.439], - [2.197, -0.788], - [14.919, -3.974], - [1.978, 1.239], - ], - v: [ - [78.735, -34.708], - [103.175, 43.824], - [103.625, 47.302], - [96.485, 56.565], - [-39.905, 99.014], - [-51.065, 95.387], - [-52.635, 92.318], - [-77.065, 13.819], - [-76.632, 7.874], - [-6.935, -15.232], - [0.09, -17.423], - [74.435, -40.273], - ], - c: true, - }, - ], - }, - { - i: { x: 0, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 11, - s: [ - { - i: [ - [-0.758, -2.403], - [0, 0], - [0.05, -1.142], - [4.2, -1.308], - [0, 0], - [2.5, 3.352], - [0.36, 1.136], - [0, 0], - [-0.788, 2.059], - [-13.999, 6.772], - [-2.338, 0.367], - [-2.109, -1.321], - ], - o: [ - [0, 0], - [0.36, 1.157], - [-0.18, 4.162], - [0, 0], - [-4.22, 1.315], - [-0.68, -0.903], - [0, 0], - [-0.707, -2.273], - [0.933, -2.439], - [2.122, -1.027], - [15.402, -2.421], - [1.978, 1.239], - ], - v: [ - [78.735, -34.708], - [103.175, 43.824], - [103.625, 47.302], - [96.485, 56.565], - [-39.905, 99.014], - [-51.065, 95.387], - [-52.635, 92.318], - [-77.065, 13.819], - [-76.632, 7.874], - [-11.418, -32.357], - [-4.394, -34.553], - [74.435, -40.273], - ], - c: true, - }, - ], - }, - { - i: { x: 0, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 18, - s: [ - { - i: [ - [-0.758, -2.403], - [0, 0], - [0.05, -1.142], - [4.2, -1.308], - [0, 0], - [2.5, 3.352], - [0.36, 1.136], - [0, 0], - [-0.788, 2.059], - [-11.355, 15.263], - [-2.734, -0.902], - [-2.109, -1.321], - ], - o: [ - [0, 0], - [0.36, 1.157], - [-0.18, 4.162], - [0, 0], - [-4.22, 1.315], - [-0.68, -0.903], - [0, 0], - [-0.707, -2.273], - [0.933, -2.439], - [1.721, -2.314], - [18.008, 5.945], - [1.978, 1.239], - ], - v: [ - [78.735, -34.708], - [103.175, 43.824], - [103.625, 47.302], - [96.485, 56.565], - [-39.905, 99.014], - [-51.065, 95.387], - [-52.635, 92.318], - [-77.065, 13.819], - [-76.632, 7.874], - [-21.154, -67.958], - [-14.138, -70.18], - [74.435, -40.273], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 1, y: 0 }, - t: 81, - s: [ - { - i: [ - [-0.758, -2.403], - [0, 0], - [0.05, -1.142], - [4.2, -1.308], - [0, 0], - [2.5, 3.352], - [0.36, 1.136], - [0, 0], - [-0.788, 2.059], - [-11.355, 15.263], - [-2.734, -0.902], - [-2.109, -1.321], - ], - o: [ - [0, 0], - [0.36, 1.157], - [-0.18, 4.162], - [0, 0], - [-4.22, 1.315], - [-0.68, -0.903], - [0, 0], - [-0.707, -2.273], - [0.933, -2.439], - [1.721, -2.314], - [18.008, 5.945], - [1.978, 1.239], - ], - v: [ - [78.735, -34.708], - [103.175, 43.824], - [103.625, 47.302], - [96.485, 56.565], - [-39.905, 99.014], - [-51.065, 95.387], - [-52.635, 92.318], - [-77.065, 13.819], - [-76.632, 7.874], - [-21.154, -67.958], - [-14.138, -70.18], - [74.435, -40.273], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 88, - s: [ - { - i: [ - [-0.758, -2.403], - [0, 0], - [0.05, -1.142], - [4.2, -1.308], - [0, 0], - [2.5, 3.352], - [0.36, 1.136], - [0, 0], - [-0.788, 2.059], - [-13.999, 6.772], - [-2.338, 0.367], - [-2.109, -1.321], - ], - o: [ - [0, 0], - [0.36, 1.157], - [-0.18, 4.162], - [0, 0], - [-4.22, 1.315], - [-0.68, -0.903], - [0, 0], - [-0.707, -2.273], - [0.933, -2.439], - [2.122, -1.027], - [15.402, -2.421], - [1.978, 1.239], - ], - v: [ - [78.735, -34.708], - [103.175, 43.824], - [103.625, 47.302], - [96.485, 56.565], - [-39.905, 99.014], - [-51.065, 95.387], - [-52.635, 92.318], - [-77.065, 13.819], - [-76.632, 7.874], - [-11.418, -32.357], - [-4.394, -34.553], - [74.435, -40.273], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 89, - s: [ - { - i: [ - [-0.758, -2.403], - [0, 0], - [0.05, -1.142], - [4.2, -1.308], - [0, 0], - [2.5, 3.352], - [0.36, 1.136], - [0, 0], - [-0.788, 2.059], - [-14.49, 5.196], - [-2.265, 0.603], - [-2.109, -1.321], - ], - o: [ - [0, 0], - [0.36, 1.157], - [-0.18, 4.162], - [0, 0], - [-4.22, 1.315], - [-0.68, -0.903], - [0, 0], - [-0.707, -2.273], - [0.933, -2.439], - [2.197, -0.788], - [14.919, -3.974], - [1.978, 1.239], - ], - v: [ - [78.735, -34.708], - [103.175, 43.824], - [103.625, 47.302], - [96.485, 56.565], - [-39.905, 99.014], - [-51.065, 95.387], - [-52.635, 92.318], - [-77.065, 13.819], - [-76.632, 7.874], - [-6.935, -15.232], - [0.09, -17.423], - [74.435, -40.273], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 111, - s: [ - { - i: [ - [-0.758, -2.403], - [0, 0], - [0.05, -1.142], - [4.2, -1.308], - [0, 0], - [2.5, 3.352], - [0.36, 1.136], - [0, 0], - [-0.788, 2.059], - [-14.49, 5.196], - [-2.265, 0.603], - [-2.109, -1.321], - ], - o: [ - [0, 0], - [0.36, 1.157], - [-0.18, 4.162], - [0, 0], - [-4.22, 1.315], - [-0.68, -0.903], - [0, 0], - [-0.707, -2.273], - [0.933, -2.439], - [2.197, -0.788], - [14.919, -3.974], - [1.978, 1.239], - ], - v: [ - [78.735, -34.708], - [103.175, 43.824], - [103.625, 47.302], - [96.485, 56.565], - [-39.905, 99.014], - [-51.065, 95.387], - [-52.635, 92.318], - [-77.065, 13.819], - [-76.632, 7.874], - [-6.935, -15.232], - [0.09, -17.423], - [74.435, -40.273], - ], - c: true, - }, - ], - }, - { - i: { x: 0, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 112, - s: [ - { - i: [ - [-0.758, -2.403], - [0, 0], - [0.05, -1.142], - [4.2, -1.308], - [0, 0], - [2.5, 3.352], - [0.36, 1.136], - [0, 0], - [-0.788, 2.059], - [-13.999, 6.772], - [-2.338, 0.367], - [-2.109, -1.321], - ], - o: [ - [0, 0], - [0.36, 1.157], - [-0.18, 4.162], - [0, 0], - [-4.22, 1.315], - [-0.68, -0.903], - [0, 0], - [-0.707, -2.273], - [0.933, -2.439], - [2.122, -1.027], - [15.402, -2.421], - [1.978, 1.239], - ], - v: [ - [78.735, -34.708], - [103.175, 43.824], - [103.625, 47.302], - [96.485, 56.565], - [-39.905, 99.014], - [-51.065, 95.387], - [-52.635, 92.318], - [-77.065, 13.819], - [-76.632, 7.874], - [-11.418, -32.357], - [-4.394, -34.553], - [74.435, -40.273], - ], - c: true, - }, - ], - }, - { - i: { x: 0, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 119, - s: [ - { - i: [ - [-0.758, -2.403], - [0, 0], - [0.05, -1.142], - [4.2, -1.308], - [0, 0], - [2.5, 3.352], - [0.36, 1.136], - [0, 0], - [-0.788, 2.059], - [-11.355, 15.263], - [-2.734, -0.902], - [-2.109, -1.321], - ], - o: [ - [0, 0], - [0.36, 1.157], - [-0.18, 4.162], - [0, 0], - [-4.22, 1.315], - [-0.68, -0.903], - [0, 0], - [-0.707, -2.273], - [0.933, -2.439], - [1.721, -2.314], - [18.008, 5.945], - [1.978, 1.239], - ], - v: [ - [78.735, -34.708], - [103.175, 43.824], - [103.625, 47.302], - [96.485, 56.565], - [-39.905, 99.014], - [-51.065, 95.387], - [-52.635, 92.318], - [-77.065, 13.819], - [-76.632, 7.874], - [-21.154, -67.958], - [-14.138, -70.18], - [74.435, -40.273], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 1, y: 0 }, - t: 182, - s: [ - { - i: [ - [-0.758, -2.403], - [0, 0], - [0.05, -1.142], - [4.2, -1.308], - [0, 0], - [2.5, 3.352], - [0.36, 1.136], - [0, 0], - [-0.788, 2.059], - [-11.355, 15.263], - [-2.734, -0.902], - [-2.109, -1.321], - ], - o: [ - [0, 0], - [0.36, 1.157], - [-0.18, 4.162], - [0, 0], - [-4.22, 1.315], - [-0.68, -0.903], - [0, 0], - [-0.707, -2.273], - [0.933, -2.439], - [1.721, -2.314], - [18.008, 5.945], - [1.978, 1.239], - ], - v: [ - [78.735, -34.708], - [103.175, 43.824], - [103.625, 47.302], - [96.485, 56.565], - [-39.905, 99.014], - [-51.065, 95.387], - [-52.635, 92.318], - [-77.065, 13.819], - [-76.632, 7.874], - [-21.154, -67.958], - [-14.138, -70.18], - [74.435, -40.273], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 189, - s: [ - { - i: [ - [-0.758, -2.403], - [0, 0], - [0.05, -1.142], - [4.2, -1.308], - [0, 0], - [2.5, 3.352], - [0.36, 1.136], - [0, 0], - [-0.788, 2.059], - [-13.999, 6.772], - [-2.338, 0.367], - [-2.109, -1.321], - ], - o: [ - [0, 0], - [0.36, 1.157], - [-0.18, 4.162], - [0, 0], - [-4.22, 1.315], - [-0.68, -0.903], - [0, 0], - [-0.707, -2.273], - [0.933, -2.439], - [2.122, -1.027], - [15.402, -2.421], - [1.978, 1.239], - ], - v: [ - [78.735, -34.708], - [103.175, 43.824], - [103.625, 47.302], - [96.485, 56.565], - [-39.905, 99.014], - [-51.065, 95.387], - [-52.635, 92.318], - [-77.065, 13.819], - [-76.632, 7.874], - [-11.418, -32.357], - [-4.394, -34.553], - [74.435, -40.273], - ], - c: true, - }, - ], - }, - { - t: 190, - s: [ - { - i: [ - [-0.758, -2.403], - [0, 0], - [0.05, -1.142], - [4.2, -1.308], - [0, 0], - [2.5, 3.352], - [0.36, 1.136], - [0, 0], - [-0.788, 2.059], - [-14.49, 5.196], - [-2.265, 0.603], - [-2.109, -1.321], - ], - o: [ - [0, 0], - [0.36, 1.157], - [-0.18, 4.162], - [0, 0], - [-4.22, 1.315], - [-0.68, -0.903], - [0, 0], - [-0.707, -2.273], - [0.933, -2.439], - [2.197, -0.788], - [14.919, -3.974], - [1.978, 1.239], - ], - v: [ - [78.735, -34.708], - [103.175, 43.824], - [103.625, 47.302], - [96.485, 56.565], - [-39.905, 99.014], - [-51.065, 95.387], - [-52.635, 92.318], - [-77.065, 13.819], - [-76.632, 7.874], - [-6.935, -15.232], - [0.09, -17.423], - [74.435, -40.273], - ], - c: true, - }, - ], - }, - ], - ix: 2, - }, - nm: "Path 4", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.174548238516, 0.452203959227, 0.890196084976, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 3", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [1801.139, 934.164], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [594, 594], ix: 3 }, - r: { a: 0, k: 17.3, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "back 2", - np: 2, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-0.758, -2.403], - [0, 0], - [0.05, -1.142], - [4.2, -1.308], - [0, 0], - [2.5, 3.352], - [0.36, 1.136], - [0, 0], - [-0.788, 2.059], - [-14.49, 5.196], - [-2.265, 0.603], - [-2.109, -1.321], - ], - o: [ - [0, 0], - [0.36, 1.157], - [-0.18, 4.162], - [0, 0], - [-4.22, 1.315], - [-0.68, -0.903], - [0, 0], - [-0.707, -2.273], - [0.933, -2.439], - [2.197, -0.788], - [14.919, -3.974], - [1.978, 1.239], - ], - v: [ - [78.735, -34.708], - [103.175, 43.824], - [103.625, 47.302], - [96.485, 56.565], - [-39.905, 99.014], - [-51.065, 95.387], - [-52.635, 92.318], - [-77.065, 13.819], - [-76.632, 7.874], - [-6.935, -15.232], - [0.09, -17.423], - [74.435, -40.273], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 5", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [0, 0, 0, 1], ix: 4 }, - o: { a: 0, k: 20, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 4", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [1785.139, 947.164], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [594, 594], ix: 3 }, - r: { a: 0, k: 17.3, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "back", - np: 2, - cix: 2, - bm: 0, - ix: 4, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 204, - st: -23, - bm: 0, - }, - { - ddd: 0, - ind: 10, - ty: 4, - nm: "Shape Layer 1", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [480, 540, 0], ix: 2 }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { a: 0, k: [91, 91.91, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 0, - s: [ - { - i: [ - [-194.546, 54.872], - [46, -283], - [202.136, 0], - [53.627, 210.319], - ], - o: [ - [234, -66], - [-34.823, 214.236], - [-202.136, 0], - [-64, -251], - ], - v: [ - [-58, -395], - [382, -4], - [-28, 403], - [-382, 2], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 50, - s: [ - { - i: [ - [-201.9, 9.769], - [46, -283], - [198.441, -38.473], - [-30.055, 214.957], - ], - o: [ - [248, -12], - [-34.823, 214.236], - [-196, 38], - [46, -329], - ], - v: [ - [-86, -411], - [416, 26], - [-28, 369], - [-384, 26], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 99, - s: [ - { - i: [ - [-189.571, 70.156], - [-42, -269], - [198.441, -38.473], - [0, 217.048], - ], - o: [ - [254, -94], - [50.213, 321.602], - [-196, 38], - [0, -265], - ], - v: [ - [-86, -411], - [416, 26], - [-74, 309], - [-430, -32], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 150, - s: [ - { - i: [ - [-263.72, 24.16], - [16.66, -322.3], - [194.54, 24.06], - [76.48, 256.34], - ], - o: [ - [263.72, -24.16], - [-16.66, 322.3], - [-198.486, -24.548], - [-76.48, -256.34], - ], - v: [ - [-47.72, -384.84], - [380.66, 62.7], - [-56.54, 346.94], - [-379.52, 15.34], - ], - c: true, - }, - ], - }, - { - t: 199, - s: [ - { - i: [ - [-194.546, 54.872], - [46, -283], - [202.136, 0], - [53.627, 210.319], - ], - o: [ - [234, -66], - [-34.823, 214.236], - [-202.136, 0], - [-64, -251], - ], - v: [ - [-58, -395], - [382, -4], - [-28, 403], - [-382, 2], - ], - c: true, - }, - ], - }, - ], - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.23921568627450981, 0.5019607843137255, 0.9411764705882353, 1], - ix: 4, - }, - o: { a: 0, k: 20, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [2, -19], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Ellipse 3", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 0, - s: [ - { - i: [ - [-194.546, 54.872], - [46, -283], - [202.136, 0], - [53.627, 210.319], - ], - o: [ - [234, -66], - [-34.823, 214.236], - [-202.136, 0], - [-64, -251], - ], - v: [ - [-58, -395], - [382, -4], - [-28, 403], - [-382, 2], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 50, - s: [ - { - i: [ - [-201.9, 9.769], - [46, -283], - [198.441, -38.473], - [-30.055, 214.957], - ], - o: [ - [248, -12], - [-34.823, 214.236], - [-196, 38], - [46, -329], - ], - v: [ - [-86, -411], - [416, 26], - [-28, 369], - [-384, 26], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 99, - s: [ - { - i: [ - [-189.571, 70.156], - [-42, -269], - [198.441, -38.473], - [0, 217.048], - ], - o: [ - [254, -94], - [50.213, 321.602], - [-196, 38], - [0, -265], - ], - v: [ - [-86, -411], - [416, 26], - [-74, 309], - [-430, -32], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 150, - s: [ - { - i: [ - [-263.72, 24.16], - [16.66, -322.3], - [194.54, 24.06], - [76.48, 256.34], - ], - o: [ - [263.72, -24.16], - [-16.66, 322.3], - [-198.486, -24.548], - [-76.48, -256.34], - ], - v: [ - [-47.72, -384.84], - [380.66, 62.7], - [-56.54, 346.94], - [-379.52, 15.34], - ], - c: true, - }, - ], - }, - { - t: 199, - s: [ - { - i: [ - [-194.546, 54.872], - [46, -283], - [202.136, 0], - [53.627, 210.319], - ], - o: [ - [234, -66], - [-34.823, 214.236], - [-202.136, 0], - [-64, -251], - ], - v: [ - [-58, -395], - [382, -4], - [-28, 403], - [-382, 2], - ], - c: true, - }, - ], - }, - ], - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.23921568627450981, 0.5019607843137255, 0.9411764705882353, 1], - ix: 4, - }, - o: { a: 0, k: 15, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [2, -75], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [112, 112], ix: 3 }, - r: { a: 0, k: -174, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Ellipse 2", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 200, - st: 0, - bm: 0, - }, - ], - markers: [], -}; +export const contact_lottie = { + v: "5.7.1", + fr: 25, + ip: 0, + op: 200, + w: 1000, + h: 1000, + nm: "Work frome Home Mailing F 2", + ddd: 0, + assets: [], + layers: [ + { + ddd: 0, + ind: 1, + ty: 3, + nm: "Null 1", + sr: 1, + ks: { + o: { a: 0, k: 0, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [500, 604, 0], ix: 2 }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + ip: 0, + op: 200, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 2, + ty: 4, + nm: "mail 4", + parent: 1, + td: 1, + sr: 1, + ks: { + o: { a: 0, k: 99, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [183.055, -315.211, 0], ix: 2 }, + a: { a: 0, k: [2153.478, 680.843, 0], ix: 1 }, + s: { a: 0, k: [56, 56, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-0.758, -2.403], + [0, 0], + [0, 0], + [0, 0], + [-21.953, -7.476], + [-0.627, -0.393], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [9.299, 3.167], + [1.978, 1.239], + ], + v: [ + [78.735, -34.708], + [80.678, -28.718], + [-58.964, 72.319], + [-68.916, 40.154], + [58.006, -46.114], + [74.435, -40.273], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 4", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.174548238516, 0.452203959227, 0.890196084976, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 3", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [1801.139, 934.164], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [594, 594], ix: 3 }, + r: { a: 0, k: 17.3, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "back 2", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 204, + op: 204, + st: -23, + bm: 0, + hidden: 0, + }, + { + ddd: 0, + ind: 3, + ty: 4, + nm: "plane 2", + parent: 1, + tt: 2, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: -30.27, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.57, y: 1 }, + o: { x: 0.43, y: 0 }, + t: 0, + s: [-417.664, 54.901, 0], + to: [29.664, 67.099, 0], + ti: [8.659, 75.131, 0], + }, + { + i: { x: 0.57, y: 1 }, + o: { x: 0.444, y: 0 }, + t: 50, + s: [384.659, -254.869, 0], + to: [-6.219, -53.959, 0], + ti: [-29.664, -67.099, 0], + }, + { + i: { x: 0.57, y: 1 }, + o: { x: 0.43, y: 0 }, + t: 100, + s: [-417.664, 54.901, 0], + to: [29.664, 67.099, 0], + ti: [8.659, 75.131, 0], + }, + { + i: { x: 0.595, y: 1 }, + o: { x: 0.444, y: 0 }, + t: 150, + s: [384.659, -254.869, 0], + to: [-6.219, -53.959, 0], + ti: [-17.336, -57.901, 0], + }, + { t: 199, s: [-417.664, 54.901, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [816.438, 755.113, 0], ix: 1 }, + s: { a: 0, k: [65, 65, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: -7, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [18.514, -6.941], + [-33.276, 21.927], + [93.386, -0.562], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 3, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-6.915, -14.251], + [-9.38, 40.839], + [47.51, -30.24], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 12, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [21.986, -29.805], + [113.019, 32.241], + [42.547, -64.73], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 30, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-0.528, -14.328], + [129.556, -5.673], + [-49.243, -49.537], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 48, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [12.419, -8.39], + [20.033, -35.22], + [-88.885, -12.543], + ], + c: true, + }, + ], + }, + { + i: { x: 0.32, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 61, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [55.573, 8.709], + [-40.935, -18.354], + [28.444, 45.375], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 70, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [6.11, 3.203], + [-110.008, -19.184], + [7.061, 50.133], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 84, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [70.462, -13.025], + [-68.13, -5.656], + [131.7, 43.826], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 93, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [18.514, -6.941], + [-33.276, 21.927], + [93.387, -0.562], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 103, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-6.915, -14.251], + [-9.38, 40.839], + [47.51, -30.24], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 112, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [21.986, -29.805], + [113.019, 32.241], + [42.547, -64.73], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 130, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-0.528, -14.328], + [129.556, -5.673], + [-49.243, -49.537], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 148, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [12.419, -8.39], + [20.033, -35.22], + [-88.885, -12.543], + ], + c: true, + }, + ], + }, + { + i: { x: 0.32, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 161, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [55.573, 8.709], + [-40.935, -18.354], + [28.444, 45.375], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 170, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [6.11, 3.203], + [-110.008, -19.184], + [7.061, 50.133], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 184, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [70.462, -13.025], + [-68.13, -5.656], + [131.7, 43.826], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 193, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [18.514, -6.941], + [-33.276, 21.927], + [93.386, -0.562], + ], + c: true, + }, + ], + }, + { + t: 203, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-6.915, -14.251], + [-9.38, 40.839], + [47.51, -30.24], + ], + c: true, + }, + ], + }, + ], + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: -7, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-33.276, 21.927], + [5.299, -10.555], + [-29.451, -26.172], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 3, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-9.38, 40.839], + [-24.162, -11.06], + [-91.62, -22.853], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 12, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [113.019, 32.241], + [-1.135, -26.615], + [-113.019, -32.241], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 30, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [129.556, -5.673], + [7.207, -4.426], + [12.17, 72.534], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 48, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [20.033, -35.22], + [24.82, -6.359], + [108.512, 9], + ], + c: true, + }, + ], + }, + { + i: { x: 0.32, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 61, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-40.935, -18.354], + [69.258, 0.624], + [114.118, -27.203], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 70, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-110.008, -19.184], + [15.525, -1.402], + [54.092, -19.43], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 84, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-68.13, -5.656], + [63.129, -26.565], + [63.443, -50.053], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 93, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-33.276, 21.927], + [5.299, -10.555], + [-29.451, -26.172], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 103, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-9.38, 40.839], + [-24.162, -11.06], + [-91.62, -22.853], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 112, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [113.019, 32.241], + [-1.135, -26.615], + [-113.019, -32.241], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 130, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [129.556, -5.673], + [7.207, -4.426], + [12.17, 72.534], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 148, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [20.033, -35.22], + [24.82, -6.359], + [108.512, 9], + ], + c: true, + }, + ], + }, + { + i: { x: 0.32, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 161, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-40.935, -18.354], + [69.258, 0.624], + [114.118, -27.203], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 170, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-110.008, -19.184], + [15.525, -1.402], + [54.092, -19.43], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 184, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-68.13, -5.656], + [63.129, -26.565], + [63.443, -50.053], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 193, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-33.276, 21.927], + [5.299, -10.555], + [-29.451, -26.172], + ], + c: true, + }, + ], + }, + { + t: 203, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-9.38, 40.839], + [-24.162, -11.06], + [-91.62, -22.853], + ], + c: true, + }, + ], + }, + ], + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.828505811504, 0.876804486443, 0.931862146714, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ind: 3, + ty: "sh", + ix: 4, + ks: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: -7, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-14.241, 3.304], + [-30.454, 20.957], + [19.514, -1.564], + [11.823, 5.95], + [3.437, -9.631], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 3, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-21.862, 17.885], + [-9.38, 40.839], + [-6.915, -14.251], + [-10.368, 5.64], + [-25.224, -7.275], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 12, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-24.159, 12.674], + [113.019, 32.241], + [21.986, -29.805], + [17.357, -9.915], + [-16.004, -3.872], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 30, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [55.35, -4.914], + [129.556, -5.673], + [-3.271, -18.353], + [-13.529, 7.902], + [42.148, 1], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 48, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [34.167, -10.201], + [20.033, -35.22], + [10.099, -7.209], + [13.95, 35.083], + [26.183, -5.636], + ], + c: true, + }, + ], + }, + { + i: { x: 0.32, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 61, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [75.86, -3.345], + [-40.935, -18.354], + [42.881, 12.14], + [74.348, 24.549], + [70.369, 1.013], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 70, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [12.51, -7.277], + [-110.008, -19.184], + [-19.192, 3.494], + [20.236, 23.254], + [16.22, -0.587], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 84, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-3.126, -17.964], + [-61.192, -8.042], + [72.921, 0.195], + [59.046, -10.343], + [60.098, -29.814], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 93, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-14.241, 3.304], + [-30.454, 20.957], + [19.514, -1.564], + [11.823, 5.95], + [3.437, -9.631], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 103, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-21.861, 17.885], + [-9.38, 40.839], + [-6.915, -14.251], + [-10.368, 5.64], + [-25.224, -7.275], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 112, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-24.159, 12.674], + [113.019, 32.241], + [21.986, -29.805], + [17.357, -9.915], + [-16.004, -3.872], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 130, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [55.35, -4.914], + [129.556, -5.673], + [-3.271, -18.353], + [-13.529, 7.902], + [42.148, 1], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 148, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [34.167, -10.201], + [20.033, -35.22], + [10.099, -7.209], + [13.95, 35.083], + [26.183, -5.636], + ], + c: true, + }, + ], + }, + { + i: { x: 0.32, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 161, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [75.86, -3.345], + [-40.935, -18.354], + [42.881, 12.14], + [74.348, 24.549], + [70.369, 1.013], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 170, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [12.51, -7.277], + [-110.008, -19.184], + [-19.192, 3.494], + [20.236, 23.254], + [16.22, -0.587], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 184, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-3.126, -17.964], + [-61.192, -8.042], + [72.921, 0.195], + [59.046, -10.343], + [60.098, -29.814], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 193, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-14.241, 3.304], + [-30.454, 20.957], + [19.514, -1.564], + [11.823, 5.95], + [3.437, -9.631], + ], + c: true, + }, + ], + }, + { + t: 203, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-21.862, 17.885], + [-9.38, 40.839], + [-6.915, -14.251], + [-10.368, 5.64], + [-25.224, -7.275], + ], + c: true, + }, + ], + }, + ], + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.65451594334, 0.742976110122, 0.858894258387, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 2", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [795.902, 768.678], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 9", + np: 5, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: -7, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [18.514, -6.941], + [-33.276, 21.927], + [93.386, -0.562], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 3, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-6.915, -14.251], + [-9.38, 40.839], + [47.51, -30.24], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 12, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [21.986, -29.805], + [113.019, 32.241], + [42.547, -64.73], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 30, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-0.528, -14.328], + [129.556, -5.673], + [-49.243, -49.537], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 48, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [12.419, -8.39], + [20.033, -35.22], + [-88.885, -12.543], + ], + c: true, + }, + ], + }, + { + i: { x: 0.32, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 61, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [55.573, 8.709], + [-40.935, -18.354], + [28.444, 45.375], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 70, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [6.11, 3.203], + [-110.008, -19.184], + [7.061, 50.133], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 84, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [70.462, -13.025], + [-68.13, -5.656], + [131.7, 43.826], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 93, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [18.514, -6.941], + [-33.276, 21.927], + [93.387, -0.562], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 103, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-6.915, -14.251], + [-9.38, 40.839], + [47.51, -30.24], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 112, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [21.986, -29.805], + [113.019, 32.241], + [42.547, -64.73], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 130, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-0.528, -14.328], + [129.556, -5.673], + [-49.243, -49.537], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 148, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [12.419, -8.39], + [20.033, -35.22], + [-88.885, -12.543], + ], + c: true, + }, + ], + }, + { + i: { x: 0.32, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 161, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [55.573, 8.709], + [-40.935, -18.354], + [28.444, 45.375], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 170, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [6.11, 3.203], + [-110.008, -19.184], + [7.061, 50.133], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 184, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [70.462, -13.025], + [-68.13, -5.656], + [131.7, 43.826], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 193, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [18.514, -6.941], + [-33.276, 21.927], + [93.386, -0.562], + ], + c: true, + }, + ], + }, + { + t: 203, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-6.915, -14.251], + [-9.38, 40.839], + [47.51, -30.24], + ], + c: true, + }, + ], + }, + ], + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: -7, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-33.276, 21.927], + [5.299, -10.555], + [-29.451, -26.172], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 3, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-9.38, 40.839], + [-24.162, -11.06], + [-91.62, -22.853], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 12, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [113.019, 32.241], + [-1.135, -26.615], + [-113.019, -32.241], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 30, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [129.556, -5.673], + [7.207, -4.426], + [12.17, 72.534], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 48, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [20.033, -35.22], + [24.82, -6.359], + [108.512, 9], + ], + c: true, + }, + ], + }, + { + i: { x: 0.32, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 61, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-40.935, -18.354], + [69.258, 0.624], + [114.118, -27.203], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 70, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-110.008, -19.184], + [15.525, -1.402], + [54.092, -19.43], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 84, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-68.13, -5.656], + [63.129, -26.565], + [63.443, -50.053], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 93, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-33.276, 21.927], + [5.299, -10.555], + [-29.451, -26.172], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 103, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-9.38, 40.839], + [-24.162, -11.06], + [-91.62, -22.853], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 112, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [113.019, 32.241], + [-1.135, -26.615], + [-113.019, -32.241], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 130, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [129.556, -5.673], + [7.207, -4.426], + [12.17, 72.534], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 148, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [20.033, -35.22], + [24.82, -6.359], + [108.512, 9], + ], + c: true, + }, + ], + }, + { + i: { x: 0.32, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 161, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-40.935, -18.354], + [69.258, 0.624], + [114.118, -27.203], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 170, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-110.008, -19.184], + [15.525, -1.402], + [54.092, -19.43], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 184, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-68.13, -5.656], + [63.129, -26.565], + [63.443, -50.053], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 193, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-33.276, 21.927], + [5.299, -10.555], + [-29.451, -26.172], + ], + c: true, + }, + ], + }, + { + t: 203, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-9.38, 40.839], + [-24.162, -11.06], + [-91.62, -22.853], + ], + c: true, + }, + ], + }, + ], + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: -7, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-14.241, 3.304], + [-30.454, 20.957], + [19.514, -1.564], + [11.823, 5.95], + [3.437, -9.631], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 3, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-21.862, 17.885], + [-9.38, 40.839], + [-6.915, -14.251], + [-10.368, 5.64], + [-25.224, -7.275], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 12, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-24.159, 12.674], + [113.019, 32.241], + [21.986, -29.805], + [17.357, -9.915], + [-16.004, -3.872], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 30, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [55.35, -4.914], + [129.556, -5.673], + [-3.271, -18.353], + [-13.529, 7.902], + [42.148, 1], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 48, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [34.167, -10.201], + [20.033, -35.22], + [10.099, -7.209], + [13.95, 35.083], + [26.183, -5.636], + ], + c: true, + }, + ], + }, + { + i: { x: 0.32, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 61, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [75.86, -3.345], + [-40.935, -18.354], + [42.881, 12.14], + [74.348, 24.549], + [70.369, 1.013], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 70, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [12.51, -7.277], + [-110.008, -19.184], + [-19.192, 3.494], + [20.236, 23.254], + [16.22, -0.587], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 84, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-3.126, -17.964], + [-61.192, -8.042], + [72.921, 0.195], + [59.046, -10.343], + [60.098, -29.814], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 93, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-14.241, 3.304], + [-30.454, 20.957], + [19.514, -1.564], + [11.823, 5.95], + [3.437, -9.631], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 103, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-21.861, 17.885], + [-9.38, 40.839], + [-6.915, -14.251], + [-10.368, 5.64], + [-25.224, -7.275], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 112, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-24.159, 12.674], + [113.019, 32.241], + [21.986, -29.805], + [17.357, -9.915], + [-16.004, -3.872], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 130, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [55.35, -4.914], + [129.556, -5.673], + [-3.271, -18.353], + [-13.529, 7.902], + [42.148, 1], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 148, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [34.167, -10.201], + [20.033, -35.22], + [10.099, -7.209], + [13.95, 35.083], + [26.183, -5.636], + ], + c: true, + }, + ], + }, + { + i: { x: 0.32, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 161, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [75.86, -3.345], + [-40.935, -18.354], + [42.881, 12.14], + [74.348, 24.549], + [70.369, 1.013], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 170, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [12.51, -7.277], + [-110.008, -19.184], + [-19.192, 3.494], + [20.236, 23.254], + [16.22, -0.587], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 184, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-3.126, -17.964], + [-61.192, -8.042], + [72.921, 0.195], + [59.046, -10.343], + [60.098, -29.814], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 193, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-14.241, 3.304], + [-30.454, 20.957], + [19.514, -1.564], + [11.823, 5.95], + [3.437, -9.631], + ], + c: true, + }, + ], + }, + { + t: 203, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-21.862, 17.885], + [-9.38, 40.839], + [-6.915, -14.251], + [-10.368, 5.64], + [-25.224, -7.275], + ], + c: true, + }, + ], + }, + ], + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [0, 0, 0, 1], ix: 4 }, + o: { a: 0, k: 20, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 2", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [790.902, 773.678], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 8", + np: 4, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: -2, + op: 201, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 4, + ty: 4, + nm: "Shape Layer 9", + parent: 1, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 0, + s: [141.25, 25, 0], + to: [-3.73, -1.383, 0], + ti: [-8.37, -1.955, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 38, + s: [146.62, 14.455, 0], + to: [5.12, 2.58, 0], + ti: [5.195, 1.594, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 75, + s: [150.18, 5.281, 0], + to: [-5.195, -1.594, 0], + ti: [-0.953, -5.614, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 106, + s: [134.453, 14.614, 0], + to: [0.953, 5.614, 0], + ti: [-3.875, 4.525, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 137, + s: [149.75, 10.975, 0], + to: [3.875, -4.525, 0], + ti: [1.75, -5.25, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 170, + s: [140.625, 8.625, 0], + to: [-1.75, 5.25, 0], + ti: [11.125, -4.375, 0], + }, + { t: 199, s: [141.25, 25, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [197.25, -284, 0], ix: 1 }, + s: { a: 0, k: [82, 82, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [192.5, -319.5], + [250.5, -319.5], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { a: 0, k: [0, 0.47843137254901963, 1, 1], ix: 3 }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 10, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Shape 2", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [192.5, -298], + [313, -298], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "rp", + c: { a: 0, k: 3, ix: 1 }, + o: { a: 0, k: 0, ix: 2 }, + m: 1, + ix: 2, + tr: { + ty: "tr", + p: { a: 0, k: [0, 21], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 4 }, + so: { a: 0, k: 100, ix: 5 }, + eo: { a: 0, k: 100, ix: 6 }, + nm: "Transform", + }, + nm: "Repeater 1", + mn: "ADBE Vector Filter - Repeater", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.874463677406, 0.896885812283, 0.952941179276, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 10, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Shape 1", + np: 3, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-10.631, 0], + [0, -10.631], + [8.016, -3.698], + [-1.065, -13.634], + [13.375, 0], + [4.627, 5.177], + [1.051, 0.57], + [0, 8.437], + ], + o: [ + [10.631, 0], + [0, 8.766], + [-0.831, 0.384], + [-4.815, 6.616], + [-14.376, 0], + [0.627, -13.698], + [-7.554, -4.095], + [0, -10.631], + ], + v: [ + [-74, -32], + [-54.75, -12.75], + [-68.625, 11.021], + [-43.935, 27.259], + [-74, 40.25], + [-105.002, 26.948], + [-80.268, 10.573], + [-93.25, -12.75], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 3", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + d: 1, + ty: "el", + s: { a: 0, k: [93.5, 93.5], ix: 2 }, + p: { a: 0, k: [-74, 0], ix: 3 }, + nm: "Ellipse Path 2", + mn: "ADBE Vector Shape - Ellipse", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.874509871006, 0.898039281368, 0.95294123888, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 2", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "rc", + d: 1, + s: { a: 0, k: [267.5, 111], ix: 2 }, + p: { a: 0, k: [0, 0], ix: 3 }, + r: { a: 0, k: 10, ix: 4 }, + nm: "Rectangle Path 1", + mn: "ADBE Vector Shape - Rect", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "rc", + d: 1, + s: { a: 0, k: [267.5, 111], ix: 2 }, + p: { a: 0, k: [-6, 6], ix: 3 }, + r: { a: 0, k: 10, ix: 4 }, + nm: "Rectangle Path 2", + mn: "ADBE Vector Shape - Rect", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [0, 0, 0, 1], ix: 4 }, + o: { a: 0, k: 17, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 4", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [200.25, -287], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Rectangle 1", + np: 8, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 200, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 5, + ty: 4, + nm: "mail 6", + parent: 1, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 22, + s: [15.427], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 56, + s: [-12.946], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 90, + s: [28.456], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 126, + s: [-12.946], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 167, + s: [24], + }, + { t: 199, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 0, + s: [-192.052, -110.008, 0], + to: [2.552, 4.383, 0], + ti: [6.537, 13.177, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 51, + s: [-171.912, -105.677, 0], + to: [-6.537, -13.177, 0], + ti: [6.357, -1.675, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 85, + s: [-191.107, -93.45, 0], + to: [-6.357, 1.675, 0], + ti: [8.571, -10.521, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 124, + s: [-212.946, -117.604, 0], + to: [-8.571, 10.521, 0], + ti: [9.927, 9.883, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 163, + s: [-174.552, -122.008, 0], + to: [-9.927, -9.883, 0], + ti: [-4.323, -4.992, 0], + }, + { t: 199, s: [-192.052, -110.008, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [2153.478, 680.843, 0], ix: 1 }, + s: { a: 0, k: [67, 67, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [4.932, 0], + [0, 5.066], + [-8.798, 0], + [-1.066, -0.267], + ], + o: [ + [-1.2, 7.732], + [-4.398, 0], + [0, -10.264], + [1.732, 0], + [0, 0], + ], + v: [ + [6.604, -0.329], + [-4.726, 13.668], + [-11.391, 5.403], + [4.339, -13.526], + [8.47, -12.993], + ], + c: true, + }, + ix: 2, + }, + nm: "@", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [6.798, 0], + [0, 22.262], + [-20.396, 0], + [0, -17.33], + [5.73, 0.205], + [-1.333, 7.865], + [0, 0], + [5.865, 0], + [0, -16.263], + [-8.665, 0], + [-4.133, 6.799], + [0, 0], + [-6.266, 0], + [0, 19.462], + [23.461, 0], + [0, -27.194], + [-22.127, 0], + [-7.998, 3.599], + ], + o: [ + [-5.333, 2.799], + [-19.862, 0], + [0, -25.461], + [20.662, 0], + [0, 15.33], + [-3.732, -0.133], + [0, 0], + [-3.333, -1.866], + [-19.196, 0], + [0, 10.931], + [7.065, 0], + [0, 0], + [0.667, 7.065], + [14.396, 0], + [0, -22.395], + [-30.127, 0], + [0, 26.128], + [9.465, 0], + [0, 0], + ], + v: [ + [17.936, 34.33], + [-1.393, 38.596], + [-35.519, 3.67], + [2.74, -37.787], + [34.598, -6.994], + [21.668, 15.534], + [18.336, 3.937], + [22.335, -20.724], + [6.472, -24.057], + [-24.722, 7.003], + [-9.791, 24.332], + [7.405, 14.068], + [7.671, 14.068], + [19.136, 24.332], + [44.463, -7.394], + [4.206, -45.919], + [-45.65, 4.87], + [-4.06, 46.861], + [20.335, 42.062], + ], + c: true, + }, + ix: 2, + }, + nm: "@ 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [0, 0.47843137254901963, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 3", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + d: 1, + ty: "el", + s: { a: 0, k: [126.905, 126.905], ix: 2 }, + p: { a: 0, k: [0, 0], ix: 3 }, + nm: "Ellipse Path 1", + mn: "ADBE Vector Shape - Ellipse", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.885428667068, 0.920325279236, 0.960784316063, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 2", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [2140.425, 652.021], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 5", + np: 5, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + d: 1, + ty: "el", + s: { a: 0, k: [126.905, 126.905], ix: 2 }, + p: { a: 0, k: [-4, 11], ix: 3 }, + nm: "Ellipse Path 1", + mn: "ADBE Vector Shape - Ellipse", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [0, 0, 0, 1], ix: 4 }, + o: { a: 0, k: 18, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 2", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [2140.425, 652.021], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 200, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 6, + ty: 4, + nm: "mail 3", + parent: 1, + sr: 1, + ks: { + o: { a: 0, k: 99, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [183.055, -315.211, 0], ix: 2 }, + a: { a: 0, k: [2153.478, 680.843, 0], ix: 1 }, + s: { a: 0, k: [56, 56, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 1, y: 0 }, + t: 5, + s: [ + { + i: [ + [1.212, 0.293], + [-0.053, 1.063], + [-0.465, 1.092], + [-2.964, 0.923], + [0, 0], + [-2.408, -1.462], + [-0.75, -0.938], + [9.093, -10.048], + ], + o: [ + [-13.028, -3.146], + [0.06, -1.209], + [1.127, -2.65], + [0, 0], + [2.9, -0.902], + [1.008, 0.612], + [0.699, 0.874], + [-0.845, 0.934], + ], + v: [ + [11.967, 33.017], + [-77.516, 10.287], + [-76.716, 6.809], + [-70.385, 1.081], + [66.005, -41.368], + [74.313, -40.349], + [76.976, -38.011], + [15.15, 32.025], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 10, + s: [ + { + i: [ + [1.113, -0.027], + [12.953, -2.709], + [-0.38, 0.852], + [-2.964, 0.923], + [0, 0], + [-2.227, -0.88], + [0.429, -0.708], + [10.164, -6.61], + ], + o: [ + [-11.959, 0.286], + [-0.893, -0.313], + [0.756, -1.716], + [0, 0], + [2.9, -0.903], + [0.932, 0.368], + [-12.428, 5.23], + [-0.945, 0.614], + ], + v: [ + [4.34, 8.53], + [-73.957, 7.989], + [-75.054, 6.191], + [-70.014, 2.274], + [66.374, -40.184], + [72.789, -39.988], + [73.406, -38.058], + [7.523, 7.538], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 11, + s: [ + { + i: [ + [1.022, -0.318], + [22.981, -7.154], + [-0.472, 0.148], + [-2.964, 0.923], + [0, 0], + [-1.781, 0.553], + [1.404, -0.438], + [11.142, -3.471], + ], + o: [ + [-10.983, 3.42], + [-1.629, 0.507], + [0.69, -0.217], + [0, 0], + [2.899, -0.903], + [0.745, -0.231], + [-23.438, 7.303], + [-1.036, 0.323], + ], + v: [ + [-4.379, -19.464], + [-72.465, 1.734], + [-74.732, 2.437], + [-70.385, 1.081], + [65.996, -41.397], + [70.589, -42.826], + [69.196, -42.389], + [-1.196, -20.456], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 12, + s: [ + { + i: [ + [0, 0], + [0.003, -0.005], + [-0.001, -0.001], + [-0.001, 0], + [0, 0], + [0.001, 0.003], + [0, 0], + [0.002, 0], + ], + o: [ + [-0.002, 0.002], + [0, 0], + [0.001, 0.002], + [0, 0], + [0.001, 0], + [0, -0.001], + [-0.005, -0.003], + [0, 0], + ], + v: [ + [-73.926, 5.759], + [-73.934, 5.774], + [-73.933, 5.778], + [-73.932, 5.781], + [-73.908, 5.773], + [-73.908, 5.77], + [-73.909, 5.767], + [-73.925, 5.759], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 87, + s: [ + { + i: [ + [0, 0], + [0.003, -0.005], + [-0.001, -0.001], + [0, 0], + [0, 0], + [0.001, 0.003], + [0, 0], + [0.002, 0], + ], + o: [ + [-0.001, 0.002], + [0, 0], + [0.001, 0.002], + [0, 0], + [0, 0], + [0, -0.001], + [-0.005, -0.003], + [0, 0], + ], + v: [ + [-73.926, 5.759], + [-73.934, 5.774], + [-73.933, 5.778], + [-73.932, 5.781], + [-73.908, 5.773], + [-73.908, 5.77], + [-73.909, 5.767], + [-73.925, 5.759], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 88, + s: [ + { + i: [ + [1.022, -0.318], + [22.981, -7.154], + [-0.472, 0.148], + [-2.964, 0.923], + [0, 0], + [-1.781, 0.552], + [1.404, -0.438], + [11.142, -3.471], + ], + o: [ + [-10.983, 3.42], + [-1.629, 0.507], + [0.69, -0.217], + [0, 0], + [2.899, -0.903], + [0.745, -0.231], + [-23.438, 7.303], + [-1.036, 0.323], + ], + v: [ + [-4.379, -19.464], + [-72.465, 1.734], + [-74.732, 2.437], + [-70.385, 1.081], + [65.996, -41.397], + [70.589, -42.826], + [69.197, -42.389], + [-1.196, -20.456], + ], + c: true, + }, + ], + }, + { + i: { x: 0, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 89, + s: [ + { + i: [ + [1.113, -0.027], + [12.953, -2.709], + [-0.38, 0.852], + [-2.964, 0.923], + [0, 0], + [-2.227, -0.88], + [0.429, -0.708], + [10.164, -6.61], + ], + o: [ + [-11.959, 0.286], + [-0.893, -0.313], + [0.756, -1.716], + [0, 0], + [2.9, -0.903], + [0.932, 0.368], + [-12.428, 5.23], + [-0.945, 0.614], + ], + v: [ + [4.34, 8.53], + [-73.957, 7.989], + [-75.054, 6.191], + [-70.014, 2.274], + [66.374, -40.184], + [72.789, -39.988], + [73.406, -38.058], + [7.523, 7.538], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 94, + s: [ + { + i: [ + [1.212, 0.293], + [-0.052, 1.063], + [-0.465, 1.092], + [-2.964, 0.923], + [0, 0], + [-2.408, -1.462], + [-0.75, -0.938], + [9.093, -10.048], + ], + o: [ + [-13.028, -3.146], + [0.06, -1.209], + [1.127, -2.65], + [0, 0], + [2.9, -0.902], + [1.008, 0.612], + [0.699, 0.874], + [-0.845, 0.934], + ], + v: [ + [11.967, 33.017], + [-77.516, 10.287], + [-76.716, 6.809], + [-70.385, 1.081], + [66.005, -41.368], + [74.313, -40.349], + [76.976, -38.011], + [15.15, 32.025], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 1, y: 0 }, + t: 106, + s: [ + { + i: [ + [1.212, 0.293], + [-0.052, 1.063], + [-0.465, 1.092], + [-2.964, 0.923], + [0, 0], + [-2.408, -1.462], + [-0.75, -0.938], + [9.093, -10.048], + ], + o: [ + [-13.028, -3.146], + [0.06, -1.209], + [1.127, -2.65], + [0, 0], + [2.9, -0.902], + [1.008, 0.612], + [0.699, 0.874], + [-0.845, 0.934], + ], + v: [ + [11.967, 33.017], + [-77.516, 10.287], + [-76.716, 6.809], + [-70.385, 1.081], + [66.005, -41.368], + [74.313, -40.349], + [76.976, -38.011], + [15.15, 32.025], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 111, + s: [ + { + i: [ + [1.113, -0.027], + [12.953, -2.709], + [-0.38, 0.852], + [-2.964, 0.923], + [0, 0], + [-2.227, -0.88], + [0.429, -0.708], + [10.164, -6.61], + ], + o: [ + [-11.959, 0.286], + [-0.893, -0.313], + [0.756, -1.716], + [0, 0], + [2.9, -0.903], + [0.932, 0.368], + [-12.428, 5.23], + [-0.945, 0.614], + ], + v: [ + [4.34, 8.53], + [-73.957, 7.989], + [-75.054, 6.191], + [-70.014, 2.274], + [66.374, -40.184], + [72.789, -39.988], + [73.406, -38.058], + [7.523, 7.538], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 112, + s: [ + { + i: [ + [1.022, -0.318], + [22.981, -7.154], + [-0.472, 0.148], + [-2.964, 0.923], + [0, 0], + [-1.781, 0.552], + [1.404, -0.438], + [11.142, -3.471], + ], + o: [ + [-10.983, 3.42], + [-1.629, 0.507], + [0.69, -0.217], + [0, 0], + [2.899, -0.903], + [0.745, -0.231], + [-23.438, 7.303], + [-1.036, 0.323], + ], + v: [ + [-4.379, -19.464], + [-72.465, 1.734], + [-74.732, 2.437], + [-70.385, 1.081], + [65.996, -41.397], + [70.589, -42.826], + [69.197, -42.389], + [-1.196, -20.456], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 113, + s: [ + { + i: [ + [0, 0], + [0.003, -0.005], + [-0.001, -0.001], + [0, 0], + [0, 0], + [0.001, 0.003], + [0, 0], + [0.002, 0], + ], + o: [ + [-0.001, 0.002], + [0, 0], + [0.001, 0.002], + [0, 0], + [0, 0], + [0, -0.001], + [-0.005, -0.003], + [0, 0], + ], + v: [ + [-73.926, 5.759], + [-73.934, 5.774], + [-73.933, 5.778], + [-73.932, 5.781], + [-73.908, 5.773], + [-73.908, 5.77], + [-73.909, 5.767], + [-73.925, 5.759], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 188, + s: [ + { + i: [ + [0, 0], + [0.003, -0.005], + [-0.001, -0.001], + [0, 0], + [0, 0], + [0.001, 0.003], + [0, 0], + [0.002, 0], + ], + o: [ + [-0.001, 0.002], + [0, 0], + [0.001, 0.002], + [0, 0], + [0, 0], + [0, -0.001], + [-0.005, -0.003], + [0, 0], + ], + v: [ + [-73.926, 5.759], + [-73.934, 5.774], + [-73.933, 5.778], + [-73.932, 5.781], + [-73.908, 5.773], + [-73.908, 5.77], + [-73.909, 5.767], + [-73.925, 5.759], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 189, + s: [ + { + i: [ + [1.022, -0.318], + [22.981, -7.154], + [-0.472, 0.148], + [-2.964, 0.923], + [0, 0], + [-1.781, 0.552], + [1.404, -0.438], + [11.142, -3.471], + ], + o: [ + [-10.983, 3.42], + [-1.629, 0.507], + [0.69, -0.217], + [0, 0], + [2.899, -0.903], + [0.745, -0.231], + [-23.438, 7.303], + [-1.036, 0.323], + ], + v: [ + [-4.379, -19.464], + [-72.465, 1.734], + [-74.732, 2.437], + [-70.385, 1.081], + [65.996, -41.397], + [70.589, -42.826], + [69.197, -42.389], + [-1.196, -20.456], + ], + c: true, + }, + ], + }, + { + i: { x: 0, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 190, + s: [ + { + i: [ + [1.113, -0.027], + [12.953, -2.709], + [-0.38, 0.852], + [-2.964, 0.923], + [0, 0], + [-2.227, -0.88], + [0.429, -0.708], + [10.164, -6.61], + ], + o: [ + [-11.959, 0.286], + [-0.893, -0.313], + [0.756, -1.716], + [0, 0], + [2.9, -0.903], + [0.932, 0.368], + [-12.428, 5.23], + [-0.945, 0.614], + ], + v: [ + [4.34, 8.53], + [-73.957, 7.989], + [-75.054, 6.191], + [-70.014, 2.274], + [66.374, -40.184], + [72.789, -39.988], + [73.406, -38.058], + [7.523, 7.538], + ], + c: true, + }, + ], + }, + { + t: 195, + s: [ + { + i: [ + [1.212, 0.293], + [-0.052, 1.063], + [-0.465, 1.092], + [-2.964, 0.923], + [0, 0], + [-2.408, -1.462], + [-0.75, -0.938], + [9.093, -10.048], + ], + o: [ + [-13.028, -3.146], + [0.06, -1.209], + [1.127, -2.65], + [0, 0], + [2.9, -0.902], + [1.008, 0.612], + [0.699, 0.874], + [-0.845, 0.934], + ], + v: [ + [11.967, 33.017], + [-77.516, 10.287], + [-76.716, 6.809], + [-70.385, 1.081], + [66.005, -41.368], + [74.313, -40.349], + [76.976, -38.011], + [15.15, 32.025], + ], + c: true, + }, + ], + }, + ], + ix: 2, + }, + nm: "Path 6", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.401014983654, 0.635570943356, 0.964705884457, 1], + ix: 4, + }, + o: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 10, + s: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 11, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 87, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 88, + s: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 111, + s: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 112, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 188, + s: [0], + }, + { t: 189, s: [100] }, + ], + ix: 5, + }, + r: 1, + bm: 0, + nm: "Fill 6", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [4.2, -1.308], + [0, 0], + [2.5, 3.352], + [0, 0], + [-2.717, 0.813], + [0, 0], + ], + o: [ + [-0.18, 4.162], + [0, 0], + [-4.22, 1.315], + [0, 0], + [0, 0], + [2.717, -0.813], + [0, 0], + ], + v: [ + [103.625, 47.302], + [96.485, 56.565], + [-39.905, 99.014], + [-51.065, 95.387], + [5.902, 26.402], + [11.27, 22.465], + [17.541, 22.927], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 5", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.349019616842, 0.592156887054, 0.933333396912, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 5", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ind: 4, + ty: "sh", + ix: 5, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [4.2, -1.308], + [0, 0], + [2.53, 3.45], + [0, 0], + [-2.717, 0.812], + [0, 0], + ], + o: [ + [-0.149, 4.26], + [0, 0], + [-4.22, 1.315], + [0, 0], + [0, 0], + [2.717, -0.812], + [0, 0], + ], + v: [ + [103.573, 47.134], + [96.485, 56.565], + [-39.905, 99.013], + [-51.118, 95.217], + [5.469, 25.011], + [10.82, 21.02], + [17.108, 21.54], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.1254902035, 0.1254902035, 0.1254902035, 1], + ix: 4, + }, + o: { a: 0, k: 30, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 2", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ind: 6, + ty: "sh", + ix: 7, + ks: { + a: 0, + k: { + i: [ + [-1.69, -5.354], + [0, 0], + [0.05, -1.142], + [4.2, -1.308], + [0, 0], + [2.5, 3.352], + [0.36, 1.136], + [0, 0], + [-6.374, -1.622], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0.36, 1.157], + [-0.18, 4.162], + [0, 0], + [-4.22, 1.315], + [-0.68, -0.903], + [0, 0], + [-1.67, -5.372], + [0, 0], + [0, 0], + [4.139, -4.613], + ], + v: [ + [78.958, -33.99], + [103.175, 43.824], + [103.625, 47.302], + [96.485, 56.565], + [-39.905, 99.014], + [-51.065, 95.387], + [-52.635, 92.318], + [-76.841, 14.537], + [-68.329, 7.683], + [12.317, 29.181], + [68.061, -34.766], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [0, 0.47843137254901963, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 4", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [1801.139, 934.164], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [594, 594], ix: 3 }, + r: { a: 0, k: 17.3, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "front", + np: 8, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [1741.752, 1155.556], + [1787.515, 1141.378], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 6", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [1746.435, 1170.589], + [1844.124, 1140.151], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 5", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "rp", + c: { a: 0, k: 4, ix: 1 }, + o: { a: 0, k: 0, ix: 2 }, + m: 1, + ix: 3, + tr: { + ty: "tr", + p: { a: 0, k: [5, 15], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 4 }, + so: { a: 0, k: 100, ix: 5 }, + eo: { a: 0, k: 100, ix: 6 }, + nm: "Transform", + }, + nm: "Repeater 1", + mn: "ADBE Vector Filter - Repeater", + hd: false, + }, + { + ty: "tm", + s: { a: 0, k: 0, ix: 1 }, + e: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 17, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 46, + s: [100], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 105, + s: [100], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 106, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 118, + s: [0], + }, + { t: 147, s: [100] }, + ], + ix: 2, + }, + o: { a: 0, k: 0, ix: 3 }, + m: 2, + ix: 4, + nm: "Trim Paths 1", + mn: "ADBE Vector Filter - Trim", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.750726640224, 0.811723232269, 0.886274516582, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 5, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [-1792, -1153], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 5, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-1.152, -3.69], + [0, 0], + [3.69, -1.152], + [0, 0], + [1.152, 3.69], + [0, 0], + [-3.69, 1.152], + [0, 0], + ], + o: [ + [0, 0], + [1.152, 3.69], + [0, 0], + [-3.69, 1.152], + [0, 0], + [-1.152, -3.69], + [0, 0], + [3.69, -1.152], + ], + v: [ + [1861.208, 1111.749], + [1886.121, 1191.558], + [1881.524, 1200.325], + [1753.446, 1240.409], + [1744.678, 1235.813], + [1719.765, 1156.005], + [1724.362, 1147.237], + [1852.441, 1107.153], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 5", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.926412940025, 0.952468276024, 0.984313726425, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 3", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [-1792, -1153], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "tr", + p: { + a: 1, + k: [ + { + i: { x: 0, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 14, + s: [1801.139, 977.164], + to: [0, -35.5], + ti: [0, 35.5], + }, + { t: 29, s: [1801.139, 764.164], h: 1 }, + { + i: { x: 0, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 72, + s: [1801.139, 764.164], + to: [0, 35.5], + ti: [0, -35.5], + }, + { + i: { x: 0.833, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 87, + s: [1801.139, 977.164], + to: [0, 35.5], + ti: [0, 0], + }, + { + i: { x: 0, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 115, + s: [1801.139, 977.164], + to: [0, -35.5], + ti: [0, 35.5], + }, + { t: 130, s: [1801.139, 764.164], h: 1 }, + { + i: { x: 0, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 173, + s: [1801.139, 764.164], + to: [0, 35.5], + ti: [0, -35.5], + }, + { t: 188, s: [1801.139, 977.164] }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [594, 594], ix: 3 }, + r: { a: 0, k: 17.3, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 5", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 10, + s: [ + { + i: [ + [-0.758, -2.403], + [0, 0], + [0.05, -1.142], + [4.2, -1.308], + [0, 0], + [2.5, 3.352], + [0.36, 1.136], + [0, 0], + [-0.788, 2.059], + [-14.49, 5.196], + [-2.265, 0.603], + [-2.109, -1.321], + ], + o: [ + [0, 0], + [0.36, 1.157], + [-0.18, 4.162], + [0, 0], + [-4.22, 1.315], + [-0.68, -0.903], + [0, 0], + [-0.707, -2.273], + [0.933, -2.439], + [2.197, -0.788], + [14.919, -3.974], + [1.978, 1.239], + ], + v: [ + [78.735, -34.708], + [103.175, 43.824], + [103.625, 47.302], + [96.485, 56.565], + [-39.905, 99.014], + [-51.065, 95.387], + [-52.635, 92.318], + [-77.065, 13.819], + [-76.632, 7.874], + [-6.935, -15.232], + [0.09, -17.423], + [74.435, -40.273], + ], + c: true, + }, + ], + }, + { + i: { x: 0, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 11, + s: [ + { + i: [ + [-0.758, -2.403], + [0, 0], + [0.05, -1.142], + [4.2, -1.308], + [0, 0], + [2.5, 3.352], + [0.36, 1.136], + [0, 0], + [-0.788, 2.059], + [-13.999, 6.772], + [-2.338, 0.367], + [-2.109, -1.321], + ], + o: [ + [0, 0], + [0.36, 1.157], + [-0.18, 4.162], + [0, 0], + [-4.22, 1.315], + [-0.68, -0.903], + [0, 0], + [-0.707, -2.273], + [0.933, -2.439], + [2.122, -1.027], + [15.402, -2.421], + [1.978, 1.239], + ], + v: [ + [78.735, -34.708], + [103.175, 43.824], + [103.625, 47.302], + [96.485, 56.565], + [-39.905, 99.014], + [-51.065, 95.387], + [-52.635, 92.318], + [-77.065, 13.819], + [-76.632, 7.874], + [-11.418, -32.357], + [-4.394, -34.553], + [74.435, -40.273], + ], + c: true, + }, + ], + }, + { + i: { x: 0, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 18, + s: [ + { + i: [ + [-0.758, -2.403], + [0, 0], + [0.05, -1.142], + [4.2, -1.308], + [0, 0], + [2.5, 3.352], + [0.36, 1.136], + [0, 0], + [-0.788, 2.059], + [-11.355, 15.263], + [-2.734, -0.902], + [-2.109, -1.321], + ], + o: [ + [0, 0], + [0.36, 1.157], + [-0.18, 4.162], + [0, 0], + [-4.22, 1.315], + [-0.68, -0.903], + [0, 0], + [-0.707, -2.273], + [0.933, -2.439], + [1.721, -2.314], + [18.008, 5.945], + [1.978, 1.239], + ], + v: [ + [78.735, -34.708], + [103.175, 43.824], + [103.625, 47.302], + [96.485, 56.565], + [-39.905, 99.014], + [-51.065, 95.387], + [-52.635, 92.318], + [-77.065, 13.819], + [-76.632, 7.874], + [-21.154, -67.958], + [-14.138, -70.18], + [74.435, -40.273], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 1, y: 0 }, + t: 81, + s: [ + { + i: [ + [-0.758, -2.403], + [0, 0], + [0.05, -1.142], + [4.2, -1.308], + [0, 0], + [2.5, 3.352], + [0.36, 1.136], + [0, 0], + [-0.788, 2.059], + [-11.355, 15.263], + [-2.734, -0.902], + [-2.109, -1.321], + ], + o: [ + [0, 0], + [0.36, 1.157], + [-0.18, 4.162], + [0, 0], + [-4.22, 1.315], + [-0.68, -0.903], + [0, 0], + [-0.707, -2.273], + [0.933, -2.439], + [1.721, -2.314], + [18.008, 5.945], + [1.978, 1.239], + ], + v: [ + [78.735, -34.708], + [103.175, 43.824], + [103.625, 47.302], + [96.485, 56.565], + [-39.905, 99.014], + [-51.065, 95.387], + [-52.635, 92.318], + [-77.065, 13.819], + [-76.632, 7.874], + [-21.154, -67.958], + [-14.138, -70.18], + [74.435, -40.273], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 88, + s: [ + { + i: [ + [-0.758, -2.403], + [0, 0], + [0.05, -1.142], + [4.2, -1.308], + [0, 0], + [2.5, 3.352], + [0.36, 1.136], + [0, 0], + [-0.788, 2.059], + [-13.999, 6.772], + [-2.338, 0.367], + [-2.109, -1.321], + ], + o: [ + [0, 0], + [0.36, 1.157], + [-0.18, 4.162], + [0, 0], + [-4.22, 1.315], + [-0.68, -0.903], + [0, 0], + [-0.707, -2.273], + [0.933, -2.439], + [2.122, -1.027], + [15.402, -2.421], + [1.978, 1.239], + ], + v: [ + [78.735, -34.708], + [103.175, 43.824], + [103.625, 47.302], + [96.485, 56.565], + [-39.905, 99.014], + [-51.065, 95.387], + [-52.635, 92.318], + [-77.065, 13.819], + [-76.632, 7.874], + [-11.418, -32.357], + [-4.394, -34.553], + [74.435, -40.273], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 89, + s: [ + { + i: [ + [-0.758, -2.403], + [0, 0], + [0.05, -1.142], + [4.2, -1.308], + [0, 0], + [2.5, 3.352], + [0.36, 1.136], + [0, 0], + [-0.788, 2.059], + [-14.49, 5.196], + [-2.265, 0.603], + [-2.109, -1.321], + ], + o: [ + [0, 0], + [0.36, 1.157], + [-0.18, 4.162], + [0, 0], + [-4.22, 1.315], + [-0.68, -0.903], + [0, 0], + [-0.707, -2.273], + [0.933, -2.439], + [2.197, -0.788], + [14.919, -3.974], + [1.978, 1.239], + ], + v: [ + [78.735, -34.708], + [103.175, 43.824], + [103.625, 47.302], + [96.485, 56.565], + [-39.905, 99.014], + [-51.065, 95.387], + [-52.635, 92.318], + [-77.065, 13.819], + [-76.632, 7.874], + [-6.935, -15.232], + [0.09, -17.423], + [74.435, -40.273], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 111, + s: [ + { + i: [ + [-0.758, -2.403], + [0, 0], + [0.05, -1.142], + [4.2, -1.308], + [0, 0], + [2.5, 3.352], + [0.36, 1.136], + [0, 0], + [-0.788, 2.059], + [-14.49, 5.196], + [-2.265, 0.603], + [-2.109, -1.321], + ], + o: [ + [0, 0], + [0.36, 1.157], + [-0.18, 4.162], + [0, 0], + [-4.22, 1.315], + [-0.68, -0.903], + [0, 0], + [-0.707, -2.273], + [0.933, -2.439], + [2.197, -0.788], + [14.919, -3.974], + [1.978, 1.239], + ], + v: [ + [78.735, -34.708], + [103.175, 43.824], + [103.625, 47.302], + [96.485, 56.565], + [-39.905, 99.014], + [-51.065, 95.387], + [-52.635, 92.318], + [-77.065, 13.819], + [-76.632, 7.874], + [-6.935, -15.232], + [0.09, -17.423], + [74.435, -40.273], + ], + c: true, + }, + ], + }, + { + i: { x: 0, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 112, + s: [ + { + i: [ + [-0.758, -2.403], + [0, 0], + [0.05, -1.142], + [4.2, -1.308], + [0, 0], + [2.5, 3.352], + [0.36, 1.136], + [0, 0], + [-0.788, 2.059], + [-13.999, 6.772], + [-2.338, 0.367], + [-2.109, -1.321], + ], + o: [ + [0, 0], + [0.36, 1.157], + [-0.18, 4.162], + [0, 0], + [-4.22, 1.315], + [-0.68, -0.903], + [0, 0], + [-0.707, -2.273], + [0.933, -2.439], + [2.122, -1.027], + [15.402, -2.421], + [1.978, 1.239], + ], + v: [ + [78.735, -34.708], + [103.175, 43.824], + [103.625, 47.302], + [96.485, 56.565], + [-39.905, 99.014], + [-51.065, 95.387], + [-52.635, 92.318], + [-77.065, 13.819], + [-76.632, 7.874], + [-11.418, -32.357], + [-4.394, -34.553], + [74.435, -40.273], + ], + c: true, + }, + ], + }, + { + i: { x: 0, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 119, + s: [ + { + i: [ + [-0.758, -2.403], + [0, 0], + [0.05, -1.142], + [4.2, -1.308], + [0, 0], + [2.5, 3.352], + [0.36, 1.136], + [0, 0], + [-0.788, 2.059], + [-11.355, 15.263], + [-2.734, -0.902], + [-2.109, -1.321], + ], + o: [ + [0, 0], + [0.36, 1.157], + [-0.18, 4.162], + [0, 0], + [-4.22, 1.315], + [-0.68, -0.903], + [0, 0], + [-0.707, -2.273], + [0.933, -2.439], + [1.721, -2.314], + [18.008, 5.945], + [1.978, 1.239], + ], + v: [ + [78.735, -34.708], + [103.175, 43.824], + [103.625, 47.302], + [96.485, 56.565], + [-39.905, 99.014], + [-51.065, 95.387], + [-52.635, 92.318], + [-77.065, 13.819], + [-76.632, 7.874], + [-21.154, -67.958], + [-14.138, -70.18], + [74.435, -40.273], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 1, y: 0 }, + t: 182, + s: [ + { + i: [ + [-0.758, -2.403], + [0, 0], + [0.05, -1.142], + [4.2, -1.308], + [0, 0], + [2.5, 3.352], + [0.36, 1.136], + [0, 0], + [-0.788, 2.059], + [-11.355, 15.263], + [-2.734, -0.902], + [-2.109, -1.321], + ], + o: [ + [0, 0], + [0.36, 1.157], + [-0.18, 4.162], + [0, 0], + [-4.22, 1.315], + [-0.68, -0.903], + [0, 0], + [-0.707, -2.273], + [0.933, -2.439], + [1.721, -2.314], + [18.008, 5.945], + [1.978, 1.239], + ], + v: [ + [78.735, -34.708], + [103.175, 43.824], + [103.625, 47.302], + [96.485, 56.565], + [-39.905, 99.014], + [-51.065, 95.387], + [-52.635, 92.318], + [-77.065, 13.819], + [-76.632, 7.874], + [-21.154, -67.958], + [-14.138, -70.18], + [74.435, -40.273], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 189, + s: [ + { + i: [ + [-0.758, -2.403], + [0, 0], + [0.05, -1.142], + [4.2, -1.308], + [0, 0], + [2.5, 3.352], + [0.36, 1.136], + [0, 0], + [-0.788, 2.059], + [-13.999, 6.772], + [-2.338, 0.367], + [-2.109, -1.321], + ], + o: [ + [0, 0], + [0.36, 1.157], + [-0.18, 4.162], + [0, 0], + [-4.22, 1.315], + [-0.68, -0.903], + [0, 0], + [-0.707, -2.273], + [0.933, -2.439], + [2.122, -1.027], + [15.402, -2.421], + [1.978, 1.239], + ], + v: [ + [78.735, -34.708], + [103.175, 43.824], + [103.625, 47.302], + [96.485, 56.565], + [-39.905, 99.014], + [-51.065, 95.387], + [-52.635, 92.318], + [-77.065, 13.819], + [-76.632, 7.874], + [-11.418, -32.357], + [-4.394, -34.553], + [74.435, -40.273], + ], + c: true, + }, + ], + }, + { + t: 190, + s: [ + { + i: [ + [-0.758, -2.403], + [0, 0], + [0.05, -1.142], + [4.2, -1.308], + [0, 0], + [2.5, 3.352], + [0.36, 1.136], + [0, 0], + [-0.788, 2.059], + [-14.49, 5.196], + [-2.265, 0.603], + [-2.109, -1.321], + ], + o: [ + [0, 0], + [0.36, 1.157], + [-0.18, 4.162], + [0, 0], + [-4.22, 1.315], + [-0.68, -0.903], + [0, 0], + [-0.707, -2.273], + [0.933, -2.439], + [2.197, -0.788], + [14.919, -3.974], + [1.978, 1.239], + ], + v: [ + [78.735, -34.708], + [103.175, 43.824], + [103.625, 47.302], + [96.485, 56.565], + [-39.905, 99.014], + [-51.065, 95.387], + [-52.635, 92.318], + [-77.065, 13.819], + [-76.632, 7.874], + [-6.935, -15.232], + [0.09, -17.423], + [74.435, -40.273], + ], + c: true, + }, + ], + }, + ], + ix: 2, + }, + nm: "Path 4", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.174548238516, 0.452203959227, 0.890196084976, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 3", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [1801.139, 934.164], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [594, 594], ix: 3 }, + r: { a: 0, k: 17.3, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "back 2", + np: 2, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-0.758, -2.403], + [0, 0], + [0.05, -1.142], + [4.2, -1.308], + [0, 0], + [2.5, 3.352], + [0.36, 1.136], + [0, 0], + [-0.788, 2.059], + [-14.49, 5.196], + [-2.265, 0.603], + [-2.109, -1.321], + ], + o: [ + [0, 0], + [0.36, 1.157], + [-0.18, 4.162], + [0, 0], + [-4.22, 1.315], + [-0.68, -0.903], + [0, 0], + [-0.707, -2.273], + [0.933, -2.439], + [2.197, -0.788], + [14.919, -3.974], + [1.978, 1.239], + ], + v: [ + [78.735, -34.708], + [103.175, 43.824], + [103.625, 47.302], + [96.485, 56.565], + [-39.905, 99.014], + [-51.065, 95.387], + [-52.635, 92.318], + [-77.065, 13.819], + [-76.632, 7.874], + [-6.935, -15.232], + [0.09, -17.423], + [74.435, -40.273], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 5", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [0, 0, 0, 1], ix: 4 }, + o: { a: 0, k: 20, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 4", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [1785.139, 947.164], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [594, 594], ix: 3 }, + r: { a: 0, k: 17.3, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "back", + np: 2, + cix: 2, + bm: 0, + ix: 4, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 204, + st: -23, + bm: 0, + }, + { + ddd: 0, + ind: 10, + ty: 4, + nm: "Shape Layer 1", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [480, 540, 0], ix: 2 }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { a: 0, k: [91, 91.91, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 0, + s: [ + { + i: [ + [-194.546, 54.872], + [46, -283], + [202.136, 0], + [53.627, 210.319], + ], + o: [ + [234, -66], + [-34.823, 214.236], + [-202.136, 0], + [-64, -251], + ], + v: [ + [-58, -395], + [382, -4], + [-28, 403], + [-382, 2], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 50, + s: [ + { + i: [ + [-201.9, 9.769], + [46, -283], + [198.441, -38.473], + [-30.055, 214.957], + ], + o: [ + [248, -12], + [-34.823, 214.236], + [-196, 38], + [46, -329], + ], + v: [ + [-86, -411], + [416, 26], + [-28, 369], + [-384, 26], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 99, + s: [ + { + i: [ + [-189.571, 70.156], + [-42, -269], + [198.441, -38.473], + [0, 217.048], + ], + o: [ + [254, -94], + [50.213, 321.602], + [-196, 38], + [0, -265], + ], + v: [ + [-86, -411], + [416, 26], + [-74, 309], + [-430, -32], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 150, + s: [ + { + i: [ + [-263.72, 24.16], + [16.66, -322.3], + [194.54, 24.06], + [76.48, 256.34], + ], + o: [ + [263.72, -24.16], + [-16.66, 322.3], + [-198.486, -24.548], + [-76.48, -256.34], + ], + v: [ + [-47.72, -384.84], + [380.66, 62.7], + [-56.54, 346.94], + [-379.52, 15.34], + ], + c: true, + }, + ], + }, + { + t: 199, + s: [ + { + i: [ + [-194.546, 54.872], + [46, -283], + [202.136, 0], + [53.627, 210.319], + ], + o: [ + [234, -66], + [-34.823, 214.236], + [-202.136, 0], + [-64, -251], + ], + v: [ + [-58, -395], + [382, -4], + [-28, 403], + [-382, 2], + ], + c: true, + }, + ], + }, + ], + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.23921568627450981, 0.5019607843137255, 0.9411764705882353, 1], + ix: 4, + }, + o: { a: 0, k: 20, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [2, -19], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Ellipse 3", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 0, + s: [ + { + i: [ + [-194.546, 54.872], + [46, -283], + [202.136, 0], + [53.627, 210.319], + ], + o: [ + [234, -66], + [-34.823, 214.236], + [-202.136, 0], + [-64, -251], + ], + v: [ + [-58, -395], + [382, -4], + [-28, 403], + [-382, 2], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 50, + s: [ + { + i: [ + [-201.9, 9.769], + [46, -283], + [198.441, -38.473], + [-30.055, 214.957], + ], + o: [ + [248, -12], + [-34.823, 214.236], + [-196, 38], + [46, -329], + ], + v: [ + [-86, -411], + [416, 26], + [-28, 369], + [-384, 26], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 99, + s: [ + { + i: [ + [-189.571, 70.156], + [-42, -269], + [198.441, -38.473], + [0, 217.048], + ], + o: [ + [254, -94], + [50.213, 321.602], + [-196, 38], + [0, -265], + ], + v: [ + [-86, -411], + [416, 26], + [-74, 309], + [-430, -32], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 150, + s: [ + { + i: [ + [-263.72, 24.16], + [16.66, -322.3], + [194.54, 24.06], + [76.48, 256.34], + ], + o: [ + [263.72, -24.16], + [-16.66, 322.3], + [-198.486, -24.548], + [-76.48, -256.34], + ], + v: [ + [-47.72, -384.84], + [380.66, 62.7], + [-56.54, 346.94], + [-379.52, 15.34], + ], + c: true, + }, + ], + }, + { + t: 199, + s: [ + { + i: [ + [-194.546, 54.872], + [46, -283], + [202.136, 0], + [53.627, 210.319], + ], + o: [ + [234, -66], + [-34.823, 214.236], + [-202.136, 0], + [-64, -251], + ], + v: [ + [-58, -395], + [382, -4], + [-28, 403], + [-382, 2], + ], + c: true, + }, + ], + }, + ], + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.23921568627450981, 0.5019607843137255, 0.9411764705882353, 1], + ix: 4, + }, + o: { a: 0, k: 15, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [2, -75], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [112, 112], ix: 3 }, + r: { a: 0, k: -174, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Ellipse 2", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 200, + st: 0, + bm: 0, + }, + ], + markers: [], +}; diff --git a/src/electron/renderer/assets/lotties/documentation-lotties.js b/src/electron/renderer/assets/lotties/documentation-lotties.js index f972cd1fb..eee3da01f 100644 --- a/src/electron/renderer/assets/lotties/documentation-lotties.js +++ b/src/electron/renderer/assets/lotties/documentation-lotties.js @@ -1,3460 +1,3460 @@ -export const docu_lottie = { - v: "5.1.18", - fr: 29.9700012207031, - ip: 0, - op: 120.0000048877, - w: 400, - h: 400, - nm: "Comp 1", - ddd: 0, - assets: [], - layers: [ - { - ddd: 0, - ind: 1, - ty: 4, - nm: "line1", - sr: 1, - ks: { - o: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 0, - s: [0], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 2, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 8, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 93, - s: [100], - e: [0], - }, - { t: 97.000003950891 }, - ], - ix: 11, - }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - n: "0p667_1_0p333_0", - t: 0, - s: [110.949, 144.875, 0], - e: [147.199, 144.875, 0], - to: [6.04166650772095, 0, 0], - ti: [-6.04166650772095, 0, 0], - }, - { t: 8.00000032584668 }, - ], - ix: 2, - }, - a: { a: 0, k: [-59.875, -63.75, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], - t: 0, - s: [0.475, 100, 100], - e: [92.988, 100, 100], - }, - { t: 8.00000032584668 }, - ], - ix: 6, - }, - }, - ao: 0, - hasMask: true, - masksProperties: [ - { - inv: false, - mode: "a", - pt: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - n: "0p667_1_0p167_0p167", - t: 92, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-98.924, -66.5], - [-98.924, -61], - [-20.826, -61], - [-20.826, -66.5], - ], - c: true, - }, - ], - e: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-98.924, -66.5], - [-98.924, -61], - [-25.608, -61], - [-25.608, -66.5], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - n: "0p667_1_0p167_0p167", - t: 93, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-98.924, -66.5], - [-98.924, -61], - [-25.608, -61], - [-25.608, -66.5], - ], - c: true, - }, - ], - e: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-98.924, -66.5], - [-98.924, -61], - [-98.871, -61], - [-98.871, -66.5], - ], - c: true, - }, - ], - }, - { t: 97.3312539643831 }, - ], - ix: 1, - }, - o: { a: 0, k: 100, ix: 3 }, - x: { a: 0, k: 0, ix: 4 }, - nm: "Mask 1", - }, - ], - shapes: [ - { - ty: "gr", - it: [ - { - ty: "rc", - d: 1, - s: { a: 0, k: [30.75, 5.5], ix: 2 }, - p: { a: 0, k: [0, 0], ix: 3 }, - r: { a: 0, k: 0, ix: 4 }, - nm: "Rectangle Path 1", - mn: "ADBE Vector Shape - Rect", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 0, ix: 5 }, - lc: 1, - lj: 1, - ml: 4, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [-59.875, -63.75], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [253.976, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Rectangle 1", - np: 3, - cix: 2, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 120.0000048877, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 2, - ty: 4, - nm: "line2 - A", - sr: 1, - ks: { - o: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 6, - s: [0], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 8, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 14, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 93, - s: [100], - e: [0], - }, - { t: 97.000003950891 }, - ], - ix: 11, - }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - n: "0p667_1_0p333_0", - t: 6, - s: [111.324, 158.375, 0], - e: [121.574, 158.375, 0], - to: [1.70833337306976, 0, 0], - ti: [-1.70833337306976, 0, 0], - }, - { t: 14.0000005702317 }, - ], - ix: 2, - }, - a: { a: 0, k: [-71.972, -63.75, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], - t: 6, - s: [0.475, 100, 100], - e: [73.199, 100, 100], - }, - { t: 14.0000005702317 }, - ], - ix: 6, - }, - }, - ao: 0, - hasMask: true, - masksProperties: [ - { - inv: false, - mode: "a", - pt: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - n: "0p833_0p833_0p167_0p167", - t: 94, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-85.97, -66.5], - [-85.97, -61], - [-33.78, -61], - [-33.78, -66.5], - ], - c: true, - }, - ], - e: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-85.97, -66.5], - [-85.97, -61], - [-46.457, -61], - [-46.457, -66.5], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - n: "0p833_0p833_0p167_0p167", - t: 95, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-85.97, -66.5], - [-85.97, -61], - [-46.457, -61], - [-46.457, -66.5], - ], - c: true, - }, - ], - e: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-85.97, -66.5], - [-85.97, -61], - [-84.368, -61], - [-84.368, -66.5], - ], - c: true, - }, - ], - }, - { t: 97.000003950891 }, - ], - ix: 1, - }, - o: { a: 0, k: 100, ix: 3 }, - x: { a: 0, k: 0, ix: 4 }, - nm: "Mask 1", - }, - ], - shapes: [ - { - ty: "gr", - it: [ - { - ty: "rc", - d: 1, - s: { a: 0, k: [30.75, 5.5], ix: 2 }, - p: { a: 0, k: [0, 0], ix: 3 }, - r: { a: 0, k: 0, ix: 4 }, - nm: "Rectangle Path 1", - mn: "ADBE Vector Shape - Rect", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 0, ix: 5 }, - lc: 1, - lj: 1, - ml: 4, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [-59.875, -63.75], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [169.725, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Rectangle 1", - np: 3, - cix: 2, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 120.0000048877, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 3, - ty: 4, - nm: "line2 - B", - sr: 1, - ks: { - o: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 12, - s: [0], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 14, - s: [100], - e: [100], - }, - { t: 18.000000733155 }, - ], - ix: 11, - }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - n: "0p667_1_0p333_0", - t: 12, - s: [158.324, 158.375, 0], - e: [167.074, 158.375, 0], - to: [1.45833337306976, 0, 0], - ti: [-1.45833337306976, 0, 0], - }, - { t: 18.000000733155 }, - ], - ix: 2, - }, - a: { a: 0, k: [-71.972, -63.75, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], - t: 12, - s: [0.475, 100, 100], - e: [56.834, 100, 100], - }, - { t: 18.000000733155 }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ty: "rc", - d: 1, - s: { a: 0, k: [30.75, 5.5], ix: 2 }, - p: { a: 0, k: [0, 0], ix: 3 }, - r: { a: 0, k: 0, ix: 4 }, - nm: "Rectangle Path 1", - mn: "ADBE Vector Shape - Rect", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 0, ix: 5 }, - lc: 1, - lj: 1, - ml: 4, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [-71.972, -63.75], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [103.444, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Rectangle 1", - np: 3, - cix: 2, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 94.0000038286985, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 4, - ty: 4, - nm: "line3", - sr: 1, - ks: { - o: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 14, - s: [0], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 16, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 22, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 93, - s: [100], - e: [0], - }, - { t: 97.000003950891 }, - ], - ix: 11, - }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - n: "0p667_1_0p333_0", - t: 14, - s: [110.949, 170.125, 0], - e: [142.449, 170.125, 0], - to: [5.25, 0, 0], - ti: [-5.25, 0, 0], - }, - { t: 22.0000008960784 }, - ], - ix: 2, - }, - a: { a: 0, k: [-59.875, -63.75, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], - t: 14, - s: [0.475, 100, 100], - e: [80.823, 100, 100], - }, - { t: 22.0000008960784 }, - ], - ix: 6, - }, - }, - ao: 0, - hasMask: true, - masksProperties: [ - { - inv: false, - mode: "a", - pt: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - n: "0p667_1_0p167_0p167", - t: 93, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-98.924, -66.5], - [-98.924, -61], - [-20.826, -61], - [-20.826, -66.5], - ], - c: true, - }, - ], - e: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-98.924, -66.5], - [-98.924, -61], - [-40.17, -61], - [-40.17, -66.5], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - n: "0p667_1_0p167_0p167", - t: 94, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-98.924, -66.5], - [-98.924, -61], - [-40.17, -61], - [-40.17, -66.5], - ], - c: true, - }, - ], - e: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-98.924, -66.5], - [-98.924, -61], - [-98.785, -61], - [-98.785, -66.5], - ], - c: true, - }, - ], - }, - { t: 97.2650039616847 }, - ], - ix: 1, - }, - o: { a: 0, k: 100, ix: 3 }, - x: { a: 0, k: 0, ix: 4 }, - nm: "Mask 1", - }, - ], - shapes: [ - { - ty: "gr", - it: [ - { - ty: "rc", - d: 1, - s: { a: 0, k: [30.75, 5.5], ix: 2 }, - p: { a: 0, k: [0, 0], ix: 3 }, - r: { a: 0, k: 0, ix: 4 }, - nm: "Rectangle Path 1", - mn: "ADBE Vector Shape - Rect", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 0, ix: 5 }, - lc: 1, - lj: 1, - ml: 4, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [-59.875, -63.75], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [253.976, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Rectangle 1", - np: 3, - cix: 2, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 120.0000048877, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 5, - ty: 4, - nm: "line4 - A", - sr: 1, - ks: { - o: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 20, - s: [0], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 22, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 26, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 93, - s: [100], - e: [0], - }, - { t: 97.000003950891 }, - ], - ix: 11, - }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - n: "0p667_1_0p333_0", - t: 20, - s: [111.324, 182.125, 0], - e: [120.824, 182.125, 0], - to: [1.58333337306976, 0, 0], - ti: [-1.58333337306976, 0, 0], - }, - { t: 26.0000010590017 }, - ], - ix: 2, - }, - a: { a: 0, k: [-71.972, -63.75, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], - t: 20, - s: [0.475, 100, 100], - e: [56.834, 100, 100], - }, - { t: 26.0000010590017 }, - ], - ix: 6, - }, - }, - ao: 0, - hasMask: true, - masksProperties: [ - { - inv: false, - mode: "a", - pt: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - n: "0p833_0p833_0p167_0p167", - t: 95, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-87.876, -66.5], - [-87.876, -61], - [-56.067, -61], - [-56.067, -66.5], - ], - c: true, - }, - ], - e: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-87.876, -66.5], - [-87.876, -61], - [-66.383, -61], - [-66.383, -66.5], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - n: "0p833_0p833_0p167_0p167", - t: 96, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-87.876, -66.5], - [-87.876, -61], - [-66.383, -61], - [-66.383, -66.5], - ], - c: true, - }, - ], - e: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-87.876, -66.5], - [-87.876, -61], - [-87.497, -61], - [-87.497, -66.5], - ], - c: true, - }, - ], - }, - { t: 97.000003950891 }, - ], - ix: 1, - }, - o: { a: 0, k: 100, ix: 3 }, - x: { a: 0, k: 0, ix: 4 }, - nm: "Mask 1", - }, - ], - shapes: [ - { - ty: "gr", - it: [ - { - ty: "rc", - d: 1, - s: { a: 0, k: [30.75, 5.5], ix: 2 }, - p: { a: 0, k: [0, 0], ix: 3 }, - r: { a: 0, k: 0, ix: 4 }, - nm: "Rectangle Path 1", - mn: "ADBE Vector Shape - Rect", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 0, ix: 5 }, - lc: 1, - lj: 1, - ml: 4, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [-71.972, -63.75], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [103.444, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Rectangle 1", - np: 3, - cix: 2, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 120.0000048877, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 6, - ty: 4, - nm: "line4 - B", - sr: 1, - ks: { - o: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 24, - s: [0], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 26, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 32, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 93, - s: [100], - e: [0], - }, - { t: 97.000003950891 }, - ], - ix: 11, - }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - n: "0p667_1_0p333_0", - t: 24, - s: [136.574, 182.125, 0], - e: [159.824, 182.125, 0], - to: [3.875, 0, 0], - ti: [-3.875, 0, 0], - }, - { t: 32.0000013033867 }, - ], - ix: 2, - }, - a: { a: 0, k: [-59.875, -63.75, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], - t: 24, - s: [0.475, 100, 100], - e: [90.218, 100, 100], - }, - { t: 32.0000013033867 }, - ], - ix: 6, - }, - }, - ao: 0, - hasMask: true, - masksProperties: [ - { - inv: false, - mode: "a", - pt: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - n: "0p833_0p833_0p167_0p167", - t: 92, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-85.97, -66.5], - [-85.97, -61], - [-33.78, -61], - [-33.78, -66.5], - ], - c: true, - }, - ], - e: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-85.97, -66.5], - [-85.97, -61], - [-39.174, -61], - [-39.174, -66.5], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - n: "0p833_0p833_0p167_0p167", - t: 93, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-85.97, -66.5], - [-85.97, -61], - [-39.174, -61], - [-39.174, -66.5], - ], - c: true, - }, - ], - e: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-85.97, -66.5], - [-85.97, -61], - [-82.402, -61], - [-82.402, -66.5], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - n: "0p833_0p833_0p167_0p167", - t: 95, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-85.97, -66.5], - [-85.97, -61], - [-82.402, -61], - [-82.402, -66.5], - ], - c: true, - }, - ], - e: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-85.97, -66.5], - [-85.97, -61], - [-85.866, -61], - [-85.866, -66.5], - ], - c: true, - }, - ], - }, - { t: 96.0000039101602 }, - ], - ix: 1, - }, - o: { a: 0, k: 100, ix: 3 }, - x: { a: 0, k: 0, ix: 4 }, - nm: "Mask 1", - }, - ], - shapes: [ - { - ty: "gr", - it: [ - { - ty: "rc", - d: 1, - s: { a: 0, k: [30.75, 5.5], ix: 2 }, - p: { a: 0, k: [0, 0], ix: 3 }, - r: { a: 0, k: 0, ix: 4 }, - nm: "Rectangle Path 1", - mn: "ADBE Vector Shape - Rect", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 0, ix: 5 }, - lc: 1, - lj: 1, - ml: 4, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [-59.875, -63.75], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [169.725, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Rectangle 1", - np: 3, - cix: 2, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 120.0000048877, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 7, - ty: 4, - nm: "picture-cloud", - sr: 1, - ks: { - o: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 29, - s: [0], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 32, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 55, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 93, - s: [100], - e: [0], - }, - { t: 97.000003950891 }, - ], - ix: 11, - }, - r: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 29, - s: [0], - e: [4], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 42, - s: [4], - e: [-4], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 49, - s: [-4], - e: [0], - }, - { t: 55.0000022401959 }, - ], - ix: 10, - }, - p: { a: 0, k: [114.188, 195.438, 0], ix: 2 }, - a: { a: 0, k: [-83.211, -6.813, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.734, 0.734, 0.333], y: [0, 0, 0] }, - n: ["0p667_1_0p734_0", "0p667_1_0p734_0", "0p667_1_0p333_0"], - t: 29, - s: [19.122, 19.689, 100], - e: [111.8, 114.915, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], - t: 42, - s: [111.8, 114.915, 100], - e: [71.508, 74.274, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], - t: 49, - s: [71.508, 74.274, 100], - e: [97.122, 100, 100], - }, - { t: 55.0000022401959 }, - ], - ix: 6, - }, - }, - ao: 0, - hasMask: true, - masksProperties: [ - { - inv: false, - mode: "a", - pt: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - n: "0p667_1_0p167_0p167", - t: 92, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-87.007, -10.25], - [-87.007, 39.908], - [-9.875, 39.908], - [-9.875, -10.25], - ], - c: true, - }, - ], - e: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-86.235, -10.933], - [-86.235, 40], - [-16.864, 40], - [-16.864, -10.933], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - n: "0p667_1_0p167_0p167", - t: 93, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-86.235, -10.933], - [-86.235, 40], - [-16.864, 40], - [-16.864, -10.933], - ], - c: true, - }, - ], - e: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-87.007, -9.75], - [-87.007, 40.25], - [-83.919, 40.25], - [-83.919, -9.75], - ], - c: true, - }, - ], - }, - { t: 97.000003950891 }, - ], - ix: 1, - }, - o: { a: 0, k: 100, ix: 3 }, - x: { a: 0, k: 0, ix: 4 }, - nm: "Mask 1", - }, - ], - shapes: [ - { - ty: "gr", - it: [ - { - ty: "rc", - d: 1, - s: { a: 0, k: [69.5, 42.75], ix: 2 }, - p: { a: 0, k: [0, 0], ix: 3 }, - r: { a: 0, k: 0, ix: 4 }, - nm: "Rectangle Path 1", - mn: "ADBE Vector Shape - Rect", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 5, ix: 5 }, - lc: 1, - lj: 1, - ml: 4, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [-48.486, 14.533], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Rectangle 1", - np: 3, - cix: 2, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [18.184, 2.339], - [19.961, 0], - [6.909, -14.122], - [5.398, 0], - [0, -23.473], - [-23.472, 0], - [0, 0], - [-0.344, 0.017], - [-0.659, 0], - [0, 20.434], - ], - o: [ - [-4.563, -18.552], - [-16.781, 0], - [-4.75, -1.835], - [-23.472, 0], - [0, 23.472], - [0, 0], - [0.35, 0], - [0.652, 0.034], - [20.435, 0], - [0, -18.82], - ], - v: [ - [52.513, -20.685], - [11.25, -53], - [-26.945, -29.149], - [-42.25, -32], - [-84.75, 10.5], - [-42.25, 53], - [44.75, 53], - [45.785, 52.947], - [47.75, 53], - [84.75, 16], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 20, ix: 5 }, - lc: 1, - lj: 1, - ml: 10, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - n: "0p833_0p833_0p167_0p167", - t: 53, - s: [-49.843, 30.373], - e: [-49.843, 14.373], - to: [0, -2.66666674613953], - ti: [0, 2.66666674613953], - }, - { t: 59.0000024031193 }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [18.39, 18.39], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 53, - s: [0], - e: [100], - }, - { t: 59.0000024031193 }, - ], - ix: 7, - }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Cloud 2", - np: 2, - cix: 2, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 120.0000048877, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 8, - ty: 4, - nm: "R line1", - sr: 1, - ks: { - o: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 29, - s: [0], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 31, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 37, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 85, - s: [100], - e: [0], - }, - { t: 91.000003706506 }, - ], - ix: 11, - }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - n: "0p667_1_0p333_0", - t: 29, - s: [213.949, 144.875, 0], - e: [250.199, 144.875, 0], - to: [6.04166650772095, 0, 0], - ti: [-6.04166650772095, 0, 0], - }, - { - i: { x: 0.667, y: 0.667 }, - o: { x: 0.167, y: 0.167 }, - n: "0p667_0p667_0p167_0p167", - t: 37, - s: [250.199, 144.875, 0], - e: [250.199, 144.875, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0 }, - n: "0p667_1_0p167_0", - t: 85, - s: [250.199, 144.875, 0], - e: [212.949, 144.875, 0], - to: [-6.20833349227905, 0, 0], - ti: [6.20833349227905, 0, 0], - }, - { t: 91.000003706506 }, - ], - ix: 2, - }, - a: { a: 0, k: [-59.875, -63.75, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], - t: 29, - s: [0.475, 100, 100], - e: [92.988, 100, 100], - }, - { - i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, - o: { x: [0.167, 0.167, 0.167], y: [0, 0, 0] }, - n: ["0p833_1_0p167_0", "0p833_1_0p167_0", "0p833_1_0p167_0"], - t: 37, - s: [92.988, 100, 100], - e: [92.988, 100, 100], - }, - { - i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, - o: { x: [0.167, 0.167, 0.167], y: [0, 0, 0] }, - n: ["0p833_1_0p167_0", "0p833_1_0p167_0", "0p833_1_0p167_0"], - t: 85, - s: [92.988, 100, 100], - e: [2.876, 100, 100], - }, - { t: 91.000003706506 }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ty: "rc", - d: 1, - s: { a: 0, k: [30.75, 5.5], ix: 2 }, - p: { a: 0, k: [0, 0], ix: 3 }, - r: { a: 0, k: 0, ix: 4 }, - nm: "Rectangle Path 1", - mn: "ADBE Vector Shape - Rect", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 0, ix: 5 }, - lc: 1, - lj: 1, - ml: 4, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [-59.875, -63.75], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [253.976, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Rectangle 1", - np: 3, - cix: 2, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 29.0000011811942, - op: 120.0000048877, - st: 29.0000011811942, - bm: 0, - }, - { - ddd: 0, - ind: 9, - ty: 4, - nm: "R line2 - A", - sr: 1, - ks: { - o: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 35, - s: [0], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 37, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 43, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 85, - s: [100], - e: [0], - }, - { t: 91.000003706506 }, - ], - ix: 11, - }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - n: "0p667_1_0p333_0", - t: 35, - s: [213.824, 158.375, 0], - e: [224.074, 158.375, 0], - to: [1.70833337306976, 0, 0], - ti: [-1.70833337306976, 0, 0], - }, - { - i: { x: 0.667, y: 0.667 }, - o: { x: 0.167, y: 0.167 }, - n: "0p667_0p667_0p167_0p167", - t: 43, - s: [224.074, 158.375, 0], - e: [224.074, 158.375, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0 }, - n: "0p667_1_0p167_0", - t: 85, - s: [224.074, 158.375, 0], - e: [210.636, 158.375, 0], - to: [-2.23958325386047, 0, 0], - ti: [2.23958325386047, 0, 0], - }, - { t: 91.000003706506 }, - ], - ix: 2, - }, - a: { a: 0, k: [-71.972, -63.75, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], - t: 35, - s: [0.475, 100, 100], - e: [73.199, 100, 100], - }, - { - i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, - o: { x: [0.167, 0.167, 0.167], y: [0, 0, 0] }, - n: ["0p833_1_0p167_0", "0p833_1_0p167_0", "0p833_1_0p167_0"], - t: 43, - s: [73.199, 100, 100], - e: [73.199, 100, 100], - }, - { - i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, - o: { x: [0.167, 0.167, 0.167], y: [0, 0, 0] }, - n: ["0p833_1_0p167_0", "0p833_1_0p167_0", "0p833_1_0p167_0"], - t: 85, - s: [73.199, 100, 100], - e: [8.15, 100, 100], - }, - { t: 91.000003706506 }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ty: "rc", - d: 1, - s: { a: 0, k: [30.75, 5.5], ix: 2 }, - p: { a: 0, k: [0, 0], ix: 3 }, - r: { a: 0, k: 0, ix: 4 }, - nm: "Rectangle Path 1", - mn: "ADBE Vector Shape - Rect", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 0, ix: 5 }, - lc: 1, - lj: 1, - ml: 4, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [-59.875, -63.75], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [169.725, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Rectangle 1", - np: 3, - cix: 2, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 29.0000011811942, - op: 120.0000048877, - st: 29.0000011811942, - bm: 0, - }, - { - ddd: 0, - ind: 10, - ty: 4, - nm: "R line2 - B", - sr: 1, - ks: { - o: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 41, - s: [0], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 43, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 47, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 85, - s: [100], - e: [0], - }, - { t: 91.000003706506 }, - ], - ix: 11, - }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - n: "0p667_1_0p333_0", - t: 41, - s: [261.074, 158.375, 0], - e: [270.074, 158.375, 0], - to: [1.5, 0, 0], - ti: [-1.5, 0, 0], - }, - { - i: { x: 0.667, y: 0.667 }, - o: { x: 0.167, y: 0.167 }, - n: "0p667_0p667_0p167_0p167", - t: 47, - s: [270.074, 158.375, 0], - e: [270.074, 158.375, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0 }, - n: "0p667_1_0p167_0", - t: 85, - s: [270.074, 158.375, 0], - e: [215.824, 158.375, 0], - to: [-9.04166698455811, 0, 0], - ti: [9.04166698455811, 0, 0], - }, - { t: 91.000003706506 }, - ], - ix: 2, - }, - a: { a: 0, k: [-71.972, -63.75, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], - t: 41, - s: [0.475, 100, 100], - e: [56.834, 100, 100], - }, - { - i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, - o: { x: [0.167, 0.167, 0.167], y: [0, 0, 0] }, - n: ["0p833_1_0p167_0", "0p833_1_0p167_0", "0p833_1_0p167_0"], - t: 47, - s: [56.834, 100, 100], - e: [56.834, 100, 100], - }, - { - i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, - o: { x: [0.167, 0.167, 0.167], y: [0, 0, 0] }, - n: ["0p833_1_0p167_0", "0p833_1_0p167_0", "0p833_1_0p167_0"], - t: 85, - s: [56.834, 100, 100], - e: [8.106, 100, 100], - }, - { t: 91.000003706506 }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ty: "rc", - d: 1, - s: { a: 0, k: [30.75, 5.5], ix: 2 }, - p: { a: 0, k: [0, 0], ix: 3 }, - r: { a: 0, k: 0, ix: 4 }, - nm: "Rectangle Path 1", - mn: "ADBE Vector Shape - Rect", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 0, ix: 5 }, - lc: 1, - lj: 1, - ml: 4, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [-71.972, -63.75], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [103.444, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Rectangle 1", - np: 3, - cix: 2, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 29.0000011811942, - op: 120.0000048877, - st: 29.0000011811942, - bm: 0, - }, - { - ddd: 0, - ind: 11, - ty: 4, - nm: "R line3", - sr: 1, - ks: { - o: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 43, - s: [0], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 45, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 51, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 85, - s: [100], - e: [0], - }, - { t: 91.000003706506 }, - ], - ix: 11, - }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - n: "0p667_1_0p333_0", - t: 43, - s: [214.324, 170.125, 0], - e: [245.699, 170.125, 0], - to: [5.22916650772095, 0, 0], - ti: [-5.22916650772095, 0, 0], - }, - { - i: { x: 0.667, y: 0.667 }, - o: { x: 0.167, y: 0.167 }, - n: "0p667_0p667_0p167_0p167", - t: 51, - s: [245.699, 170.125, 0], - e: [245.699, 170.125, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0 }, - n: "0p667_1_0p167_0", - t: 85, - s: [245.699, 170.125, 0], - e: [213.949, 170.125, 0], - to: [-5.29166650772095, 0, 0], - ti: [5.29166650772095, 0, 0], - }, - { t: 91.000003706506 }, - ], - ix: 2, - }, - a: { a: 0, k: [-59.875, -63.75, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], - t: 43, - s: [0.475, 100, 100], - e: [80.823, 100, 100], - }, - { - i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, - o: { x: [0.167, 0.167, 0.167], y: [0, 0, 0] }, - n: ["0p833_1_0p167_0", "0p833_1_0p167_0", "0p833_1_0p167_0"], - t: 51, - s: [80.823, 100, 100], - e: [80.823, 100, 100], - }, - { - i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, - o: { x: [0.167, 0.167, 0.167], y: [0, 0, 0] }, - n: ["0p833_1_0p167_0", "0p833_1_0p167_0", "0p833_1_0p167_0"], - t: 85, - s: [80.823, 100, 100], - e: [5.277, 100, 100], - }, - { t: 91.000003706506 }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ty: "rc", - d: 1, - s: { a: 0, k: [30.75, 5.5], ix: 2 }, - p: { a: 0, k: [0, 0], ix: 3 }, - r: { a: 0, k: 0, ix: 4 }, - nm: "Rectangle Path 1", - mn: "ADBE Vector Shape - Rect", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 0, ix: 5 }, - lc: 1, - lj: 1, - ml: 4, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [-59.875, -63.75], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [253.976, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Rectangle 1", - np: 3, - cix: 2, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 29.0000011811942, - op: 120.0000048877, - st: 29.0000011811942, - bm: 0, - }, - { - ddd: 0, - ind: 12, - ty: 4, - nm: "R line4 - A", - sr: 1, - ks: { - o: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 49, - s: [0], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 51, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 55, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 85, - s: [100], - e: [0], - }, - { t: 91.000003706506 }, - ], - ix: 11, - }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - n: "0p667_1_0p333_0", - t: 49, - s: [214.449, 182.125, 0], - e: [223.324, 182.125, 0], - to: [1.47916662693024, 0, 0], - ti: [-1.47916662693024, 0, 0], - }, - { - i: { x: 0.667, y: 0.667 }, - o: { x: 0.167, y: 0.167 }, - n: "0p667_0p667_0p167_0p167", - t: 55, - s: [223.324, 182.125, 0], - e: [223.324, 182.125, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0 }, - n: "0p667_1_0p167_0", - t: 85, - s: [223.324, 182.125, 0], - e: [211.074, 182.125, 0], - to: [-2.04166674613953, 0, 0], - ti: [2.04166674613953, 0, 0], - }, - { t: 91.000003706506 }, - ], - ix: 2, - }, - a: { a: 0, k: [-71.972, -63.75, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], - t: 49, - s: [0.475, 100, 100], - e: [56.834, 100, 100], - }, - { - i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, - o: { x: [0.167, 0.167, 0.167], y: [0, 0, 0] }, - n: ["0p833_1_0p167_0", "0p833_1_0p167_0", "0p833_1_0p167_0"], - t: 55, - s: [56.834, 100, 100], - e: [56.834, 100, 100], - }, - { - i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, - o: { x: [0.167, 0.167, 0.167], y: [0, 0, 0] }, - n: ["0p833_1_0p167_0", "0p833_1_0p167_0", "0p833_1_0p167_0"], - t: 85, - s: [56.834, 100, 100], - e: [4.962, 100, 100], - }, - { t: 91.000003706506 }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ty: "rc", - d: 1, - s: { a: 0, k: [30.75, 5.5], ix: 2 }, - p: { a: 0, k: [0, 0], ix: 3 }, - r: { a: 0, k: 0, ix: 4 }, - nm: "Rectangle Path 1", - mn: "ADBE Vector Shape - Rect", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 0, ix: 5 }, - lc: 1, - lj: 1, - ml: 4, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [-71.972, -63.75], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [103.444, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Rectangle 1", - np: 3, - cix: 2, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 29.0000011811942, - op: 120.0000048877, - st: 29.0000011811942, - bm: 0, - }, - { - ddd: 0, - ind: 13, - ty: 4, - nm: "loading book Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [200, 38.454, 0], ix: 2 }, - a: { a: 0, k: [250, 250, 0], ix: 1 }, - s: { a: 0, k: [156.083, 156.083, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - n: "0p667_1_0p333_0", - t: 85, - s: [ - { - i: [ - [28.154, 0], - [0, 0], - [0, 0], - [-25.122, 0], - [0, 0], - [0, 0], - ], - o: [ - [-25.122, 0], - [0, 0], - [0, 0], - [23.823, 0], - [0, 0], - [0, 0], - ], - v: [ - [-5.198, -46.346], - [-32.486, -41.148], - [-32.486, 46.346], - [-5.198, 41.148], - [32.486, 46.346], - [32.486, -41.148], - ], - c: true, - }, - ], - e: [ - { - i: [ - [-28.087, 0], - [0, 0], - [0, 0], - [25.062, 0], - [0, 0], - [0, 0], - ], - o: [ - [25.062, 0], - [0, 0], - [0, 0], - [-23.766, 0], - [0, 0], - [0, 0], - ], - v: [ - [-59.709, -46.346], - [-32.486, -41.148], - [-32.486, 46.346], - [-59.709, 41.148], - [-97.302, 46.346], - [-97.302, -41.148], - ], - c: true, - }, - ], - }, - { t: 99.0000040323527 }, - ], - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - n: "0p667_1_0p333_0", - t: 85, - s: [ - { - i: [ - [-17.145, 0], - [-3.641, -1.312], - [0, 0], - [16.883, 0], - [4.29, -1.56], - [0, 0], - ], - o: [ - [20.694, 0], - [0, 0], - [-5.846, -1.595], - [-12.634, 0], - [0, 0], - [1.525, -0.958], - ], - v: [ - [-5.198, -43.346], - [29.486, -39.153], - [29.486, 42.282], - [-5.198, 38.148], - [-29.486, 41.021], - [-29.486, -39.895], - ], - c: true, - }, - ], - e: [ - { - i: [ - [17.008, 0], - [3.612, -1.312], - [0, 0], - [-16.748, 0], - [-4.256, -1.56], - [0, 0], - ], - o: [ - [-20.528, 0], - [0, 0], - [5.799, -1.595], - [12.533, 0], - [0, 0], - [-1.513, -0.958], - ], - v: [ - [-59.896, -43.346], - [-94.302, -39.153], - [-94.302, 42.282], - [-59.896, 38.148], - [-35.802, 41.021], - [-35.802, -39.895], - ], - c: true, - }, - ], - }, - { t: 99.0000040323527 }, - ], - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [282.052, 350.001], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 84, - s: [0], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 85, - s: [100], - e: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - n: ["0p833_0p833_0p167_0p167"], - t: 99, - s: [100], - e: [0], - }, - { t: 100.000004073084 }, - ], - ix: 7, - }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "R-Page 2", - np: 4, - cix: 2, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [28.154, 0], - [0, 0], - [0, 0], - [-25.122, 0], - [0, 0], - [0, 0], - ], - o: [ - [-25.122, 0], - [0, 0], - [0, 0], - [23.823, 0], - [0, 0], - [0, 0], - ], - v: [ - [-5.198, -46.346], - [-32.486, -41.148], - [-32.486, 46.346], - [-5.198, 41.148], - [32.486, 46.346], - [32.486, -41.148], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [-17.145, 0], - [-3.641, -1.312], - [0, 0], - [16.883, 0], - [4.29, -1.56], - [0, 0], - ], - o: [ - [20.694, 0], - [0, 0], - [-5.846, -1.595], - [-12.634, 0], - [0, 0], - [1.525, -0.958], - ], - v: [ - [-5.198, -43.346], - [29.486, -39.153], - [29.486, 42.282], - [-5.198, 38.148], - [-29.486, 41.021], - [-29.486, -39.895], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [282.052, 350.001], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "R-Page", - np: 4, - cix: 2, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [25.122, 0], - [0, 0], - [0, 0], - [-23.823, 0], - [0, 0], - [0, 0], - ], - o: [ - [-28.154, 0], - [0, 0], - [0, 0], - [25.122, 0], - [0, 0], - [0, 0], - ], - v: [ - [5.198, -46.346], - [-32.486, -41.148], - [-32.486, 46.346], - [5.198, 41.148], - [32.486, 46.346], - [32.486, -41.148], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [-20.675, 0], - [-1.526, -0.958], - [0, 0], - [12.634, 0], - [5.846, -1.595], - [0, 0], - ], - o: [ - [17.145, 0], - [0, 0], - [-4.29, -1.56], - [-16.882, 0], - [0, 0], - [3.661, -1.319], - ], - v: [ - [5.198, -43.346], - [29.486, -39.895], - [29.486, 41.021], - [5.198, 38.148], - [-29.486, 42.282], - [-29.486, -39.151], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [217.081, 350.001], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "L-Page", - np: 4, - cix: 2, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [64.538, -45.263], - [74.5, -45.263], - [74.5, 45.263], - [-74.5, 45.263], - [-74.5, -45.263], - [-65.404, -45.263], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 3, ix: 5 }, - lc: 1, - lj: 1, - ml: 10, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [250, 358.081], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Cover", - np: 2, - cix: 2, - ix: 4, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 120.0000048877, - st: 0, - bm: 0, - }, - ], - markers: [], -}; +export const docu_lottie = { + v: "5.1.18", + fr: 29.9700012207031, + ip: 0, + op: 120.0000048877, + w: 400, + h: 400, + nm: "Comp 1", + ddd: 0, + assets: [], + layers: [ + { + ddd: 0, + ind: 1, + ty: 4, + nm: "line1", + sr: 1, + ks: { + o: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 0, + s: [0], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 2, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 8, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 93, + s: [100], + e: [0], + }, + { t: 97.000003950891 }, + ], + ix: 11, + }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + n: "0p667_1_0p333_0", + t: 0, + s: [110.949, 144.875, 0], + e: [147.199, 144.875, 0], + to: [6.04166650772095, 0, 0], + ti: [-6.04166650772095, 0, 0], + }, + { t: 8.00000032584668 }, + ], + ix: 2, + }, + a: { a: 0, k: [-59.875, -63.75, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], + t: 0, + s: [0.475, 100, 100], + e: [92.988, 100, 100], + }, + { t: 8.00000032584668 }, + ], + ix: 6, + }, + }, + ao: 0, + hasMask: true, + masksProperties: [ + { + inv: false, + mode: "a", + pt: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + n: "0p667_1_0p167_0p167", + t: 92, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-98.924, -66.5], + [-98.924, -61], + [-20.826, -61], + [-20.826, -66.5], + ], + c: true, + }, + ], + e: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-98.924, -66.5], + [-98.924, -61], + [-25.608, -61], + [-25.608, -66.5], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + n: "0p667_1_0p167_0p167", + t: 93, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-98.924, -66.5], + [-98.924, -61], + [-25.608, -61], + [-25.608, -66.5], + ], + c: true, + }, + ], + e: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-98.924, -66.5], + [-98.924, -61], + [-98.871, -61], + [-98.871, -66.5], + ], + c: true, + }, + ], + }, + { t: 97.3312539643831 }, + ], + ix: 1, + }, + o: { a: 0, k: 100, ix: 3 }, + x: { a: 0, k: 0, ix: 4 }, + nm: "Mask 1", + }, + ], + shapes: [ + { + ty: "gr", + it: [ + { + ty: "rc", + d: 1, + s: { a: 0, k: [30.75, 5.5], ix: 2 }, + p: { a: 0, k: [0, 0], ix: 3 }, + r: { a: 0, k: 0, ix: 4 }, + nm: "Rectangle Path 1", + mn: "ADBE Vector Shape - Rect", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 0, ix: 5 }, + lc: 1, + lj: 1, + ml: 4, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [-59.875, -63.75], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [253.976, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Rectangle 1", + np: 3, + cix: 2, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 120.0000048877, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 2, + ty: 4, + nm: "line2 - A", + sr: 1, + ks: { + o: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 6, + s: [0], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 8, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 14, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 93, + s: [100], + e: [0], + }, + { t: 97.000003950891 }, + ], + ix: 11, + }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + n: "0p667_1_0p333_0", + t: 6, + s: [111.324, 158.375, 0], + e: [121.574, 158.375, 0], + to: [1.70833337306976, 0, 0], + ti: [-1.70833337306976, 0, 0], + }, + { t: 14.0000005702317 }, + ], + ix: 2, + }, + a: { a: 0, k: [-71.972, -63.75, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], + t: 6, + s: [0.475, 100, 100], + e: [73.199, 100, 100], + }, + { t: 14.0000005702317 }, + ], + ix: 6, + }, + }, + ao: 0, + hasMask: true, + masksProperties: [ + { + inv: false, + mode: "a", + pt: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + n: "0p833_0p833_0p167_0p167", + t: 94, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-85.97, -66.5], + [-85.97, -61], + [-33.78, -61], + [-33.78, -66.5], + ], + c: true, + }, + ], + e: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-85.97, -66.5], + [-85.97, -61], + [-46.457, -61], + [-46.457, -66.5], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + n: "0p833_0p833_0p167_0p167", + t: 95, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-85.97, -66.5], + [-85.97, -61], + [-46.457, -61], + [-46.457, -66.5], + ], + c: true, + }, + ], + e: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-85.97, -66.5], + [-85.97, -61], + [-84.368, -61], + [-84.368, -66.5], + ], + c: true, + }, + ], + }, + { t: 97.000003950891 }, + ], + ix: 1, + }, + o: { a: 0, k: 100, ix: 3 }, + x: { a: 0, k: 0, ix: 4 }, + nm: "Mask 1", + }, + ], + shapes: [ + { + ty: "gr", + it: [ + { + ty: "rc", + d: 1, + s: { a: 0, k: [30.75, 5.5], ix: 2 }, + p: { a: 0, k: [0, 0], ix: 3 }, + r: { a: 0, k: 0, ix: 4 }, + nm: "Rectangle Path 1", + mn: "ADBE Vector Shape - Rect", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 0, ix: 5 }, + lc: 1, + lj: 1, + ml: 4, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [-59.875, -63.75], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [169.725, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Rectangle 1", + np: 3, + cix: 2, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 120.0000048877, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 3, + ty: 4, + nm: "line2 - B", + sr: 1, + ks: { + o: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 12, + s: [0], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 14, + s: [100], + e: [100], + }, + { t: 18.000000733155 }, + ], + ix: 11, + }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + n: "0p667_1_0p333_0", + t: 12, + s: [158.324, 158.375, 0], + e: [167.074, 158.375, 0], + to: [1.45833337306976, 0, 0], + ti: [-1.45833337306976, 0, 0], + }, + { t: 18.000000733155 }, + ], + ix: 2, + }, + a: { a: 0, k: [-71.972, -63.75, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], + t: 12, + s: [0.475, 100, 100], + e: [56.834, 100, 100], + }, + { t: 18.000000733155 }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ty: "rc", + d: 1, + s: { a: 0, k: [30.75, 5.5], ix: 2 }, + p: { a: 0, k: [0, 0], ix: 3 }, + r: { a: 0, k: 0, ix: 4 }, + nm: "Rectangle Path 1", + mn: "ADBE Vector Shape - Rect", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 0, ix: 5 }, + lc: 1, + lj: 1, + ml: 4, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [-71.972, -63.75], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [103.444, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Rectangle 1", + np: 3, + cix: 2, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 94.0000038286985, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 4, + ty: 4, + nm: "line3", + sr: 1, + ks: { + o: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 14, + s: [0], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 16, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 22, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 93, + s: [100], + e: [0], + }, + { t: 97.000003950891 }, + ], + ix: 11, + }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + n: "0p667_1_0p333_0", + t: 14, + s: [110.949, 170.125, 0], + e: [142.449, 170.125, 0], + to: [5.25, 0, 0], + ti: [-5.25, 0, 0], + }, + { t: 22.0000008960784 }, + ], + ix: 2, + }, + a: { a: 0, k: [-59.875, -63.75, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], + t: 14, + s: [0.475, 100, 100], + e: [80.823, 100, 100], + }, + { t: 22.0000008960784 }, + ], + ix: 6, + }, + }, + ao: 0, + hasMask: true, + masksProperties: [ + { + inv: false, + mode: "a", + pt: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + n: "0p667_1_0p167_0p167", + t: 93, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-98.924, -66.5], + [-98.924, -61], + [-20.826, -61], + [-20.826, -66.5], + ], + c: true, + }, + ], + e: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-98.924, -66.5], + [-98.924, -61], + [-40.17, -61], + [-40.17, -66.5], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + n: "0p667_1_0p167_0p167", + t: 94, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-98.924, -66.5], + [-98.924, -61], + [-40.17, -61], + [-40.17, -66.5], + ], + c: true, + }, + ], + e: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-98.924, -66.5], + [-98.924, -61], + [-98.785, -61], + [-98.785, -66.5], + ], + c: true, + }, + ], + }, + { t: 97.2650039616847 }, + ], + ix: 1, + }, + o: { a: 0, k: 100, ix: 3 }, + x: { a: 0, k: 0, ix: 4 }, + nm: "Mask 1", + }, + ], + shapes: [ + { + ty: "gr", + it: [ + { + ty: "rc", + d: 1, + s: { a: 0, k: [30.75, 5.5], ix: 2 }, + p: { a: 0, k: [0, 0], ix: 3 }, + r: { a: 0, k: 0, ix: 4 }, + nm: "Rectangle Path 1", + mn: "ADBE Vector Shape - Rect", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 0, ix: 5 }, + lc: 1, + lj: 1, + ml: 4, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [-59.875, -63.75], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [253.976, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Rectangle 1", + np: 3, + cix: 2, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 120.0000048877, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 5, + ty: 4, + nm: "line4 - A", + sr: 1, + ks: { + o: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 20, + s: [0], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 22, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 26, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 93, + s: [100], + e: [0], + }, + { t: 97.000003950891 }, + ], + ix: 11, + }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + n: "0p667_1_0p333_0", + t: 20, + s: [111.324, 182.125, 0], + e: [120.824, 182.125, 0], + to: [1.58333337306976, 0, 0], + ti: [-1.58333337306976, 0, 0], + }, + { t: 26.0000010590017 }, + ], + ix: 2, + }, + a: { a: 0, k: [-71.972, -63.75, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], + t: 20, + s: [0.475, 100, 100], + e: [56.834, 100, 100], + }, + { t: 26.0000010590017 }, + ], + ix: 6, + }, + }, + ao: 0, + hasMask: true, + masksProperties: [ + { + inv: false, + mode: "a", + pt: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + n: "0p833_0p833_0p167_0p167", + t: 95, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-87.876, -66.5], + [-87.876, -61], + [-56.067, -61], + [-56.067, -66.5], + ], + c: true, + }, + ], + e: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-87.876, -66.5], + [-87.876, -61], + [-66.383, -61], + [-66.383, -66.5], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + n: "0p833_0p833_0p167_0p167", + t: 96, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-87.876, -66.5], + [-87.876, -61], + [-66.383, -61], + [-66.383, -66.5], + ], + c: true, + }, + ], + e: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-87.876, -66.5], + [-87.876, -61], + [-87.497, -61], + [-87.497, -66.5], + ], + c: true, + }, + ], + }, + { t: 97.000003950891 }, + ], + ix: 1, + }, + o: { a: 0, k: 100, ix: 3 }, + x: { a: 0, k: 0, ix: 4 }, + nm: "Mask 1", + }, + ], + shapes: [ + { + ty: "gr", + it: [ + { + ty: "rc", + d: 1, + s: { a: 0, k: [30.75, 5.5], ix: 2 }, + p: { a: 0, k: [0, 0], ix: 3 }, + r: { a: 0, k: 0, ix: 4 }, + nm: "Rectangle Path 1", + mn: "ADBE Vector Shape - Rect", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 0, ix: 5 }, + lc: 1, + lj: 1, + ml: 4, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [-71.972, -63.75], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [103.444, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Rectangle 1", + np: 3, + cix: 2, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 120.0000048877, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 6, + ty: 4, + nm: "line4 - B", + sr: 1, + ks: { + o: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 24, + s: [0], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 26, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 32, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 93, + s: [100], + e: [0], + }, + { t: 97.000003950891 }, + ], + ix: 11, + }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + n: "0p667_1_0p333_0", + t: 24, + s: [136.574, 182.125, 0], + e: [159.824, 182.125, 0], + to: [3.875, 0, 0], + ti: [-3.875, 0, 0], + }, + { t: 32.0000013033867 }, + ], + ix: 2, + }, + a: { a: 0, k: [-59.875, -63.75, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], + t: 24, + s: [0.475, 100, 100], + e: [90.218, 100, 100], + }, + { t: 32.0000013033867 }, + ], + ix: 6, + }, + }, + ao: 0, + hasMask: true, + masksProperties: [ + { + inv: false, + mode: "a", + pt: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + n: "0p833_0p833_0p167_0p167", + t: 92, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-85.97, -66.5], + [-85.97, -61], + [-33.78, -61], + [-33.78, -66.5], + ], + c: true, + }, + ], + e: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-85.97, -66.5], + [-85.97, -61], + [-39.174, -61], + [-39.174, -66.5], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + n: "0p833_0p833_0p167_0p167", + t: 93, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-85.97, -66.5], + [-85.97, -61], + [-39.174, -61], + [-39.174, -66.5], + ], + c: true, + }, + ], + e: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-85.97, -66.5], + [-85.97, -61], + [-82.402, -61], + [-82.402, -66.5], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + n: "0p833_0p833_0p167_0p167", + t: 95, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-85.97, -66.5], + [-85.97, -61], + [-82.402, -61], + [-82.402, -66.5], + ], + c: true, + }, + ], + e: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-85.97, -66.5], + [-85.97, -61], + [-85.866, -61], + [-85.866, -66.5], + ], + c: true, + }, + ], + }, + { t: 96.0000039101602 }, + ], + ix: 1, + }, + o: { a: 0, k: 100, ix: 3 }, + x: { a: 0, k: 0, ix: 4 }, + nm: "Mask 1", + }, + ], + shapes: [ + { + ty: "gr", + it: [ + { + ty: "rc", + d: 1, + s: { a: 0, k: [30.75, 5.5], ix: 2 }, + p: { a: 0, k: [0, 0], ix: 3 }, + r: { a: 0, k: 0, ix: 4 }, + nm: "Rectangle Path 1", + mn: "ADBE Vector Shape - Rect", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 0, ix: 5 }, + lc: 1, + lj: 1, + ml: 4, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [-59.875, -63.75], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [169.725, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Rectangle 1", + np: 3, + cix: 2, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 120.0000048877, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 7, + ty: 4, + nm: "picture-cloud", + sr: 1, + ks: { + o: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 29, + s: [0], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 32, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 55, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 93, + s: [100], + e: [0], + }, + { t: 97.000003950891 }, + ], + ix: 11, + }, + r: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 29, + s: [0], + e: [4], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 42, + s: [4], + e: [-4], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 49, + s: [-4], + e: [0], + }, + { t: 55.0000022401959 }, + ], + ix: 10, + }, + p: { a: 0, k: [114.188, 195.438, 0], ix: 2 }, + a: { a: 0, k: [-83.211, -6.813, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.734, 0.734, 0.333], y: [0, 0, 0] }, + n: ["0p667_1_0p734_0", "0p667_1_0p734_0", "0p667_1_0p333_0"], + t: 29, + s: [19.122, 19.689, 100], + e: [111.8, 114.915, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], + t: 42, + s: [111.8, 114.915, 100], + e: [71.508, 74.274, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], + t: 49, + s: [71.508, 74.274, 100], + e: [97.122, 100, 100], + }, + { t: 55.0000022401959 }, + ], + ix: 6, + }, + }, + ao: 0, + hasMask: true, + masksProperties: [ + { + inv: false, + mode: "a", + pt: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + n: "0p667_1_0p167_0p167", + t: 92, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-87.007, -10.25], + [-87.007, 39.908], + [-9.875, 39.908], + [-9.875, -10.25], + ], + c: true, + }, + ], + e: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-86.235, -10.933], + [-86.235, 40], + [-16.864, 40], + [-16.864, -10.933], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + n: "0p667_1_0p167_0p167", + t: 93, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-86.235, -10.933], + [-86.235, 40], + [-16.864, 40], + [-16.864, -10.933], + ], + c: true, + }, + ], + e: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-87.007, -9.75], + [-87.007, 40.25], + [-83.919, 40.25], + [-83.919, -9.75], + ], + c: true, + }, + ], + }, + { t: 97.000003950891 }, + ], + ix: 1, + }, + o: { a: 0, k: 100, ix: 3 }, + x: { a: 0, k: 0, ix: 4 }, + nm: "Mask 1", + }, + ], + shapes: [ + { + ty: "gr", + it: [ + { + ty: "rc", + d: 1, + s: { a: 0, k: [69.5, 42.75], ix: 2 }, + p: { a: 0, k: [0, 0], ix: 3 }, + r: { a: 0, k: 0, ix: 4 }, + nm: "Rectangle Path 1", + mn: "ADBE Vector Shape - Rect", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 5, ix: 5 }, + lc: 1, + lj: 1, + ml: 4, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [-48.486, 14.533], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Rectangle 1", + np: 3, + cix: 2, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [18.184, 2.339], + [19.961, 0], + [6.909, -14.122], + [5.398, 0], + [0, -23.473], + [-23.472, 0], + [0, 0], + [-0.344, 0.017], + [-0.659, 0], + [0, 20.434], + ], + o: [ + [-4.563, -18.552], + [-16.781, 0], + [-4.75, -1.835], + [-23.472, 0], + [0, 23.472], + [0, 0], + [0.35, 0], + [0.652, 0.034], + [20.435, 0], + [0, -18.82], + ], + v: [ + [52.513, -20.685], + [11.25, -53], + [-26.945, -29.149], + [-42.25, -32], + [-84.75, 10.5], + [-42.25, 53], + [44.75, 53], + [45.785, 52.947], + [47.75, 53], + [84.75, 16], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 20, ix: 5 }, + lc: 1, + lj: 1, + ml: 10, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + n: "0p833_0p833_0p167_0p167", + t: 53, + s: [-49.843, 30.373], + e: [-49.843, 14.373], + to: [0, -2.66666674613953], + ti: [0, 2.66666674613953], + }, + { t: 59.0000024031193 }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [18.39, 18.39], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 53, + s: [0], + e: [100], + }, + { t: 59.0000024031193 }, + ], + ix: 7, + }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Cloud 2", + np: 2, + cix: 2, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 120.0000048877, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 8, + ty: 4, + nm: "R line1", + sr: 1, + ks: { + o: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 29, + s: [0], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 31, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 37, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 85, + s: [100], + e: [0], + }, + { t: 91.000003706506 }, + ], + ix: 11, + }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + n: "0p667_1_0p333_0", + t: 29, + s: [213.949, 144.875, 0], + e: [250.199, 144.875, 0], + to: [6.04166650772095, 0, 0], + ti: [-6.04166650772095, 0, 0], + }, + { + i: { x: 0.667, y: 0.667 }, + o: { x: 0.167, y: 0.167 }, + n: "0p667_0p667_0p167_0p167", + t: 37, + s: [250.199, 144.875, 0], + e: [250.199, 144.875, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0 }, + n: "0p667_1_0p167_0", + t: 85, + s: [250.199, 144.875, 0], + e: [212.949, 144.875, 0], + to: [-6.20833349227905, 0, 0], + ti: [6.20833349227905, 0, 0], + }, + { t: 91.000003706506 }, + ], + ix: 2, + }, + a: { a: 0, k: [-59.875, -63.75, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], + t: 29, + s: [0.475, 100, 100], + e: [92.988, 100, 100], + }, + { + i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, + o: { x: [0.167, 0.167, 0.167], y: [0, 0, 0] }, + n: ["0p833_1_0p167_0", "0p833_1_0p167_0", "0p833_1_0p167_0"], + t: 37, + s: [92.988, 100, 100], + e: [92.988, 100, 100], + }, + { + i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, + o: { x: [0.167, 0.167, 0.167], y: [0, 0, 0] }, + n: ["0p833_1_0p167_0", "0p833_1_0p167_0", "0p833_1_0p167_0"], + t: 85, + s: [92.988, 100, 100], + e: [2.876, 100, 100], + }, + { t: 91.000003706506 }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ty: "rc", + d: 1, + s: { a: 0, k: [30.75, 5.5], ix: 2 }, + p: { a: 0, k: [0, 0], ix: 3 }, + r: { a: 0, k: 0, ix: 4 }, + nm: "Rectangle Path 1", + mn: "ADBE Vector Shape - Rect", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 0, ix: 5 }, + lc: 1, + lj: 1, + ml: 4, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [-59.875, -63.75], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [253.976, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Rectangle 1", + np: 3, + cix: 2, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 29.0000011811942, + op: 120.0000048877, + st: 29.0000011811942, + bm: 0, + }, + { + ddd: 0, + ind: 9, + ty: 4, + nm: "R line2 - A", + sr: 1, + ks: { + o: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 35, + s: [0], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 37, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 43, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 85, + s: [100], + e: [0], + }, + { t: 91.000003706506 }, + ], + ix: 11, + }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + n: "0p667_1_0p333_0", + t: 35, + s: [213.824, 158.375, 0], + e: [224.074, 158.375, 0], + to: [1.70833337306976, 0, 0], + ti: [-1.70833337306976, 0, 0], + }, + { + i: { x: 0.667, y: 0.667 }, + o: { x: 0.167, y: 0.167 }, + n: "0p667_0p667_0p167_0p167", + t: 43, + s: [224.074, 158.375, 0], + e: [224.074, 158.375, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0 }, + n: "0p667_1_0p167_0", + t: 85, + s: [224.074, 158.375, 0], + e: [210.636, 158.375, 0], + to: [-2.23958325386047, 0, 0], + ti: [2.23958325386047, 0, 0], + }, + { t: 91.000003706506 }, + ], + ix: 2, + }, + a: { a: 0, k: [-71.972, -63.75, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], + t: 35, + s: [0.475, 100, 100], + e: [73.199, 100, 100], + }, + { + i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, + o: { x: [0.167, 0.167, 0.167], y: [0, 0, 0] }, + n: ["0p833_1_0p167_0", "0p833_1_0p167_0", "0p833_1_0p167_0"], + t: 43, + s: [73.199, 100, 100], + e: [73.199, 100, 100], + }, + { + i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, + o: { x: [0.167, 0.167, 0.167], y: [0, 0, 0] }, + n: ["0p833_1_0p167_0", "0p833_1_0p167_0", "0p833_1_0p167_0"], + t: 85, + s: [73.199, 100, 100], + e: [8.15, 100, 100], + }, + { t: 91.000003706506 }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ty: "rc", + d: 1, + s: { a: 0, k: [30.75, 5.5], ix: 2 }, + p: { a: 0, k: [0, 0], ix: 3 }, + r: { a: 0, k: 0, ix: 4 }, + nm: "Rectangle Path 1", + mn: "ADBE Vector Shape - Rect", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 0, ix: 5 }, + lc: 1, + lj: 1, + ml: 4, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [-59.875, -63.75], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [169.725, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Rectangle 1", + np: 3, + cix: 2, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 29.0000011811942, + op: 120.0000048877, + st: 29.0000011811942, + bm: 0, + }, + { + ddd: 0, + ind: 10, + ty: 4, + nm: "R line2 - B", + sr: 1, + ks: { + o: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 41, + s: [0], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 43, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 47, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 85, + s: [100], + e: [0], + }, + { t: 91.000003706506 }, + ], + ix: 11, + }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + n: "0p667_1_0p333_0", + t: 41, + s: [261.074, 158.375, 0], + e: [270.074, 158.375, 0], + to: [1.5, 0, 0], + ti: [-1.5, 0, 0], + }, + { + i: { x: 0.667, y: 0.667 }, + o: { x: 0.167, y: 0.167 }, + n: "0p667_0p667_0p167_0p167", + t: 47, + s: [270.074, 158.375, 0], + e: [270.074, 158.375, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0 }, + n: "0p667_1_0p167_0", + t: 85, + s: [270.074, 158.375, 0], + e: [215.824, 158.375, 0], + to: [-9.04166698455811, 0, 0], + ti: [9.04166698455811, 0, 0], + }, + { t: 91.000003706506 }, + ], + ix: 2, + }, + a: { a: 0, k: [-71.972, -63.75, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], + t: 41, + s: [0.475, 100, 100], + e: [56.834, 100, 100], + }, + { + i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, + o: { x: [0.167, 0.167, 0.167], y: [0, 0, 0] }, + n: ["0p833_1_0p167_0", "0p833_1_0p167_0", "0p833_1_0p167_0"], + t: 47, + s: [56.834, 100, 100], + e: [56.834, 100, 100], + }, + { + i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, + o: { x: [0.167, 0.167, 0.167], y: [0, 0, 0] }, + n: ["0p833_1_0p167_0", "0p833_1_0p167_0", "0p833_1_0p167_0"], + t: 85, + s: [56.834, 100, 100], + e: [8.106, 100, 100], + }, + { t: 91.000003706506 }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ty: "rc", + d: 1, + s: { a: 0, k: [30.75, 5.5], ix: 2 }, + p: { a: 0, k: [0, 0], ix: 3 }, + r: { a: 0, k: 0, ix: 4 }, + nm: "Rectangle Path 1", + mn: "ADBE Vector Shape - Rect", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 0, ix: 5 }, + lc: 1, + lj: 1, + ml: 4, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [-71.972, -63.75], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [103.444, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Rectangle 1", + np: 3, + cix: 2, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 29.0000011811942, + op: 120.0000048877, + st: 29.0000011811942, + bm: 0, + }, + { + ddd: 0, + ind: 11, + ty: 4, + nm: "R line3", + sr: 1, + ks: { + o: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 43, + s: [0], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 45, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 51, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 85, + s: [100], + e: [0], + }, + { t: 91.000003706506 }, + ], + ix: 11, + }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + n: "0p667_1_0p333_0", + t: 43, + s: [214.324, 170.125, 0], + e: [245.699, 170.125, 0], + to: [5.22916650772095, 0, 0], + ti: [-5.22916650772095, 0, 0], + }, + { + i: { x: 0.667, y: 0.667 }, + o: { x: 0.167, y: 0.167 }, + n: "0p667_0p667_0p167_0p167", + t: 51, + s: [245.699, 170.125, 0], + e: [245.699, 170.125, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0 }, + n: "0p667_1_0p167_0", + t: 85, + s: [245.699, 170.125, 0], + e: [213.949, 170.125, 0], + to: [-5.29166650772095, 0, 0], + ti: [5.29166650772095, 0, 0], + }, + { t: 91.000003706506 }, + ], + ix: 2, + }, + a: { a: 0, k: [-59.875, -63.75, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], + t: 43, + s: [0.475, 100, 100], + e: [80.823, 100, 100], + }, + { + i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, + o: { x: [0.167, 0.167, 0.167], y: [0, 0, 0] }, + n: ["0p833_1_0p167_0", "0p833_1_0p167_0", "0p833_1_0p167_0"], + t: 51, + s: [80.823, 100, 100], + e: [80.823, 100, 100], + }, + { + i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, + o: { x: [0.167, 0.167, 0.167], y: [0, 0, 0] }, + n: ["0p833_1_0p167_0", "0p833_1_0p167_0", "0p833_1_0p167_0"], + t: 85, + s: [80.823, 100, 100], + e: [5.277, 100, 100], + }, + { t: 91.000003706506 }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ty: "rc", + d: 1, + s: { a: 0, k: [30.75, 5.5], ix: 2 }, + p: { a: 0, k: [0, 0], ix: 3 }, + r: { a: 0, k: 0, ix: 4 }, + nm: "Rectangle Path 1", + mn: "ADBE Vector Shape - Rect", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 0, ix: 5 }, + lc: 1, + lj: 1, + ml: 4, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [-59.875, -63.75], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [253.976, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Rectangle 1", + np: 3, + cix: 2, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 29.0000011811942, + op: 120.0000048877, + st: 29.0000011811942, + bm: 0, + }, + { + ddd: 0, + ind: 12, + ty: 4, + nm: "R line4 - A", + sr: 1, + ks: { + o: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 49, + s: [0], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 51, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 55, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 85, + s: [100], + e: [0], + }, + { t: 91.000003706506 }, + ], + ix: 11, + }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + n: "0p667_1_0p333_0", + t: 49, + s: [214.449, 182.125, 0], + e: [223.324, 182.125, 0], + to: [1.47916662693024, 0, 0], + ti: [-1.47916662693024, 0, 0], + }, + { + i: { x: 0.667, y: 0.667 }, + o: { x: 0.167, y: 0.167 }, + n: "0p667_0p667_0p167_0p167", + t: 55, + s: [223.324, 182.125, 0], + e: [223.324, 182.125, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0 }, + n: "0p667_1_0p167_0", + t: 85, + s: [223.324, 182.125, 0], + e: [211.074, 182.125, 0], + to: [-2.04166674613953, 0, 0], + ti: [2.04166674613953, 0, 0], + }, + { t: 91.000003706506 }, + ], + ix: 2, + }, + a: { a: 0, k: [-71.972, -63.75, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + n: ["0p667_1_0p333_0", "0p667_1_0p333_0", "0p667_1_0p333_0"], + t: 49, + s: [0.475, 100, 100], + e: [56.834, 100, 100], + }, + { + i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, + o: { x: [0.167, 0.167, 0.167], y: [0, 0, 0] }, + n: ["0p833_1_0p167_0", "0p833_1_0p167_0", "0p833_1_0p167_0"], + t: 55, + s: [56.834, 100, 100], + e: [56.834, 100, 100], + }, + { + i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, + o: { x: [0.167, 0.167, 0.167], y: [0, 0, 0] }, + n: ["0p833_1_0p167_0", "0p833_1_0p167_0", "0p833_1_0p167_0"], + t: 85, + s: [56.834, 100, 100], + e: [4.962, 100, 100], + }, + { t: 91.000003706506 }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ty: "rc", + d: 1, + s: { a: 0, k: [30.75, 5.5], ix: 2 }, + p: { a: 0, k: [0, 0], ix: 3 }, + r: { a: 0, k: 0, ix: 4 }, + nm: "Rectangle Path 1", + mn: "ADBE Vector Shape - Rect", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 0, ix: 5 }, + lc: 1, + lj: 1, + ml: 4, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [-71.972, -63.75], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [103.444, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Rectangle 1", + np: 3, + cix: 2, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 29.0000011811942, + op: 120.0000048877, + st: 29.0000011811942, + bm: 0, + }, + { + ddd: 0, + ind: 13, + ty: 4, + nm: "loading book Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [200, 38.454, 0], ix: 2 }, + a: { a: 0, k: [250, 250, 0], ix: 1 }, + s: { a: 0, k: [156.083, 156.083, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + n: "0p667_1_0p333_0", + t: 85, + s: [ + { + i: [ + [28.154, 0], + [0, 0], + [0, 0], + [-25.122, 0], + [0, 0], + [0, 0], + ], + o: [ + [-25.122, 0], + [0, 0], + [0, 0], + [23.823, 0], + [0, 0], + [0, 0], + ], + v: [ + [-5.198, -46.346], + [-32.486, -41.148], + [-32.486, 46.346], + [-5.198, 41.148], + [32.486, 46.346], + [32.486, -41.148], + ], + c: true, + }, + ], + e: [ + { + i: [ + [-28.087, 0], + [0, 0], + [0, 0], + [25.062, 0], + [0, 0], + [0, 0], + ], + o: [ + [25.062, 0], + [0, 0], + [0, 0], + [-23.766, 0], + [0, 0], + [0, 0], + ], + v: [ + [-59.709, -46.346], + [-32.486, -41.148], + [-32.486, 46.346], + [-59.709, 41.148], + [-97.302, 46.346], + [-97.302, -41.148], + ], + c: true, + }, + ], + }, + { t: 99.0000040323527 }, + ], + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + n: "0p667_1_0p333_0", + t: 85, + s: [ + { + i: [ + [-17.145, 0], + [-3.641, -1.312], + [0, 0], + [16.883, 0], + [4.29, -1.56], + [0, 0], + ], + o: [ + [20.694, 0], + [0, 0], + [-5.846, -1.595], + [-12.634, 0], + [0, 0], + [1.525, -0.958], + ], + v: [ + [-5.198, -43.346], + [29.486, -39.153], + [29.486, 42.282], + [-5.198, 38.148], + [-29.486, 41.021], + [-29.486, -39.895], + ], + c: true, + }, + ], + e: [ + { + i: [ + [17.008, 0], + [3.612, -1.312], + [0, 0], + [-16.748, 0], + [-4.256, -1.56], + [0, 0], + ], + o: [ + [-20.528, 0], + [0, 0], + [5.799, -1.595], + [12.533, 0], + [0, 0], + [-1.513, -0.958], + ], + v: [ + [-59.896, -43.346], + [-94.302, -39.153], + [-94.302, 42.282], + [-59.896, 38.148], + [-35.802, 41.021], + [-35.802, -39.895], + ], + c: true, + }, + ], + }, + { t: 99.0000040323527 }, + ], + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [282.052, 350.001], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 84, + s: [0], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 85, + s: [100], + e: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + n: ["0p833_0p833_0p167_0p167"], + t: 99, + s: [100], + e: [0], + }, + { t: 100.000004073084 }, + ], + ix: 7, + }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "R-Page 2", + np: 4, + cix: 2, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [28.154, 0], + [0, 0], + [0, 0], + [-25.122, 0], + [0, 0], + [0, 0], + ], + o: [ + [-25.122, 0], + [0, 0], + [0, 0], + [23.823, 0], + [0, 0], + [0, 0], + ], + v: [ + [-5.198, -46.346], + [-32.486, -41.148], + [-32.486, 46.346], + [-5.198, 41.148], + [32.486, 46.346], + [32.486, -41.148], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [-17.145, 0], + [-3.641, -1.312], + [0, 0], + [16.883, 0], + [4.29, -1.56], + [0, 0], + ], + o: [ + [20.694, 0], + [0, 0], + [-5.846, -1.595], + [-12.634, 0], + [0, 0], + [1.525, -0.958], + ], + v: [ + [-5.198, -43.346], + [29.486, -39.153], + [29.486, 42.282], + [-5.198, 38.148], + [-29.486, 41.021], + [-29.486, -39.895], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [282.052, 350.001], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "R-Page", + np: 4, + cix: 2, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [25.122, 0], + [0, 0], + [0, 0], + [-23.823, 0], + [0, 0], + [0, 0], + ], + o: [ + [-28.154, 0], + [0, 0], + [0, 0], + [25.122, 0], + [0, 0], + [0, 0], + ], + v: [ + [5.198, -46.346], + [-32.486, -41.148], + [-32.486, 46.346], + [5.198, 41.148], + [32.486, 46.346], + [32.486, -41.148], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [-20.675, 0], + [-1.526, -0.958], + [0, 0], + [12.634, 0], + [5.846, -1.595], + [0, 0], + ], + o: [ + [17.145, 0], + [0, 0], + [-4.29, -1.56], + [-16.882, 0], + [0, 0], + [3.661, -1.319], + ], + v: [ + [5.198, -43.346], + [29.486, -39.895], + [29.486, 41.021], + [5.198, 38.148], + [-29.486, 42.282], + [-29.486, -39.151], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [217.081, 350.001], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "L-Page", + np: 4, + cix: 2, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [64.538, -45.263], + [74.5, -45.263], + [74.5, 45.263], + [-74.5, 45.263], + [-74.5, -45.263], + [-65.404, -45.263], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.21568627450980393, 0.39215686274509803, 0.4980392156862745, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 3, ix: 5 }, + lc: 1, + lj: 1, + ml: 10, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [250, 358.081], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Cover", + np: 2, + cix: 2, + ix: 4, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 120.0000048877, + st: 0, + bm: 0, + }, + ], + markers: [], +}; diff --git a/src/electron/renderer/assets/lotties/index.js b/src/electron/renderer/assets/lotties/index.js index 01945f898..544f3e4a5 100644 --- a/src/electron/renderer/assets/lotties/index.js +++ b/src/electron/renderer/assets/lotties/index.js @@ -1,9940 +1,9940 @@ -export * from "./overview-lotties"; -export * from "./contact-us-lotties"; -export * from "./documentation-lotties"; - -export const newDataset = { - v: "5.5.1", - fr: 60, - ip: 0, - op: 180, - w: 500, - h: 500, - nm: "Main Comp", - ddd: 0, - assets: [], - layers: [ - { - ddd: 0, - ind: 1, - ty: 4, - nm: "random shapes ", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [253.628, 212.369, 0], ix: 2 }, - a: { a: 0, k: [177.182, 168.578, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-1.545, 1.097], - [-0.742, 1.604], - [-1.551, 0.087], - [-0.56, -3.958], - [3.968, -4.264], - [3, 1.018], - [-0.026, 3.244], - [-2.472, 1.348], - ], - o: [ - [1.643, -1.164], - [0.741, -1.602], - [1.551, -0.087], - [0.993, 7.007], - [-3.817, 4.13], - [-3, -1.03], - [0.013, -1.641], - [2.056, -1.119], - ], - v: [ - [-1.992, -5.315], - [0.805, -9.482], - [4.021, -12.623], - [9.91, -7.833], - [6.051, 7.45], - [-5.737, 11.692], - [-10.878, 4.205], - [-8.367, -2.568], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.9803921568627451, 0.8117647058823529, 0.7843137254901961, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [203.042, 54.429], - to: [0, -0.375], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 45, - s: [203.042, 52.179], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 90, - s: [203.042, 54.429], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 135, - s: [203.042, 52.179], - to: [0, 0], - ti: [0, -0.375], - }, - { t: 180, s: [203.042, 54.429] }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 0, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 38, - s: [12], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 86, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 141, - s: [8], - }, - { t: 179, s: [0] }, - ], - ix: 6, - }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-2.013, 0.899], - [-0.956, 1.792], - [-2.031, -0.359], - [-0.776, -5.208], - [5.157, -4.1], - [3.942, 2.27], - [-0.004, 4.024], - [-3.225, 0.917], - ], - o: [ - [2.14, -0.956], - [0.956, -1.792], - [2.031, 0.358], - [1.376, 9.238], - [-4.963, 3.946], - [-3.942, -2.269], - [0.001, -2.034], - [2.682, -0.763], - ], - v: [ - [-2.697, -7.447], - [0.926, -11.829], - [5.107, -14.814], - [12.872, -6.93], - [7.975, 11.227], - [-7.436, 12.661], - [-14.245, 1.67], - [-11.02, -5.975], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.3137254901960784, 0.8901960784313725, 0.7607843137254902, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [14.498, 166.072], - to: [0, -0.417], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 45, - s: [14.498, 163.572], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 90, - s: [14.498, 166.072], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 135, - s: [14.498, 163.572], - to: [0, 0], - ti: [0, -0.417], - }, - { t: 180, s: [14.498, 166.072] }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.167], y: [0.167] }, - t: 90, - s: [20], - }, - { t: 179, s: [0] }, - ], - ix: 6, - }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-0.136, -2.315], - [-2.107, 2.279], - [4.348, 1.044], - ], - o: [ - [0.2, 3.417], - [1.62, -1.752], - [-3.676, -0.883], - ], - v: [ - [-6.295, -0.401], - [4.812, 3.843], - [1.001, -5.239], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.9607843137254902, 0.7803921568627451, 0.7529411764705882, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [312.264, 50.735], - to: [0, 0.333], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 45, - s: [312.264, 52.735], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 90, - s: [312.264, 50.735], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 135, - s: [312.264, 52.735], - to: [0, 0], - ti: [0, 0.333], - }, - { t: 180, s: [312.264, 50.735] }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 0, - s: [0], - }, - { t: 179, s: [360] }, - ], - ix: 6, - }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 2, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-2.866, -1.457], - [-0.018, 6.544], - [1.9, -1.991], - [2.538, -3.165], - [1.298, -2.283], - ], - o: [ - [7.212, 3.666], - [0.019, -6.626], - [-1.799, 1.884], - [-2.409, 3.006], - [-0.73, 1.284], - ], - v: [ - [-7.618, 9.113], - [12.677, -0.438], - [-2.563, -10.788], - [-1.82, -0.517], - [-11.966, 3.145], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.9803921568627451, 0.7803921568627451, 0.7490196078431373, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [57.545, 324.127], - to: [0, -0.208], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 45, - s: [57.545, 322.877], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 90, - s: [57.545, 324.127], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 135, - s: [57.545, 322.877], - to: [0, 0], - ti: [0, -0.208], - }, - { t: 180, s: [57.545, 324.127] }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.167], y: [0.167] }, - t: 90, - s: [20], - }, - { t: 179, s: [0] }, - ], - ix: 6, - }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 2, - cix: 2, - bm: 0, - ix: 4, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-3.331, -1.304], - [0.27, -6.252], - [1.955, 0.211], - [3.351, 2.645], - [3.295, 3.238], - [-1.673, 1.706], - ], - o: [ - [2.658, 1.041], - [-0.128, 2.979], - [-2.158, -0.232], - [-4.154, -3.278], - [-2.329, -2.289], - [1.84, -1.877], - ], - v: [ - [-1.355, -7.342], - [12.168, 4.31], - [7.383, 10.094], - [2.393, 3.245], - [-9.533, -0.073], - [-10.765, -8.428], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.3137254901960784, 0.8901960784313725, 0.7607843137254902, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [341.675, 10.555], - to: [0, -0.833], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 45, - s: [341.675, 5.555], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 90, - s: [341.675, 10.555], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 135, - s: [341.675, 5.555], - to: [0, 0], - ti: [0, -0.833], - }, - { t: 180, s: [341.675, 10.555] }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100.074, 97.659], ix: 3 }, - r: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.167], y: [0.167] }, - t: 90, - s: [20], - }, - { t: 179, s: [0] }, - ], - ix: 6, - }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 5", - np: 2, - cix: 2, - bm: 0, - ix: 5, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 2, - ty: 4, - nm: "writen stuff ", - parent: 24, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [67.863, 121.956, 0], ix: 2 }, - a: { a: 0, k: [43.663, 62.862, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: -30, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-27.601, 7.708], - [27.601, -7.708], - ], - c: false, - }, - ], - }, - { - i: { x: 0.833, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 15, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-27.601, 7.708], - [-10.899, 3.792], - ], - c: false, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 60, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-27.601, 7.708], - [27.601, -7.708], - ], - c: false, - }, - ], - }, - { - i: { x: 0.833, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 105, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-27.601, 7.708], - [-10.899, 3.792], - ], - c: false, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 150, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-27.601, 7.708], - [27.601, -7.708], - ], - c: false, - }, - ], - }, - { - i: { x: 0.833, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 195, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-27.601, 7.708], - [-10.899, 3.792], - ], - c: false, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 240, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-27.601, 7.708], - [27.601, -7.708], - ], - c: false, - }, - ], - }, - { - i: { x: 0.833, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 285, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-27.601, 7.708], - [-10.899, 3.792], - ], - c: false, - }, - ], - }, - { - t: 330, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-27.601, 7.708], - [27.601, -7.708], - ], - c: false, - }, - ], - }, - ], - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 1.838, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [28.52, 45.548], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-42.702, 11.29], - [42.702, -11.29], - ], - c: false, - }, - ], - }, - { - i: { x: 0.833, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 45, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-42.702, 11.29], - [-0.798, 1.21], - ], - c: false, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 90, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-42.702, 11.29], - [42.702, -11.29], - ], - c: false, - }, - ], - }, - { - i: { x: 0.833, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 135, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-42.702, 11.29], - [-0.798, 1.21], - ], - c: false, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 180, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-42.702, 11.29], - [42.702, -11.29], - ], - c: false, - }, - ], - }, - { - i: { x: 0.833, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 225, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-42.702, 11.29], - [-0.798, 1.21], - ], - c: false, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 270, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-42.702, 11.29], - [42.702, -11.29], - ], - c: false, - }, - ], - }, - { - i: { x: 0.833, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 315, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-42.702, 11.29], - [-0.798, 1.21], - ], - c: false, - }, - ], - }, - { - t: 360, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-42.702, 11.29], - [42.702, -11.29], - ], - c: false, - }, - ], - }, - ], - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 1.838, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [43.644, 26.458], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: -18, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-42.721, 10.66], - [42.721, -10.66], - ], - c: false, - }, - ], - }, - { - i: { x: 0.833, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 27, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-42.721, 10.66], - [10.721, -0.66], - ], - c: false, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 72, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-42.721, 10.66], - [42.721, -10.66], - ], - c: false, - }, - ], - }, - { - i: { x: 0.833, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 117, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-42.721, 10.66], - [10.721, -0.66], - ], - c: false, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 162, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-42.721, 10.66], - [42.721, -10.66], - ], - c: false, - }, - ], - }, - { - i: { x: 0.833, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 207, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-42.721, 10.66], - [10.721, -0.66], - ], - c: false, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 252, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-42.721, 10.66], - [42.721, -10.66], - ], - c: false, - }, - ], - }, - { - i: { x: 0.833, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 297, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-42.721, 10.66], - [10.721, -0.66], - ], - c: false, - }, - ], - }, - { - t: 342, - s: [ - { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-42.721, 10.66], - [42.721, -10.66], - ], - c: false, - }, - ], - }, - ], - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 1.838, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [43.686, 11.579], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 2, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [2.064, -0.721], - [0, 0], - [-0.004, 2.577], - [0, 0], - [-2.065, 0.691], - [0, 0], - [0.007, -2.472], - [0, 0], - ], - o: [ - [0, 0], - [-2.064, 0.721], - [0, 0], - [0.004, -2.576], - [0, 0], - [2.065, -0.691], - [0, 0], - [-0.007, 2.472], - ], - v: [ - [17.548, 1.166], - [-17.587, 13.438], - [-21.317, 10.077], - [-21.308, 4.21], - [-17.562, -1.706], - [17.588, -13.467], - [21.314, -10.243], - [21.298, -4.615], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [22.133, 111.315], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 2, - cix: 2, - bm: 0, - ix: 4, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.629, -3.108], - [0.076, -0.632], - [0, 0], - [0.629, -3.108], - [0.128, -0.64], - [0, 0], - [2.646, -0.418], - [0, 0], - [-0.684, 3.104], - [-0.06, 0.307], - [0, 0], - [-0.74, 3.005], - [0, 0], - ], - o: [ - [0, 0], - [-0.162, -0.594], - [-3.883, 0.613], - [0, 0], - [-0.102, -0.564], - [-0.802, -3.544], - [0, 0], - [4.065, -0.657], - [0, 0], - [0.069, 0.272], - [4.068, -0.643], - [0, 0], - [-4.029, 0.636], - ], - v: [ - [7.663, -4.853], - [6.437, 3.275], - [2.592, -9.881], - [-3.553, -3.082], - [-5.315, 5.158], - [-6.95, -2.464], - [-14.006, -7.246], - [-7.752, 11.682], - [-1.252, 4.826], - [0.246, -2.184], - [3.938, 9.835], - [10.537, 3.262], - [14.006, -11.682], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.23921568627450981, 0.7215686274509804, 0.615686274509804, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [8.127, 0.515], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [73.75, 73.75], ix: 3 }, - r: { a: 0, k: -5.909, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 5", - np: 2, - cix: 2, - bm: 0, - ix: 5, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: -18, - op: 185, - st: -18, - bm: 0, - }, - { - ddd: 0, - ind: 3, - ty: 4, - nm: "front blue screen", - sr: 1, - ks: { - o: { a: 0, k: 60, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: -15, - s: [111.114, 291.607, 0], - to: [0, -0.667, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 15, - s: [111.114, 287.607, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 45, - s: [111.114, 291.607, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 75, - s: [111.114, 287.607, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 105, - s: [111.114, 291.607, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 135, - s: [111.114, 287.607, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 165, - s: [111.114, 291.607, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 195, - s: [111.114, 287.607, 0], - to: [0, 0, 0], - ti: [0, -0.667, 0], - }, - { t: 225, s: [111.114, 291.607, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [31.181, 44.245, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-31.181, -24.245], - [31.181, -44.245], - [31.181, 19.246], - [-31.181, 44.246], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "gf", - o: { a: 0, k: 100, ix: 10 }, - r: 1, - bm: 0, - g: { - p: 3, - k: { - a: 0, - k: [0, 0.165, 0.918, 0.925, 0.5, 0.112, 0.859, 0.867, 1, 0.059, 0.8, 0.808], - ix: 9, - }, - }, - s: { a: 0, k: [0, 0], ix: 5 }, - e: { a: 0, k: [100, 0], ix: 6 }, - t: 1, - nm: "Gradient Fill 1", - mn: "ADBE Vector Graphic - G-Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [31.181, 44.246], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: -15, - op: 185, - st: -15, - bm: 0, - }, - { - ddd: 0, - ind: 4, - ty: 4, - nm: "shirt ", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 20, - s: [-5.062], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 42, - s: [-7.289], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 67, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 91, - s: [0.5], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 120, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 151, - s: [0.5], - }, - { t: 179, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [385.583, 308.096, 0], - to: [-0.833, 0, 0], - ti: [0.833, 0, 0], - }, - { - i: { x: 0.667, y: 0.667 }, - o: { x: 0.167, y: 0.167 }, - t: 23, - s: [380.583, 308.096, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 45, - s: [380.583, 308.096, 0], - to: [0.833, 0, 0], - ti: [-0.833, 0, 0], - }, - { t: 67, s: [385.583, 308.096, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [42.732, 111.633, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [2.299, -1.901], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [1.701, -0.489], - [-1.701, 0.951], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.17254901960784313, 0.6549019607843137, 0.5490196078431373, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 1, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [32.752, 45.542], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [-1.237, 3.289], - [0, 0], - ], - o: [ - [0, 0], - [0.233, -0.623], - [0, 0], - ], - v: [ - [-4.745, 6.62], - [4.512, -3.959], - [4.512, -6.62], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.17254901960784313, 0.6549019607843137, 0.5490196078431373, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 1, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [26.538, 50.453], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-3.329, -6.202], - [-7.168, 4.561], - [0, 0], - [0, 0], - [3.934, -5.486], - ], - o: [ - [0, 0], - [7.169, -4.561], - [0, 0], - [0, 0], - [-3.935, 5.487], - ], - v: [ - [-6.597, 25.857], - [2.757, 11.209], - [5.903, -25.857], - [-3.356, -15.395], - [-2.218, 11.028], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.24313725490196078, 0.7843137254901961, 0.6627450980392157, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [25.148, 72.35], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 2, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [22.267, -26.357], - [-6.477, -3.239], - [6.477, -6.476], - [-16.191, -1.619], - [-6.476, -3.239], - [-4.857, 4.857], - [1.09, 27.694], - [1.403, 14.861], - [12.952, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [16.191, 1.62], - [6.477, 3.238], - [4.858, -4.858], - [-0.493, -12.545], - [-1.223, -12.953], - [-12.954, 0], - ], - v: [ - [-42.482, -28.294], - [-20.939, -9.678], - [-21.754, 19.43], - [-16.896, 34.001], - [9.01, 59.908], - [34.915, 61.527], - [41.393, 19.43], - [39.773, -30.762], - [13.868, -66.383], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.3137254901960784, 0.8901960784313725, 0.7607843137254902, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [42.732, 66.633], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 5", - np: 2, - cix: 2, - bm: 0, - ix: 4, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 5, - ty: 4, - nm: "front leg ", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 23, - s: [5.085], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 43, - s: [5.085], - }, - { t: 64, s: [0] }, - ], - ix: 10, - }, - p: { a: 0, k: [388.143, 310.242, 0], ix: 2 }, - a: { a: 0, k: [95.289, 31.206, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [10.48, -4.161], - [-10.48, 4.161], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.689999988032, 0.819999964097, 0.783999992819, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 1, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [65, 70.783], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [0.503, -4.107], - [-7.48, -0.992], - [7.48, 4.107], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.764999988032, 0.847000002394, 0.823999980852, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [63.856, 74.944], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [-3.086, -11.8], - [-4.175, -1.271], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [3.086, 11.799], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-24.931, -17.472], - [-4.268, 1.498], - [8.802, 20.921], - [24.931, 12.681], - [-12.952, -20.921], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.764999988032, 0.847000002394, 0.823999980852, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [93.643, 33.045], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 2, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.481, 0.698], - [0.32, -0.755], - [-0.536, 0.049], - ], - o: [ - [-0.232, -0.338], - [-0.32, 0.754], - [0.405, -0.039], - ], - v: [ - [0.73, -0.299], - [-0.891, -0.557], - [0.264, 1.262], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.764999988032, 0.847000002394, 0.823999980852, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [84.168, 101.916], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 2, - cix: 2, - bm: 0, - ix: 4, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.48, 0.698], - [0.32, -0.755], - [-0.536, 0.049], - ], - o: [ - [-0.233, -0.338], - [-0.32, 0.754], - [0.406, -0.039], - ], - v: [ - [0.731, -0.3], - [-0.891, -0.557], - [0.264, 1.263], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.764999988032, 0.847000002394, 0.823999980852, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [61.729, 89.265], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 5", - np: 2, - cix: 2, - bm: 0, - ix: 5, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.48, 0.698], - [0.32, -0.755], - [-0.536, 0.049], - ], - o: [ - [-0.233, -0.338], - [-0.32, 0.754], - [0.406, -0.038], - ], - v: [ - [0.731, -0.299], - [-0.891, -0.557], - [0.264, 1.262], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.764999988032, 0.847000002394, 0.823999980852, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [43.674, 67.522], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 6", - np: 2, - cix: 2, - bm: 0, - ix: 6, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.818, 0.221], - [-0.243, -0.783], - [-0.377, 0.385], - ], - o: [ - [-0.396, -0.107], - [0.243, 0.782], - [0.285, -0.29], - ], - v: [ - [0.354, -0.885], - [-1.049, -0.033], - [1.008, 0.607], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.764999988032, 0.847000002394, 0.823999980852, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [71.929, 95.309], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 7", - np: 2, - cix: 2, - bm: 0, - ix: 7, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.818, 0.221], - [-0.244, -0.783], - [-0.377, 0.385], - ], - o: [ - [-0.396, -0.107], - [0.243, 0.782], - [0.285, -0.29], - ], - v: [ - [0.355, -0.885], - [-1.049, -0.033], - [1.007, 0.607], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.764999988032, 0.847000002394, 0.823999980852, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [44.561, 74.865], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 8", - np: 2, - cix: 2, - bm: 0, - ix: 8, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.818, 0.222], - [-0.243, -0.784], - [-0.377, 0.385], - ], - o: [ - [-0.396, -0.106], - [0.244, 0.782], - [0.285, -0.291], - ], - v: [ - [0.355, -0.886], - [-1.05, -0.033], - [1.007, 0.606], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.764999988032, 0.847000002394, 0.823999980852, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [56.343, 56.799], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 9", - np: 2, - cix: 2, - bm: 0, - ix: 9, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.787, 0.313], - [-0.153, -0.806], - [-0.418, 0.339], - ], - o: [ - [-0.382, -0.151], - [0.153, 0.804], - [0.316, -0.256], - ], - v: [ - [0.425, -0.873], - [-1.067, -0.186], - [0.904, 0.684], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.764999988032, 0.847000002394, 0.823999980852, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [66.553, 92.192], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 10", - np: 2, - cix: 2, - bm: 0, - ix: 10, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.531, -0.661], - [-0.815, -0.091], - [0.201, 0.499], - ], - o: [ - [-0.257, 0.319], - [0.814, 0.092], - [-0.152, -0.378], - ], - v: [ - [-0.616, -0.529], - [-0.399, 1.098], - [1.013, -0.529], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.764999988032, 0.847000002394, 0.823999980852, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [70.136, 48.195], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 11", - np: 2, - cix: 2, - bm: 0, - ix: 11, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-0.252, 2.604], - [0.498, -1.165], - ], - o: [ - [0.055, -0.57], - [-0.497, 1.164], - ], - v: [ - [1.278, -0.278], - [-0.836, -1.161], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.764999988032, 0.847000002394, 0.823999980852, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [48.968, 80.26], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 12", - np: 2, - cix: 2, - bm: 0, - ix: 12, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-0.252, 2.603], - [0.498, -1.164], - ], - o: [ - [0.055, -0.57], - [-0.497, 1.165], - ], - v: [ - [1.278, -0.278], - [-0.836, -1.161], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.764999988032, 0.847000002394, 0.823999980852, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [62.616, 53.056], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 13", - np: 2, - cix: 2, - bm: 0, - ix: 13, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [1.73, -1.961], - [-1.087, 0.651], - ], - o: [ - [-0.379, 0.43], - [1.086, -0.652], - ], - v: [ - [-0.951, -0.323], - [0.244, 1.633], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.764999988032, 0.847000002394, 0.823999980852, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [78.041, 44.59], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 14", - np: 2, - cix: 2, - bm: 0, - ix: 14, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [4.682, -1.015], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [4.724, -3.801], - [-4.724, 3.801], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.764999988032, 0.847000002394, 0.823999980852, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 1, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [88.873, 108.948], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 15", - np: 2, - cix: 2, - bm: 0, - ix: 15, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-0.96, -1.956], - [-0.071, 1.899], - ], - o: [ - [0.318, 0.649], - [0.072, -1.899], - ], - v: [ - [-0.987, -0.188], - [1.875, 0.245], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.764999988032, 0.847000002394, 0.823999980852, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [78.645, 97.893], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 16", - np: 2, - cix: 2, - bm: 0, - ix: 16, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-0.273, 2.16], - [1.104, -1.547], - ], - o: [ - [0.092, -0.719], - [-1.104, 1.547], - ], - v: [ - [1.583, 0.662], - [-0.57, -1.275], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.764999988032, 0.847000002394, 0.823999980852, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [55.899, 85.138], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 17", - np: 2, - cix: 2, - bm: 0, - ix: 17, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [1.497, 1.582], - [-0.496, -1.835], - ], - o: [ - [-0.497, -0.526], - [0.496, 1.834], - ], - v: [ - [0.931, -0.437], - [-1.932, 0.001], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.764999988032, 0.847000002394, 0.823999980852, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [50.605, 61.327], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 18", - np: 2, - cix: 2, - bm: 0, - ix: 18, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [1.918, -1.032], - [-1.901, 0], - ], - o: [ - [-0.638, 0.343], - [1.9, 0], - ], - v: [ - [0.155, -0.923], - [-0.172, 1.955], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.764999988032, 0.847000002394, 0.823999980852, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [86.167, 39.934], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 19", - np: 2, - cix: 2, - bm: 0, - ix: 19, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [10.662, -8.47], - [-15.964, -8.471], - [0, 0], - ], - o: [ - [0, 0], - [-10.663, 8.471], - [15.964, 8.471], - [0, 0], - ], - v: [ - [31.568, -36.833], - [-20.905, -7.475], - [-10.48, 18.914], - [23.404, 36.833], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.764999988032, 0.847000002394, 0.823999980852, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 1, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [61.832, 68.857], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 20", - np: 2, - cix: 2, - bm: 0, - ix: 20, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [20.239, -15.382], - [13.488, -24.226], - [-26.722, -11.845], - [-12.999, -4.641], - [-1.288, -0.443], - [-1.582, 0.298], - [-4.801, 4.586], - [1.027, 2.222], - [0.844, 1.355], - [5.21, 4.744], - [0, 0], - [-3.238, 9.715], - ], - o: [ - [0, 0], - [-6.773, 12.163], - [0, 0], - [1.509, 0.539], - [1.526, 0.526], - [0, 0], - [0, 0], - [-0.459, -0.994], - [-2.001, -3.209], - [-14.991, -13.649], - [0, 0], - [3.238, -9.715], - ], - v: [ - [4.259, -43.574], - [-57.267, 3.381], - [-17.497, 42.357], - [15.177, 54.557], - [18.34, 58.429], - [23.349, 57.354], - [32.996, 49.962], - [34.086, 45.832], - [29.839, 42.949], - [19.392, 30.846], - [-1.859, 12.385], - [60.802, -20.368], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.811999990426, 0.913999968884, 0.885999971278, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [64.289, 59.206], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 21", - np: 2, - cix: 2, - bm: 0, - ix: 21, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 6, - ty: 4, - nm: "front foot ", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 23, - s: [-9.209], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 43, - s: [-9.209], - }, - { t: 64, s: [0] }, - ], - ix: 10, - }, - p: { a: 0, k: [388.048, 416.894, 0], ix: 2 }, - a: { a: 0, k: [11.764, 30.553, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [6.099, -5.573], - [0.432, 5.573], - [-6.099, 1.573], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 23, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [3.151, -7.697], - [-3.113, 3.225], - [-9.047, -0.551], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 43, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [3.151, -7.697], - [-3.113, 3.225], - [-9.047, -0.551], - ], - c: true, - }, - ], - }, - { - t: 64, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [6.099, -5.573], - [0.432, 5.573], - [-6.099, 1.573], - ], - c: true, - }, - ], - }, - ], - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.8980392156862745, 0.7254901960784313, 0.4392156862745098, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [7.756, 7.436], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 3.237], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-8.089, 0.913], - [3.231, 7.846], - [8.089, 1.37], - [2.768, -7.846], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 23, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 3.237], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-12.048, -2.008], - [1.314, 6.396], - [6.172, -0.08], - [1.53, -8.807], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 43, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 3.237], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-12.048, -2.008], - [1.314, 6.396], - [6.172, -0.08], - [1.53, -8.807], - ], - c: true, - }, - ], - }, - { - t: 64, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 3.237], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-8.089, 0.913], - [3.231, 7.846], - [8.089, 1.37], - [2.768, -7.846], - ], - c: true, - }, - ], - }, - ], - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.996078431372549, 0.8431372549019608, 0.5882352941176471, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [9.746, 8.097], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [ - { - i: [ - [0, 0], - [-3.296, -4.749], - [7.384, -7.649], - [0, 0], - [-1.996, 1.385], - [-2.506, 0.395], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0.758, -0.526], - [0, 0], - [0, 0], - ], - v: [ - [3.824, -11.31], - [12.264, -7.581], - [2.506, 12.331], - [-12.264, 12.331], - [-9.216, 8.65], - [-1.45, 4.419], - [0, -8.374], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 23, - s: [ - { - i: [ - [0, 0], - [-3.296, -4.749], - [7.384, -7.649], - [0, 0], - [-1.996, 1.385], - [-2.506, 0.395], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0.758, -0.526], - [0, 0], - [0, 0], - ], - v: [ - [1.64, -12.677], - [10.246, -8.415], - [2.506, 12.331], - [-12.951, 10.32], - [-8.712, 6.325], - [-3.034, 4.035], - [-2.184, -9.741], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 43, - s: [ - { - i: [ - [0, 0], - [-3.296, -4.749], - [7.384, -7.649], - [0, 0], - [-1.996, 1.385], - [-2.506, 0.395], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0.758, -0.526], - [0, 0], - [0, 0], - ], - v: [ - [1.64, -12.677], - [10.246, -8.415], - [2.506, 12.331], - [-12.951, 10.32], - [-8.712, 6.325], - [-3.034, 4.035], - [-2.184, -9.741], - ], - c: true, - }, - ], - }, - { - t: 64, - s: [ - { - i: [ - [0, 0], - [-3.296, -4.749], - [7.384, -7.649], - [0, 0], - [-1.996, 1.385], - [-2.506, 0.395], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - [0.758, -0.526], - [0, 0], - [0, 0], - ], - v: [ - [3.824, -11.31], - [12.264, -7.581], - [2.506, 12.331], - [-12.264, 12.331], - [-9.216, 8.65], - [-1.45, 4.419], - [0, -8.374], - ], - c: true, - }, - ], - }, - ], - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.004000000393, 0.532999973671, 0.536999990426, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [12.514, 20.776], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 2, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 7, - ty: 4, - nm: "back leg ", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 23, - s: [-4.639], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 43, - s: [-4.639], - }, - { t: 64, s: [0] }, - ], - ix: 10, - }, - p: { a: 0, k: [326.959, 435.272, 0], ix: 2 }, - a: { a: 0, k: [10.423, 131.948, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [42.886, -25.031], - [20.65, -44.478], - [3.366, -0.959], - [0, 0], - [0.249, 2.134], - [-7.104, 14.208], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [-0.452, 0.974], - [-0.571, 0.162], - [-2.097, -1.467], - [-1.804, -15.438], - [6.843, -13.686], - [0, 0], - ], - v: [ - [50.673, -60.212], - [-6.868, -15.886], - [-32.934, 64.604], - [-34.311, 67.535], - [-48.576, 63.374], - [-47.669, 58.702], - [-37.631, -30.458], - [10.943, -67.697], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.689999988032, 0.819999964097, 0.783999992819, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [50.923, 67.948], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 8, - ty: 4, - nm: "back foot ", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [325.99, 436.118, 0], ix: 2 }, - a: { a: 0, k: [25.645, 4.057, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-4.621, -2.702], - [3.966, 2.702], - [4.621, 0.07], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.8980392156862745, 0.7254901960784313, 0.4392156862745098, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [26.058, 6.193], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [-4.747, 0.33], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-5.321, -6.335], - [-4.726, 3.829], - [2.708, 6.005], - [5.321, -4.489], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.996078431372549, 0.8431372549019608, 0.5882352941176471, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [26.396, 6.585], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [9.434, 0], - [1.768, -0.982], - [0, 0], - [0, 0], - [4.662, 3.396], - ], - o: [ - [0, 0], - [-2.171, 0], - [-1.44, 0.801], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [6.92, -5.048], - [-6.431, -7.6], - [-14.847, -5.463], - [-16.395, 0.064], - [12.492, 7.6], - [11.733, -4.06], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.004000000393, 0.532999973671, 0.536999990426, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [16.645, 15.265], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 2, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 9, - ty: 4, - nm: "front arm", - parent: 4, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [11.608, 51.721, 0], ix: 2 }, - a: { a: 0, k: [65.435, 23.145, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [ - { - i: [ - [0, 0], - [7.774, -3.838], - [0, 0], - [-9.345, 6.62], - [0, 0], - [4.719, -5.032], - ], - o: [ - [-0.471, 1.412], - [0, 0], - [0, 0], - [13.528, -9.583], - [0, 0], - [-13.036, 13.9], - ], - v: [ - [0.948, 1.529], - [-37.685, 26.109], - [-35.79, 32.895], - [10.729, 19.729], - [37.685, -4.766], - [22.587, -27.863], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 20, - s: [ - { - i: [ - [0, 0], - [7.774, -3.838], - [0, 0], - [-9.345, 6.62], - [0, 0], - [4.719, -5.032], - ], - o: [ - [-0.471, 1.412], - [0, 0], - [0, 0], - [13.528, -9.583], - [0, 0], - [-13.036, 13.9], - ], - v: [ - [7.904, 5.157], - [-31.021, 17.946], - [-30.095, 24.678], - [17.686, 23.357], - [37.685, -4.766], - [22.587, -27.863], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 39, - s: [ - { - i: [ - [0, 0], - [7.774, -3.838], - [0, 0], - [-9.345, 6.62], - [0, 0], - [4.719, -5.032], - ], - o: [ - [-0.471, 1.412], - [0, 0], - [0, 0], - [13.528, -9.583], - [0, 0], - [-13.036, 13.9], - ], - v: [ - [9.532, 4.226], - [-29.876, 14.814], - [-28.949, 21.546], - [19.314, 22.426], - [37.685, -4.766], - [22.587, -27.863], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 43, - s: [ - { - i: [ - [0, 0], - [7.774, -3.838], - [0, 0], - [-9.345, 6.62], - [0, 0], - [4.719, -5.032], - ], - o: [ - [-0.471, 1.412], - [0, 0], - [0, 0], - [13.528, -9.583], - [0, 0], - [-13.036, 13.9], - ], - v: [ - [9.532, 4.226], - [-29.876, 14.814], - [-28.949, 21.546], - [19.314, 22.426], - [37.685, -4.766], - [22.587, -27.863], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 67, - s: [ - { - i: [ - [0, 0], - [7.774, -3.838], - [0, 0], - [-9.345, 6.62], - [0, 0], - [4.719, -5.032], - ], - o: [ - [-0.471, 1.412], - [0, 0], - [0, 0], - [13.528, -9.583], - [0, 0], - [-13.036, 13.9], - ], - v: [ - [0.948, 1.529], - [-38.247, 26.046], - [-36.353, 32.833], - [10.729, 19.729], - [37.685, -4.766], - [22.587, -27.863], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 91, - s: [ - { - i: [ - [0, 0], - [7.774, -3.838], - [0, 0], - [-9.345, 6.62], - [0, 0], - [4.719, -5.032], - ], - o: [ - [-0.471, 1.412], - [0, 0], - [0, 0], - [13.528, -9.583], - [0, 0], - [-13.036, 13.9], - ], - v: [ - [0.567, 0.907], - [-38.554, 26.742], - [-36.66, 33.528], - [10.349, 19.107], - [37.685, -4.766], - [22.587, -27.863], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 120, - s: [ - { - i: [ - [0, 0], - [7.774, -3.838], - [0, 0], - [-9.345, 6.62], - [0, 0], - [4.719, -5.032], - ], - o: [ - [-0.471, 1.412], - [0, 0], - [0, 0], - [13.528, -9.583], - [0, 0], - [-13.036, 13.9], - ], - v: [ - [0.948, 1.529], - [-38.247, 26.046], - [-36.353, 32.833], - [10.729, 19.729], - [37.685, -4.766], - [22.587, -27.863], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 151, - s: [ - { - i: [ - [0, 0], - [7.774, -3.838], - [0, 0], - [-9.345, 6.62], - [0, 0], - [4.719, -5.032], - ], - o: [ - [-0.471, 1.412], - [0, 0], - [0, 0], - [13.528, -9.583], - [0, 0], - [-13.036, 13.9], - ], - v: [ - [0.567, 0.907], - [-38.554, 26.742], - [-36.66, 33.528], - [10.349, 19.107], - [37.685, -4.766], - [22.587, -27.863], - ], - c: true, - }, - ], - }, - { - t: 179, - s: [ - { - i: [ - [0, 0], - [7.774, -3.838], - [0, 0], - [-9.345, 6.62], - [0, 0], - [4.719, -5.032], - ], - o: [ - [-0.471, 1.412], - [0, 0], - [0, 0], - [13.528, -9.583], - [0, 0], - [-13.036, 13.9], - ], - v: [ - [0.948, 1.529], - [-38.247, 26.046], - [-36.353, 32.833], - [10.729, 19.729], - [37.685, -4.766], - [22.587, -27.863], - ], - c: true, - }, - ], - }, - ], - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.996078431372549, 0.8431372549019608, 0.5882352941176471, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [37.934, 33.145], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 10, - ty: 4, - nm: "front hand ", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [289.939, 287.713, 0], ix: 2 }, - a: { a: 0, k: [24.479, 5.734, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [3.259, -0.434], - [-1.52, -0.325], - [-2.086, -0.349], - [0, 0], - ], - o: [ - [0, 0], - [-3.257, 0.435], - [1.521, 0.326], - [2.086, 0.349], - [0, 0], - ], - v: [ - [10.836, -3.421], - [0.736, -5.05], - [-11.21, 5.158], - [-0.264, 2.529], - [12.729, 3.365], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.996078431372549, 0.8431372549019608, 0.5882352941176471, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [12.98, 5.734], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 11, - ty: 4, - nm: "back arm ", - parent: 4, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [30.946], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 21, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.527], y: [0] }, - t: 39, - s: [-13.807], - }, - { t: 82, s: [30.946] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 0.667 }, - o: { x: 0.333, y: 0.333 }, - t: 0, - s: [18.082, 44.908, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 21, - s: [18.082, 44.908, 0], - to: [-1.074, -1.099, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.527, y: 0 }, - t: 39, - s: [11.638, 38.314, 0], - to: [0, 0, 0], - ti: [-1.074, -1.099, 0], - }, - { t: 82, s: [18.082, 44.908, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [43.193, 43.062, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [2.147, 3.13], - [0, 0], - [-11.413, -0.947], - ], - o: [ - [-0.354, 1.446], - [0, 0], - [0, 0], - [11.414, 0.948], - ], - v: [ - [18.147, 8.12], - [-35.211, -16.131], - [-40.943, -11.171], - [8.741, 25.178], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.996078431372549, 0.8431372549019608, 0.5882352941176471, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [41.192, 26.062], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 12, - ty: 4, - nm: "back hand ", - parent: 11, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 5, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 22, - s: [16.768], - }, - { t: 37, s: [-1.431] }, - ], - ix: 10, - }, - p: { a: 0, k: [3.668, 12.596, 0], ix: 2 }, - a: { a: 0, k: [18.001, 21.565, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [3.121, 2.162], - [1.094, 0.382], - [-0.917, -1.105], - [0, 0], - [-1.805, -3.275], - [0, 0], - ], - o: [ - [0, 0], - [-1.042, -0.721], - [-1.094, -0.382], - [0.918, 1.105], - [0, 0], - [1.806, 3.276], - [0, 0], - ], - v: [ - [10.251, 7.309], - [6.539, -2.01], - [-9.157, -11.932], - [-8.887, -8.648], - [-3.881, -2.359], - [-6.798, 6.646], - [4.651, 12.314], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.996078431372549, 0.8431372549019608, 0.5882352941176471, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [10.501, 12.564], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 13, - ty: 4, - nm: "LottieFiles cube 2", - parent: 24, - sr: 1, - ks: { - o: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 128, - s: [0], - }, - { t: 151, s: [100] }, - ], - ix: 11, - }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [154.347, 108.147, 0], ix: 2 }, - a: { a: 0, k: [34.006, 33.096, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-4.506, -0.225], - [0.043, -0.868], - [0.869, 0.043], - [3.277, -8.047], - [4.417, -0.102], - [0.021, 0.87], - [-0.87, 0.02], - [-3.29, 8.081], - ], - o: [ - [0.869, 0.043], - [-0.044, 0.869], - [-2.65, -0.132], - [-3.736, 9.175], - [-0.869, 0.02], - [-0.019, -0.87], - [2.688, -0.062], - [3.75, -9.21], - ], - v: [ - [10.685, -14.342], - [12.18, -12.691], - [10.528, -11.195], - [1.429, 0.5], - [-10.592, 14.546], - [-12.204, 13.008], - [-10.665, 11.397], - [-1.489, -0.688], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 1.509, ix: 5 }, - lc: 1, - lj: 1, - ml: 10, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [50.637, 39.122], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-4.506, -0.225], - [0.043, -0.868], - [0.869, 0.043], - [3.277, -8.047], - [4.417, -0.102], - [0.021, 0.87], - [-0.87, 0.02], - [-3.29, 8.081], - ], - o: [ - [0.869, 0.043], - [-0.044, 0.869], - [-2.65, -0.132], - [-3.736, 9.175], - [-0.869, 0.02], - [-0.019, -0.87], - [2.688, -0.062], - [3.75, -9.21], - ], - v: [ - [10.685, -14.342], - [12.18, -12.691], - [10.528, -11.195], - [1.429, 0.5], - [-10.592, 14.546], - [-12.204, 13.008], - [-10.665, 11.397], - [-1.489, -0.688], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [50.637, 39.122], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-18.302, -14.011], - [18.114, -27.199], - [18.114, 14.074], - [-18.302, 27.887], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "gf", - o: { a: 0, k: 100, ix: 10 }, - r: 1, - bm: 0, - g: { - p: 3, - k: { - a: 0, - k: [0, 0.165, 0.918, 0.925, 0.5, 0.112, 0.859, 0.867, 1, 0.059, 0.8, 0.808], - ix: 9, - }, - }, - s: { a: 0, k: [-13.805, 6.441], ix: 5 }, - e: { a: 0, k: [13.507, -1.4], ix: 6 }, - t: 1, - nm: "Gradient Fill 1", - mn: "ADBE Vector Graphic - G-Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [49.647, 38.743], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 2, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-15.204, -26.356], - [15.391, -14.919], - [15.641, 26.231], - [-15.641, 14.981], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "gf", - o: { a: 0, k: 100, ix: 10 }, - r: 1, - bm: 0, - g: { - p: 3, - k: { - a: 0, - k: [0, 0.165, 0.918, 0.925, 0.5, 0.112, 0.859, 0.867, 1, 0.059, 0.8, 0.808], - ix: 9, - }, - }, - s: { a: 0, k: [-16.328, 0.389], ix: 5 }, - e: { a: 0, k: [13.016, 5.091], ix: 6 }, - t: 1, - nm: "Gradient Fill 1", - mn: "ADBE Vector Graphic - G-Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [15.891, 39.71], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 2, - cix: 2, - bm: 0, - ix: 4, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-33.506, 0.739], - [1.256, -12.761], - [33.631, -0.988], - [-3.006, 12.262], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "gf", - o: { a: 0, k: 100, ix: 10 }, - r: 1, - bm: 0, - g: { - p: 3, - k: { - a: 0, - k: [0, 0.165, 0.918, 0.925, 0.5, 0.112, 0.859, 0.867, 1, 0.059, 0.8, 0.808], - ix: 9, - }, - }, - s: { a: 0, k: [-29.482, 0.338], ix: 5 }, - e: { a: 0, k: [21.871, -1.938], ix: 6 }, - t: 1, - nm: "Gradient Fill 1", - mn: "ADBE Vector Graphic - G-Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [34.006, 12.512], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 5", - np: 2, - cix: 2, - bm: 0, - ix: 5, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 128, - op: 352, - st: 172, - bm: 0, - }, - { - ddd: 0, - ind: 14, - ty: 4, - nm: "LottieFiles cube", - parent: 24, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [154.347, 108.147, 0], ix: 2 }, - a: { a: 0, k: [34.006, 33.096, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-4.506, -0.225], - [0.043, -0.868], - [0.869, 0.043], - [3.277, -8.047], - [4.417, -0.102], - [0.021, 0.87], - [-0.87, 0.02], - [-3.29, 8.081], - ], - o: [ - [0.869, 0.043], - [-0.044, 0.869], - [-2.65, -0.132], - [-3.736, 9.175], - [-0.869, 0.02], - [-0.019, -0.87], - [2.688, -0.062], - [3.75, -9.21], - ], - v: [ - [10.685, -14.342], - [12.18, -12.691], - [10.528, -11.195], - [1.429, 0.5], - [-10.592, 14.546], - [-12.204, 13.008], - [-10.665, 11.397], - [-1.489, -0.688], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 1.509, ix: 5 }, - lc: 1, - lj: 1, - ml: 10, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 25, - s: [50.637, 39.122], - to: [-2.25, 0.417], - ti: [5.833, -0.25], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 55, - s: [37.137, 41.622], - to: [-5.833, 0.25], - ti: [3.583, 0.167], - }, - { - i: { x: 0.667, y: 0.667 }, - o: { x: 0.333, y: 0.333 }, - t: 85, - s: [15.637, 40.622], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 128, - s: [15.637, 40.622], - to: [5.833, -0.25], - ti: [-5.833, 0.25], - }, - { t: 129, s: [50.637, 39.122] }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.833, 0.833], y: [0.833, 0.833] }, - o: { x: [0.333, 0.333], y: [0, 0] }, - t: 25, - s: [100, 100], - }, - { - i: { x: [0.667, 0.667], y: [1, 1] }, - o: { x: [0.167, 0.167], y: [0.167, 0.167] }, - t: 55, - s: [110, 110], - }, - { - i: { x: [0.667, 0.667], y: [1, 1] }, - o: { x: [0.333, 0.333], y: [0, 0] }, - t: 85, - s: [90, 90], - }, - { - i: { x: [0.667, 0.667], y: [1, 1] }, - o: { x: [0.333, 0.333], y: [0, 0] }, - t: 128, - s: [90, 90], - }, - { t: 129, s: [100, 100] }, - ], - ix: 3, - }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.167], y: [0.167] }, - t: 55, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 85, - s: [6], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.333], y: [0] }, - t: 128, - s: [6], - }, - { t: 129, s: [0] }, - ], - ix: 6, - }, - o: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 107, - s: [100], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 128, - s: [0], - }, - { t: 151, s: [100] }, - ], - ix: 7, - }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-4.506, -0.225], - [0.043, -0.868], - [0.869, 0.043], - [3.277, -8.047], - [4.417, -0.102], - [0.021, 0.87], - [-0.87, 0.02], - [-3.29, 8.081], - ], - o: [ - [0.869, 0.043], - [-0.044, 0.869], - [-2.65, -0.132], - [-3.736, 9.175], - [-0.869, 0.02], - [-0.019, -0.87], - [2.688, -0.062], - [3.75, -9.21], - ], - v: [ - [10.685, -14.342], - [12.18, -12.691], - [10.528, -11.195], - [1.429, 0.5], - [-10.592, 14.546], - [-12.204, 13.008], - [-10.665, 11.397], - [-1.489, -0.688], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 25, - s: [50.637, 39.122], - to: [-2.25, 0.417], - ti: [5.833, -0.25], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 55, - s: [37.137, 41.622], - to: [-5.833, 0.25], - ti: [3.583, 0.167], - }, - { - i: { x: 0.667, y: 0.667 }, - o: { x: 0.333, y: 0.333 }, - t: 85, - s: [15.637, 40.622], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 128, - s: [15.637, 40.622], - to: [5.833, -0.25], - ti: [-5.833, 0.25], - }, - { t: 129, s: [50.637, 39.122] }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.833, 0.833], y: [0.833, 0.833] }, - o: { x: [0.333, 0.333], y: [0, 0] }, - t: 25, - s: [100, 100], - }, - { - i: { x: [0.667, 0.667], y: [1, 1] }, - o: { x: [0.167, 0.167], y: [0.167, 0.167] }, - t: 55, - s: [110, 110], - }, - { - i: { x: [0.667, 0.667], y: [1, 1] }, - o: { x: [0.333, 0.333], y: [0, 0] }, - t: 85, - s: [90, 90], - }, - { - i: { x: [0.667, 0.667], y: [1, 1] }, - o: { x: [0.333, 0.333], y: [0, 0] }, - t: 128, - s: [90, 90], - }, - { t: 129, s: [100, 100] }, - ], - ix: 3, - }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.167], y: [0.167] }, - t: 55, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 85, - s: [6], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.333], y: [0] }, - t: 128, - s: [6], - }, - { t: 129, s: [0] }, - ], - ix: 6, - }, - o: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 107, - s: [100], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 128, - s: [0], - }, - { t: 151, s: [100] }, - ], - ix: 7, - }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 25, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-18.302, -14.011], - [18.114, -27.199], - [18.114, 14.074], - [-18.302, 27.887], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 55, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-40.226, -21.211], - [13.441, -21.234], - [13.274, 26.289], - [-40.392, 26.937], - ], - c: true, - }, - ], - }, - { - t: 85, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-48.96, -25.389], - [-18.365, -13.952], - [-18.115, 27.199], - [-49.397, 15.949], - ], - c: true, - }, - ], - }, - ], - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "gf", - o: { a: 0, k: 100, ix: 10 }, - r: 1, - bm: 0, - g: { - p: 3, - k: { - a: 0, - k: [0, 0.165, 0.918, 0.925, 0.5, 0.112, 0.859, 0.867, 1, 0.059, 0.8, 0.808], - ix: 9, - }, - }, - s: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 55, - s: [-13.805, 6.441], - to: [-5.915, -0.854], - ti: [5.915, 0.854], - }, - { t: 85, s: [-49.293, 1.319] }, - ], - ix: 5, - }, - e: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 55, - s: [13.507, -1.4], - to: [-6.296, 0.834], - ti: [6.296, -0.834], - }, - { t: 85, s: [-24.27, 3.603] }, - ], - ix: 6, - }, - t: 1, - nm: "Gradient Fill 1", - mn: "ADBE Vector Graphic - G-Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [49.647, 38.743], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 2, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 25, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-15.204, -26.356], - [15.391, -14.919], - [15.641, 26.231], - [-15.641, 14.981], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 40, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-10.204, -27.731], - [7.141, -17.794], - [7.266, 26.606], - [-10.266, 16.981], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 51, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-3.487, -29.14], - [-3.459, -21.852], - [-3.642, 25.798], - [-3.275, 18.048], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 55, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-6.704, -22.356], - [-6.359, -22.919], - [-6.609, 25.731], - [-6.391, 25.731], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 56, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [43.796, -21.606], - [44.141, -22.169], - [43.891, 26.481], - [44.109, 26.481], - ], - c: true, - }, - ], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 61, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [39.3, -20.462], - [44.598, -30.247], - [44.09, 14.486], - [39.07, 25.604], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 67, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [30.609, -19.005], - [46.699, -29.66], - [46.996, 15.705], - [30.812, 25.853], - ], - c: true, - }, - ], - }, - { - t: 85, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [15.546, -14.606], - [51.141, -28.419], - [52.141, 12.731], - [15.609, 26.106], - ], - c: true, - }, - ], - }, - ], - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "gf", - o: { a: 0, k: 100, ix: 10 }, - r: 1, - bm: 0, - g: { - p: 3, - k: { - a: 0, - k: [0, 0.165, 0.918, 0.925, 0.5, 0.112, 0.859, 0.867, 1, 0.059, 0.8, 0.808], - ix: 9, - }, - }, - s: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 55, - s: [-16.328, 0.389], - to: [6.422, 0.9], - ti: [-6.422, -0.9], - }, - { t: 85, s: [22.202, 5.788] }, - ], - ix: 5, - }, - e: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 55, - s: [13.016, 5.091], - to: [5.772, -1.308], - ti: [-5.772, 1.308], - }, - { t: 85, s: [47.647, -2.755] }, - ], - ix: 6, - }, - t: 1, - nm: "Gradient Fill 1", - mn: "ADBE Vector Graphic - G-Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [15.891, 39.71], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 2, - cix: 2, - bm: 0, - ix: 4, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 25, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-33.506, 0.739], - [1.256, -12.761], - [33.631, -0.988], - [-3.006, 12.262], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 55, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-19.788, -3.011], - [24.474, -3.511], - [29.381, 4.762], - [-24.256, 5.262], - ], - c: true, - }, - ], - }, - { - t: 85, - s: [ - { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [1.744, -13.011], - [32.756, -1.261], - [-2.369, 12.512], - [-33.006, 0.762], - ], - c: true, - }, - ], - }, - ], - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "gf", - o: { a: 0, k: 100, ix: 10 }, - r: 1, - bm: 0, - g: { - p: 3, - k: { - a: 0, - k: [0, 0.165, 0.918, 0.925, 0.5, 0.112, 0.859, 0.867, 1, 0.059, 0.8, 0.808], - ix: 9, - }, - }, - s: { a: 0, k: [-29.482, 0.338], ix: 5 }, - e: { a: 0, k: [21.871, -1.938], ix: 6 }, - t: 1, - nm: "Gradient Fill 1", - mn: "ADBE Vector Graphic - G-Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [34.006, 12.512], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 5", - np: 2, - cix: 2, - bm: 0, - ix: 5, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: -25, - op: 152, - st: 19, - bm: 0, - }, - { - ddd: 0, - ind: 15, - ty: 4, - nm: "neck", - parent: 4, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 17, - s: [8.514], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 47, - s: [8.514], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 75, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 103, - s: [2], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 129, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 155, - s: [2], - }, - { t: 179, s: [0] }, - ], - ix: 10, - }, - p: { a: 0, k: [52.113, 5.779, 0], ix: 2 }, - a: { a: 0, k: [13.313, 24.871, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [-0.633, 1.791], - [8.027, -4.628], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-5.118, -3.117], - [4.422, -7.729], - [-2.909, 7.729], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.8980392156862745, 0.7254901960784313, 0.4392156862745098, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [5.875, 13.141], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [2.747, 4.842], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [-5.467, -9.637], - [0, 0], - ], - v: [ - [-14.063, -7.355], - [-10.639, 12.977], - [11.316, 9.279], - [6.469, -14.121], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.996078431372549, 0.8431372549019608, 0.5882352941176471, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [14.313, 14.371], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 16, - ty: 4, - nm: "ear ", - parent: 21, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [23.568, 22.743, 0], ix: 2 }, - a: { a: 0, k: [5.918, 6.096, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-0.427, -0.596], - [0.427, 0.596], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.011999999776, 0.136999990426, 0.128999986836, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 0.732, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [6.641, 4.494], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [-3.191, -2.85], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-0.836, 2.222], - [1.595, 0.628], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.011999999776, 0.136999990426, 0.128999986836, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 0.732, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [6.754, 4.052], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-0.481, -2.864], - [-2.865, 0.483], - [0.482, 2.864], - [2.865, -0.483], - ], - o: [ - [0.482, 2.864], - [2.864, -0.482], - [-0.482, -2.864], - [-2.863, 0.482], - ], - v: [ - [-5.186, 0.873], - [0.874, 5.186], - [5.186, -0.873], - [-0.874, -5.186], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.996078431372549, 0.8431372549019608, 0.5882352941176471, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [5.917, 6.274], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 2, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 17, - ty: 4, - nm: "hair ", - parent: 21, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [20.961, 16.877, 0], ix: 2 }, - a: { a: 0, k: [27.778, 22.05, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [3.736, -0.37], - [1.719, -0.152], - [1.087, 2.033], - [1.672, 0.08], - [-0.331, 2.006], - [-1.928, 0.572], - [-5.411, 1.006], - [-9.41, -2.895], - [-2.055, -1.558], - [2.235, -3.61], - [0, 0], - [3.951, -3.197], - [0, 0], - [1.373, -3.745], - [5.761, 1.075], - [0.543, 1.023], - ], - o: [ - [-3.397, -1.072], - [0, 0], - [-2.993, 0.298], - [-2.105, 0.185], - [-1.041, -1.947], - [-2.252, -0.109], - [0.272, -1.646], - [2.527, -0.75], - [4.892, -0.909], - [3.454, 1.062], - [4.048, 3.068], - [-2.323, 3.751], - [0, 0], - [-3.917, 3.169], - [0, 0], - [-1.771, 4.835], - [-2.75, -0.513], - [0, 0], - ], - v: [ - [-4.624, 0.391], - [-8.025, -7.378], - [-14.426, -2.401], - [-17.594, -5.221], - [-25.823, -4.094], - [-23.431, -8.755], - [-27.197, -12.639], - [-20.328, -17.152], - [-6.488, -20.053], - [11.09, -18.906], - [18.951, -13.751], - [25.293, -2.723], - [20.462, -0.728], - [23.272, 8.036], - [15.095, 7.59], - [19.225, 14.329], - [9.788, 20.725], - [3.28, 10.249], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.011999999776, 0.136999990426, 0.128999986836, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [27.777, 22.051], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 18, - ty: 4, - nm: "eyebrow ", - parent: 21, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 76, - s: [7.726, 19.844, 0], - to: [0.004, 0.167, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 85, - s: [7.751, 20.844, 0], - to: [0, 0, 0], - ti: [0.004, 0.167, 0], - }, - { t: 94, s: [7.726, 19.844, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [2.638, 1.453, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.14, -0.453], - [-1.241, -0.383], - [-0.14, 0.454], - [1.242, 0.382], - ], - o: [ - [-0.14, 0.454], - [1.242, 0.382], - [0.14, -0.453], - [-1.241, -0.383], - ], - v: [ - [-2.248, -0.693], - [-0.253, 0.821], - [2.248, 0.692], - [0.252, -0.821], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.011999999776, 0.136999990426, 0.128999986836, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [2.638, 1.454], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 19, - ty: 4, - nm: "eye ", - parent: 21, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [6.716, 25.438, 0], ix: 2 }, - a: { a: 0, k: [1.382, 1.805, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 76, - s: [100, 100, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 85, - s: [100, 20, 100], - }, - { t: 94, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-0.136, -0.808], - [-0.55, 0.092], - [0.136, 0.807], - [0.55, -0.092], - ], - o: [ - [0.136, 0.808], - [0.551, -0.093], - [-0.136, -0.809], - [-0.55, 0.093], - ], - v: [ - [-0.996, 0.168], - [0.246, 1.463], - [0.996, -0.167], - [-0.246, -1.463], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.011999999776, 0.136999990426, 0.128999986836, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [1.382, 1.805], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 20, - ty: 4, - nm: "mouth ", - parent: 21, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [8.094, 39.492, 0], ix: 2 }, - a: { a: 0, k: [4.575, 3.583, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [4.016, 0.712], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [2.745, -1.753], - [-2.745, 1.041], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.011999999776, 0.136999990426, 0.128999986836, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 0.732, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [4.575, 3.583], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 21, - ty: 4, - nm: "head ", - parent: 15, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [10.136, 6.255, 0], ix: 2 }, - a: { a: 0, k: [26.396, 42.325, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [-6.627, -3.172], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [6.627, 3.171], - [0, 0], - [0, 0], - ], - v: [ - [13.228, -24.825], - [-15.778, -17.108], - [-11.769, 21.654], - [11.749, 15.037], - [18.396, 11.245], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.996078431372549, 0.8431372549019608, 0.5882352941176471, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [18.646, 25.075], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 22, - ty: 4, - nm: "nose ", - parent: 21, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [1.54, 30.283, 0], ix: 2 }, - a: { a: 0, k: [2.243, 7.577, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [-0.201, -0.984], - [0, 0], - ], - o: [ - [0, 0], - [0.214, 1.052], - [0, 0], - ], - v: [ - [1.503, -7.327], - [-1.793, 3.803], - [1.993, 7.327], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.8980392156862745, 0.7254901960784313, 0.4392156862745098, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [2.243, 7.577], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 23, - ty: 4, - nm: "front grey screen ", - sr: 1, - ks: { - o: { a: 0, k: 60, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: -5, - s: [328.193, 129.455, 0], - to: [0, 0.333, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 25, - s: [328.193, 131.455, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 55, - s: [328.193, 129.455, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 85, - s: [328.193, 131.455, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 115, - s: [328.193, 129.455, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 145, - s: [328.193, 131.455, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 175, - s: [328.193, 129.455, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 205, - s: [328.193, 131.455, 0], - to: [0, 0, 0], - ti: [0, 0.333, 0], - }, - { t: 235, s: [328.193, 129.455, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [31.722, 34.738, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.003, -0.402], - [-0.403, 0.117], - [-0.004, 0.402], - [0.403, -0.117], - ], - o: [ - [-0.004, 0.402], - [0.403, -0.118], - [0.004, -0.402], - [-0.402, 0.117], - ], - v: [ - [-0.729, 0.212], - [-0.007, 0.728], - [0.729, -0.212], - [0.006, -0.728], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [33.239, 51.407], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-12.1, 3.52], - [12.1, -3.52], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 0.459, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [20.949, 54.887], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.004, -0.402], - [0.403, -0.1], - [-0.004, 0.404], - [-0.403, 0.1], - ], - o: [ - [-0.004, 0.402], - [-0.403, 0.101], - [0.004, -0.403], - [0.404, -0.1], - ], - v: [ - [0.73, -0.182], - [-0.007, 0.729], - [-0.73, 0.181], - [0.006, -0.73], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [31.661, 16.678], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 2, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [12.115, -3.014], - [-12.115, 3.014], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 0.459, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [43.968, 13.522], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 2, - cix: 2, - bm: 0, - ix: 4, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [-23.504, 5.865], - ], - o: [ - [22.752, -6.622], - [0, 0], - ], - v: [ - [-23.651, 23.703], - [23.651, -23.703], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 1.838, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [32.425, 34.851], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 5", - np: 2, - cix: 2, - bm: 0, - ix: 5, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-31.472, -19.487], - [31.472, -34.487], - [31.472, 15.987], - [-31.472, 34.487], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "gf", - o: { a: 0, k: 100, ix: 10 }, - r: 1, - bm: 0, - g: { - p: 3, - k: { - a: 0, - k: [0, 0.816, 0.91, 0.886, 0.5, 0.863, 0.924, 0.898, 1, 0.91, 0.937, 0.91], - ix: 9, - }, - }, - s: { a: 0, k: [0, 0], ix: 5 }, - e: { a: 0, k: [100, 0], ix: 6 }, - t: 1, - nm: "Gradient Fill 1", - mn: "ADBE Vector Graphic - G-Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [31.722, 34.738], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 6", - np: 2, - cix: 2, - bm: 0, - ix: 6, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: -5, - op: 189, - st: -5, - bm: 0, - }, - { - ddd: 0, - ind: 24, - ty: 4, - nm: "main screen ", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [205.027, 196.59, 0], - to: [0, 0.333, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 30, - s: [205.027, 198.59, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 60, - s: [205.027, 196.59, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 90, - s: [205.027, 198.59, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 120, - s: [205.027, 196.59, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 150, - s: [205.027, 198.59, 0], - to: [0, 0, 0], - ti: [0, 0.333, 0], - }, - { t: 180, s: [205.027, 196.59, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [109.406, 114.227, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [108.5, -114.132], - [108.632, 30.75], - [-108, 113.633], - [-110.633, -68], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "gf", - o: { a: 0, k: 100, ix: 10 }, - r: 1, - bm: 0, - g: { - p: 3, - k: { - a: 0, - k: [0, 0.965, 0.859, 0.847, 0.5, 0.982, 0.904, 0.865, 1, 1, 0.949, 0.882], - ix: 9, - }, - }, - s: { a: 0, k: [-96.426, -58.766], ix: 5 }, - e: { a: 0, k: [56.41, 29.195], ix: 6 }, - t: 1, - nm: "Gradient Fill 1", - mn: "ADBE Vector Graphic - G-Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [109.406, 114.227], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 25, - ty: 4, - nm: "back blue shape ", - sr: 1, - ks: { - o: { a: 0, k: 60, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: -8, - s: [225.695, 88.637, 0], - to: [0, -0.5, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 22, - s: [225.695, 85.637, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 52, - s: [225.695, 88.637, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 82, - s: [225.695, 85.637, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 112, - s: [225.695, 88.637, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 142, - s: [225.695, 85.637, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 172, - s: [225.695, 88.637, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 202, - s: [225.695, 85.637, 0], - to: [0, 0, 0], - ti: [0, -0.5, 0], - }, - { t: 232, s: [225.695, 88.637, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [31.446, 35.405, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-31.391, -25.155], - [31.445, -35.405], - [31.391, 21.405], - [-31.445, 35.405], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "gf", - o: { a: 0, k: 100, ix: 10 }, - r: 1, - bm: 0, - g: { - p: 3, - k: { - a: 0, - k: [ - 0, 0.3137254901960784, 0.8901960784313725, 0.7607843137254902, 0.5, - 0.30980392156862746, 0.9450980392156862, 0.803921568627451, 1, - 0.08627450980392157, 0.8470588235294118, 0.6745098039215687, - ], - ix: 9, - }, - }, - s: { a: 0, k: [-30.332, 2.707], ix: 5 }, - e: { a: 0, k: [34.27, 0.754], ix: 6 }, - t: 1, - nm: "Gradient Fill 1", - mn: "ADBE Vector Graphic - G-Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [31.445, 35.405], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: -12, - op: 185, - st: -8, - bm: 0, - }, - { - ddd: 0, - ind: 26, - ty: 4, - nm: "back grey shape ", - sr: 1, - ks: { - o: { a: 0, k: 60, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: -20, - s: [116.501, 131.865, 0], - to: [0, 0.667, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 10, - s: [116.501, 135.865, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 40, - s: [116.501, 131.865, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 70, - s: [116.501, 135.865, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 100, - s: [116.501, 131.865, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 130, - s: [116.501, 135.865, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 160, - s: [116.501, 131.865, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 190, - s: [116.501, 135.865, 0], - to: [0, 0, 0], - ti: [0, 0.667, 0], - }, - { t: 220, s: [116.501, 131.865, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [49.241, 48.214, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-48.838, -30.117], - [48.292, -47.765], - [48.838, 22.617], - [-48.792, 48.265], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "gf", - o: { a: 0, k: 100, ix: 10 }, - r: 1, - bm: 0, - g: { - p: 3, - k: { - a: 0, - k: [0, 0.816, 0.91, 0.886, 0.5, 0.863, 0.924, 0.898, 1, 0.91, 0.937, 0.91], - ix: 9, - }, - }, - s: { a: 0, k: [-53.793, -32.803], ix: 5 }, - e: { a: 0, k: [38.566, 16.902], ix: 6 }, - t: 1, - nm: "Gradient Fill 1", - mn: "ADBE Vector Graphic - G-Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [49.241, 48.214], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: -20, - op: 186, - st: -20, - bm: 0, - }, - { - ddd: 0, - ind: 27, - ty: 4, - nm: "blue line 2", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [241.148, 215.735, 0], ix: 2 }, - a: { a: 0, k: [193.088, 165.536, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [-22.399, 11.62], - [-36.973, 24.518], - [-29.615, 53.791], - [-59.087, -2.563], - [-29.695, -35.695], - ], - o: [ - [0.131, -87.199], - [38.711, -20.081], - [27.097, -17.969], - [7.201, -13.08], - [8.86, 0.384], - [0, 0], - ], - v: [ - [-190.588, 163.037], - [-146.607, 32.068], - [-28.344, 28.16], - [14.66, -71.532], - [124.126, -160.473], - [190.588, -121.378], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "tm", - s: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 12, - s: [0], - }, - { t: 104, s: [100] }, - ], - ix: 1, - }, - e: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: -75, - s: [0], - }, - { t: 12, s: [100] }, - ], - ix: 2, - }, - o: { a: 0, k: 0, ix: 3 }, - m: 1, - ix: 2, - nm: "Trim Paths 1", - mn: "ADBE Vector Filter - Trim", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.3137254901960784, 0.8901960784313725, 0.7607843137254902, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 1, ix: 5 }, - lc: 1, - lj: 1, - ml: 10, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [193.088, 165.536], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 105, - st: -75, - bm: 0, - }, - { - ddd: 0, - ind: 28, - ty: 4, - nm: "blue line ", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [241.148, 215.735, 0], ix: 2 }, - a: { a: 0, k: [193.088, 165.536, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [-22.399, 11.62], - [-36.973, 24.518], - [-29.615, 53.791], - [-59.087, -2.563], - [-29.695, -35.695], - ], - o: [ - [0.131, -87.199], - [38.711, -20.081], - [27.097, -17.969], - [7.201, -13.08], - [8.86, 0.384], - [0, 0], - ], - v: [ - [-190.588, 163.037], - [-146.607, 32.068], - [-28.344, 28.16], - [14.66, -71.532], - [124.126, -160.473], - [190.588, -121.378], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "tm", - s: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 191, - s: [0], - }, - { t: 283, s: [100] }, - ], - ix: 1, - }, - e: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 104, - s: [0], - }, - { t: 191, s: [100] }, - ], - ix: 2, - }, - o: { a: 0, k: 0, ix: 3 }, - m: 1, - ix: 2, - nm: "Trim Paths 1", - mn: "ADBE Vector Filter - Trim", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.3137254901960784, 0.8901960784313725, 0.7607843137254902, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 1, ix: 5 }, - lc: 1, - lj: 1, - ml: 10, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [193.088, 165.536], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 104, - op: 180, - st: 104, - bm: 0, - }, - { - ddd: 0, - ind: 29, - ty: 4, - nm: "keyboard ", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [261.997, 286.067, 0], ix: 2 }, - a: { a: 0, k: [69.2, 22.723, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-31.872, 12.597], - [31.872, -12.597], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 1, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [76.863, 25.042], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-31.872, 12.597], - [31.872, -12.597], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 1, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [66.498, 22.723], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-31.872, 12.597], - [31.872, -12.597], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 1, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [56.133, 20.406], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 2, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [68.95, -10.855], - [-17.95, 22.473], - [-68.95, 10.855], - [17.95, -22.473], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.929000016755, 0.929000016755, 0.929000016755, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [69.2, 22.723], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 2, - cix: 2, - bm: 0, - ix: 4, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 30, - ty: 4, - nm: "mouse ", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [198.624, 312.684, 0], ix: 2 }, - a: { a: 0, k: [14.47, 6.307, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [2.688, -1.074], - [0, 0], - [0.58, 0.129], - [0, 0], - [-2.688, 1.074], - [0, 0], - [-0.579, -0.13], - [0, 0], - ], - o: [ - [0, 0], - [-0.552, 0.22], - [0, 0], - [-2.825, -0.633], - [0, 0], - [0.551, -0.22], - [0, 0], - [2.825, 0.632], - ], - v: [ - [11.532, 2.524], - [3.356, 5.789], - [1.62, 5.928], - [-11.083, 3.085], - [-11.532, -2.524], - [-3.356, -5.789], - [-1.621, -5.927], - [11.083, -3.084], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.929000016755, 0.929000016755, 0.929000016755, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [14.47, 6.307], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 31, - ty: 4, - nm: "table ", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [246.07, 278.528, 0], ix: 2 }, - a: { a: 0, k: [172.503, 70.456, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [172.254, -21.209], - [-29.857, 70.205], - [-172.253, 25.352], - [64.895, -70.205], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.9882352941176471, 0.9764705882352941, 0.9764705882352941, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [172.504, 70.456], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 32, - ty: 4, - nm: "chair", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 17, - s: [-1.524], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 43, - s: [-1.524], - }, - { t: 64, s: [0] }, - ], - ix: 10, - }, - p: { a: 0, k: [405.477, 450.364, 0], ix: 2 }, - a: { a: 0, k: [38.985, 124.515, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [17.658, -1.844], - [-17.658, -1.844], - [-17.658, 1.844], - [17.658, 1.844], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.8862745098039215, 0.9333333333333333, 0.9098039215686274, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [33.794, 93.86], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-1.844, 59.003], - [1.844, 59.003], - [1.844, -59.003], - [-1.844, -59.003], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.9215686274509803, 0.9333333333333333, 0.9254901960784314, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [51.453, 65.778], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-1.844, 59.003], - [1.844, 59.003], - [1.844, -59.003], - [-1.844, -59.003], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.9294117647058824, 0.9450980392156862, 0.9372549019607843, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [59.112, 65.778], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 2, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-1.844, 59.003], - [1.844, 59.003], - [1.844, -59.003], - [-1.844, -59.003], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.9294117647058824, 0.9529411764705882, 0.9411764705882353, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [17.98, 65.778], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 2, - cix: 2, - bm: 0, - ix: 4, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-36.735, 4.255], - [36.735, 4.255], - [36.735, -4.255], - [-36.735, -4.255], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.9411764705882353, 0.9450980392156862, 0.9450980392156862, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [36.985, 4.505], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 5", - np: 2, - cix: 2, - bm: 0, - ix: 5, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 33, - ty: 1, - nm: "White Solid 2", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [250, 250, 0], ix: 2 }, - a: { a: 0, k: [250, 250, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - sw: 500, - sh: 500, - sc: "#ffffff", - ip: 0, - op: 180, - st: 0, - bm: 0, - }, - ], - markers: [], -}; +export * from "./overview-lotties"; +export * from "./contact-us-lotties"; +export * from "./documentation-lotties"; + +export const newDataset = { + v: "5.5.1", + fr: 60, + ip: 0, + op: 180, + w: 500, + h: 500, + nm: "Main Comp", + ddd: 0, + assets: [], + layers: [ + { + ddd: 0, + ind: 1, + ty: 4, + nm: "random shapes ", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [253.628, 212.369, 0], ix: 2 }, + a: { a: 0, k: [177.182, 168.578, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-1.545, 1.097], + [-0.742, 1.604], + [-1.551, 0.087], + [-0.56, -3.958], + [3.968, -4.264], + [3, 1.018], + [-0.026, 3.244], + [-2.472, 1.348], + ], + o: [ + [1.643, -1.164], + [0.741, -1.602], + [1.551, -0.087], + [0.993, 7.007], + [-3.817, 4.13], + [-3, -1.03], + [0.013, -1.641], + [2.056, -1.119], + ], + v: [ + [-1.992, -5.315], + [0.805, -9.482], + [4.021, -12.623], + [9.91, -7.833], + [6.051, 7.45], + [-5.737, 11.692], + [-10.878, 4.205], + [-8.367, -2.568], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.9803921568627451, 0.8117647058823529, 0.7843137254901961, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [203.042, 54.429], + to: [0, -0.375], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 45, + s: [203.042, 52.179], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 90, + s: [203.042, 54.429], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 135, + s: [203.042, 52.179], + to: [0, 0], + ti: [0, -0.375], + }, + { t: 180, s: [203.042, 54.429] }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 0, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 38, + s: [12], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 86, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 141, + s: [8], + }, + { t: 179, s: [0] }, + ], + ix: 6, + }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-2.013, 0.899], + [-0.956, 1.792], + [-2.031, -0.359], + [-0.776, -5.208], + [5.157, -4.1], + [3.942, 2.27], + [-0.004, 4.024], + [-3.225, 0.917], + ], + o: [ + [2.14, -0.956], + [0.956, -1.792], + [2.031, 0.358], + [1.376, 9.238], + [-4.963, 3.946], + [-3.942, -2.269], + [0.001, -2.034], + [2.682, -0.763], + ], + v: [ + [-2.697, -7.447], + [0.926, -11.829], + [5.107, -14.814], + [12.872, -6.93], + [7.975, 11.227], + [-7.436, 12.661], + [-14.245, 1.67], + [-11.02, -5.975], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.3137254901960784, 0.8901960784313725, 0.7607843137254902, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [14.498, 166.072], + to: [0, -0.417], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 45, + s: [14.498, 163.572], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 90, + s: [14.498, 166.072], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 135, + s: [14.498, 163.572], + to: [0, 0], + ti: [0, -0.417], + }, + { t: 180, s: [14.498, 166.072] }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.167], y: [0.167] }, + t: 90, + s: [20], + }, + { t: 179, s: [0] }, + ], + ix: 6, + }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-0.136, -2.315], + [-2.107, 2.279], + [4.348, 1.044], + ], + o: [ + [0.2, 3.417], + [1.62, -1.752], + [-3.676, -0.883], + ], + v: [ + [-6.295, -0.401], + [4.812, 3.843], + [1.001, -5.239], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.9607843137254902, 0.7803921568627451, 0.7529411764705882, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [312.264, 50.735], + to: [0, 0.333], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 45, + s: [312.264, 52.735], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 90, + s: [312.264, 50.735], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 135, + s: [312.264, 52.735], + to: [0, 0], + ti: [0, 0.333], + }, + { t: 180, s: [312.264, 50.735] }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 0, + s: [0], + }, + { t: 179, s: [360] }, + ], + ix: 6, + }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 2, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-2.866, -1.457], + [-0.018, 6.544], + [1.9, -1.991], + [2.538, -3.165], + [1.298, -2.283], + ], + o: [ + [7.212, 3.666], + [0.019, -6.626], + [-1.799, 1.884], + [-2.409, 3.006], + [-0.73, 1.284], + ], + v: [ + [-7.618, 9.113], + [12.677, -0.438], + [-2.563, -10.788], + [-1.82, -0.517], + [-11.966, 3.145], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.9803921568627451, 0.7803921568627451, 0.7490196078431373, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [57.545, 324.127], + to: [0, -0.208], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 45, + s: [57.545, 322.877], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 90, + s: [57.545, 324.127], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 135, + s: [57.545, 322.877], + to: [0, 0], + ti: [0, -0.208], + }, + { t: 180, s: [57.545, 324.127] }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.167], y: [0.167] }, + t: 90, + s: [20], + }, + { t: 179, s: [0] }, + ], + ix: 6, + }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 2, + cix: 2, + bm: 0, + ix: 4, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-3.331, -1.304], + [0.27, -6.252], + [1.955, 0.211], + [3.351, 2.645], + [3.295, 3.238], + [-1.673, 1.706], + ], + o: [ + [2.658, 1.041], + [-0.128, 2.979], + [-2.158, -0.232], + [-4.154, -3.278], + [-2.329, -2.289], + [1.84, -1.877], + ], + v: [ + [-1.355, -7.342], + [12.168, 4.31], + [7.383, 10.094], + [2.393, 3.245], + [-9.533, -0.073], + [-10.765, -8.428], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.3137254901960784, 0.8901960784313725, 0.7607843137254902, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [341.675, 10.555], + to: [0, -0.833], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 45, + s: [341.675, 5.555], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 90, + s: [341.675, 10.555], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 135, + s: [341.675, 5.555], + to: [0, 0], + ti: [0, -0.833], + }, + { t: 180, s: [341.675, 10.555] }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100.074, 97.659], ix: 3 }, + r: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.167], y: [0.167] }, + t: 90, + s: [20], + }, + { t: 179, s: [0] }, + ], + ix: 6, + }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 5", + np: 2, + cix: 2, + bm: 0, + ix: 5, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 2, + ty: 4, + nm: "writen stuff ", + parent: 24, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [67.863, 121.956, 0], ix: 2 }, + a: { a: 0, k: [43.663, 62.862, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: -30, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-27.601, 7.708], + [27.601, -7.708], + ], + c: false, + }, + ], + }, + { + i: { x: 0.833, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 15, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-27.601, 7.708], + [-10.899, 3.792], + ], + c: false, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 60, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-27.601, 7.708], + [27.601, -7.708], + ], + c: false, + }, + ], + }, + { + i: { x: 0.833, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 105, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-27.601, 7.708], + [-10.899, 3.792], + ], + c: false, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 150, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-27.601, 7.708], + [27.601, -7.708], + ], + c: false, + }, + ], + }, + { + i: { x: 0.833, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 195, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-27.601, 7.708], + [-10.899, 3.792], + ], + c: false, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 240, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-27.601, 7.708], + [27.601, -7.708], + ], + c: false, + }, + ], + }, + { + i: { x: 0.833, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 285, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-27.601, 7.708], + [-10.899, 3.792], + ], + c: false, + }, + ], + }, + { + t: 330, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-27.601, 7.708], + [27.601, -7.708], + ], + c: false, + }, + ], + }, + ], + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 1.838, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [28.52, 45.548], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-42.702, 11.29], + [42.702, -11.29], + ], + c: false, + }, + ], + }, + { + i: { x: 0.833, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 45, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-42.702, 11.29], + [-0.798, 1.21], + ], + c: false, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 90, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-42.702, 11.29], + [42.702, -11.29], + ], + c: false, + }, + ], + }, + { + i: { x: 0.833, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 135, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-42.702, 11.29], + [-0.798, 1.21], + ], + c: false, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 180, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-42.702, 11.29], + [42.702, -11.29], + ], + c: false, + }, + ], + }, + { + i: { x: 0.833, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 225, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-42.702, 11.29], + [-0.798, 1.21], + ], + c: false, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 270, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-42.702, 11.29], + [42.702, -11.29], + ], + c: false, + }, + ], + }, + { + i: { x: 0.833, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 315, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-42.702, 11.29], + [-0.798, 1.21], + ], + c: false, + }, + ], + }, + { + t: 360, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-42.702, 11.29], + [42.702, -11.29], + ], + c: false, + }, + ], + }, + ], + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 1.838, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [43.644, 26.458], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: -18, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-42.721, 10.66], + [42.721, -10.66], + ], + c: false, + }, + ], + }, + { + i: { x: 0.833, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 27, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-42.721, 10.66], + [10.721, -0.66], + ], + c: false, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 72, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-42.721, 10.66], + [42.721, -10.66], + ], + c: false, + }, + ], + }, + { + i: { x: 0.833, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 117, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-42.721, 10.66], + [10.721, -0.66], + ], + c: false, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 162, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-42.721, 10.66], + [42.721, -10.66], + ], + c: false, + }, + ], + }, + { + i: { x: 0.833, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 207, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-42.721, 10.66], + [10.721, -0.66], + ], + c: false, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 252, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-42.721, 10.66], + [42.721, -10.66], + ], + c: false, + }, + ], + }, + { + i: { x: 0.833, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 297, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-42.721, 10.66], + [10.721, -0.66], + ], + c: false, + }, + ], + }, + { + t: 342, + s: [ + { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-42.721, 10.66], + [42.721, -10.66], + ], + c: false, + }, + ], + }, + ], + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 1.838, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [43.686, 11.579], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 2, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [2.064, -0.721], + [0, 0], + [-0.004, 2.577], + [0, 0], + [-2.065, 0.691], + [0, 0], + [0.007, -2.472], + [0, 0], + ], + o: [ + [0, 0], + [-2.064, 0.721], + [0, 0], + [0.004, -2.576], + [0, 0], + [2.065, -0.691], + [0, 0], + [-0.007, 2.472], + ], + v: [ + [17.548, 1.166], + [-17.587, 13.438], + [-21.317, 10.077], + [-21.308, 4.21], + [-17.562, -1.706], + [17.588, -13.467], + [21.314, -10.243], + [21.298, -4.615], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [22.133, 111.315], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 2, + cix: 2, + bm: 0, + ix: 4, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.629, -3.108], + [0.076, -0.632], + [0, 0], + [0.629, -3.108], + [0.128, -0.64], + [0, 0], + [2.646, -0.418], + [0, 0], + [-0.684, 3.104], + [-0.06, 0.307], + [0, 0], + [-0.74, 3.005], + [0, 0], + ], + o: [ + [0, 0], + [-0.162, -0.594], + [-3.883, 0.613], + [0, 0], + [-0.102, -0.564], + [-0.802, -3.544], + [0, 0], + [4.065, -0.657], + [0, 0], + [0.069, 0.272], + [4.068, -0.643], + [0, 0], + [-4.029, 0.636], + ], + v: [ + [7.663, -4.853], + [6.437, 3.275], + [2.592, -9.881], + [-3.553, -3.082], + [-5.315, 5.158], + [-6.95, -2.464], + [-14.006, -7.246], + [-7.752, 11.682], + [-1.252, 4.826], + [0.246, -2.184], + [3.938, 9.835], + [10.537, 3.262], + [14.006, -11.682], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.23921568627450981, 0.7215686274509804, 0.615686274509804, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [8.127, 0.515], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [73.75, 73.75], ix: 3 }, + r: { a: 0, k: -5.909, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 5", + np: 2, + cix: 2, + bm: 0, + ix: 5, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: -18, + op: 185, + st: -18, + bm: 0, + }, + { + ddd: 0, + ind: 3, + ty: 4, + nm: "front blue screen", + sr: 1, + ks: { + o: { a: 0, k: 60, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: -15, + s: [111.114, 291.607, 0], + to: [0, -0.667, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 15, + s: [111.114, 287.607, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 45, + s: [111.114, 291.607, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 75, + s: [111.114, 287.607, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 105, + s: [111.114, 291.607, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 135, + s: [111.114, 287.607, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 165, + s: [111.114, 291.607, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 195, + s: [111.114, 287.607, 0], + to: [0, 0, 0], + ti: [0, -0.667, 0], + }, + { t: 225, s: [111.114, 291.607, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [31.181, 44.245, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-31.181, -24.245], + [31.181, -44.245], + [31.181, 19.246], + [-31.181, 44.246], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "gf", + o: { a: 0, k: 100, ix: 10 }, + r: 1, + bm: 0, + g: { + p: 3, + k: { + a: 0, + k: [0, 0.165, 0.918, 0.925, 0.5, 0.112, 0.859, 0.867, 1, 0.059, 0.8, 0.808], + ix: 9, + }, + }, + s: { a: 0, k: [0, 0], ix: 5 }, + e: { a: 0, k: [100, 0], ix: 6 }, + t: 1, + nm: "Gradient Fill 1", + mn: "ADBE Vector Graphic - G-Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [31.181, 44.246], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: -15, + op: 185, + st: -15, + bm: 0, + }, + { + ddd: 0, + ind: 4, + ty: 4, + nm: "shirt ", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 20, + s: [-5.062], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 42, + s: [-7.289], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 67, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 91, + s: [0.5], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 120, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 151, + s: [0.5], + }, + { t: 179, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [385.583, 308.096, 0], + to: [-0.833, 0, 0], + ti: [0.833, 0, 0], + }, + { + i: { x: 0.667, y: 0.667 }, + o: { x: 0.167, y: 0.167 }, + t: 23, + s: [380.583, 308.096, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 45, + s: [380.583, 308.096, 0], + to: [0.833, 0, 0], + ti: [-0.833, 0, 0], + }, + { t: 67, s: [385.583, 308.096, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [42.732, 111.633, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [2.299, -1.901], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [1.701, -0.489], + [-1.701, 0.951], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.17254901960784313, 0.6549019607843137, 0.5490196078431373, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 1, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [32.752, 45.542], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [-1.237, 3.289], + [0, 0], + ], + o: [ + [0, 0], + [0.233, -0.623], + [0, 0], + ], + v: [ + [-4.745, 6.62], + [4.512, -3.959], + [4.512, -6.62], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.17254901960784313, 0.6549019607843137, 0.5490196078431373, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 1, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [26.538, 50.453], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-3.329, -6.202], + [-7.168, 4.561], + [0, 0], + [0, 0], + [3.934, -5.486], + ], + o: [ + [0, 0], + [7.169, -4.561], + [0, 0], + [0, 0], + [-3.935, 5.487], + ], + v: [ + [-6.597, 25.857], + [2.757, 11.209], + [5.903, -25.857], + [-3.356, -15.395], + [-2.218, 11.028], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.24313725490196078, 0.7843137254901961, 0.6627450980392157, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [25.148, 72.35], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 2, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [22.267, -26.357], + [-6.477, -3.239], + [6.477, -6.476], + [-16.191, -1.619], + [-6.476, -3.239], + [-4.857, 4.857], + [1.09, 27.694], + [1.403, 14.861], + [12.952, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [16.191, 1.62], + [6.477, 3.238], + [4.858, -4.858], + [-0.493, -12.545], + [-1.223, -12.953], + [-12.954, 0], + ], + v: [ + [-42.482, -28.294], + [-20.939, -9.678], + [-21.754, 19.43], + [-16.896, 34.001], + [9.01, 59.908], + [34.915, 61.527], + [41.393, 19.43], + [39.773, -30.762], + [13.868, -66.383], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.3137254901960784, 0.8901960784313725, 0.7607843137254902, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [42.732, 66.633], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 5", + np: 2, + cix: 2, + bm: 0, + ix: 4, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 5, + ty: 4, + nm: "front leg ", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 23, + s: [5.085], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 43, + s: [5.085], + }, + { t: 64, s: [0] }, + ], + ix: 10, + }, + p: { a: 0, k: [388.143, 310.242, 0], ix: 2 }, + a: { a: 0, k: [95.289, 31.206, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [10.48, -4.161], + [-10.48, 4.161], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.689999988032, 0.819999964097, 0.783999992819, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 1, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [65, 70.783], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [0.503, -4.107], + [-7.48, -0.992], + [7.48, 4.107], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.764999988032, 0.847000002394, 0.823999980852, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [63.856, 74.944], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [-3.086, -11.8], + [-4.175, -1.271], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [3.086, 11.799], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-24.931, -17.472], + [-4.268, 1.498], + [8.802, 20.921], + [24.931, 12.681], + [-12.952, -20.921], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.764999988032, 0.847000002394, 0.823999980852, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [93.643, 33.045], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 2, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.481, 0.698], + [0.32, -0.755], + [-0.536, 0.049], + ], + o: [ + [-0.232, -0.338], + [-0.32, 0.754], + [0.405, -0.039], + ], + v: [ + [0.73, -0.299], + [-0.891, -0.557], + [0.264, 1.262], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.764999988032, 0.847000002394, 0.823999980852, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [84.168, 101.916], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 2, + cix: 2, + bm: 0, + ix: 4, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.48, 0.698], + [0.32, -0.755], + [-0.536, 0.049], + ], + o: [ + [-0.233, -0.338], + [-0.32, 0.754], + [0.406, -0.039], + ], + v: [ + [0.731, -0.3], + [-0.891, -0.557], + [0.264, 1.263], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.764999988032, 0.847000002394, 0.823999980852, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [61.729, 89.265], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 5", + np: 2, + cix: 2, + bm: 0, + ix: 5, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.48, 0.698], + [0.32, -0.755], + [-0.536, 0.049], + ], + o: [ + [-0.233, -0.338], + [-0.32, 0.754], + [0.406, -0.038], + ], + v: [ + [0.731, -0.299], + [-0.891, -0.557], + [0.264, 1.262], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.764999988032, 0.847000002394, 0.823999980852, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [43.674, 67.522], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 6", + np: 2, + cix: 2, + bm: 0, + ix: 6, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.818, 0.221], + [-0.243, -0.783], + [-0.377, 0.385], + ], + o: [ + [-0.396, -0.107], + [0.243, 0.782], + [0.285, -0.29], + ], + v: [ + [0.354, -0.885], + [-1.049, -0.033], + [1.008, 0.607], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.764999988032, 0.847000002394, 0.823999980852, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [71.929, 95.309], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 7", + np: 2, + cix: 2, + bm: 0, + ix: 7, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.818, 0.221], + [-0.244, -0.783], + [-0.377, 0.385], + ], + o: [ + [-0.396, -0.107], + [0.243, 0.782], + [0.285, -0.29], + ], + v: [ + [0.355, -0.885], + [-1.049, -0.033], + [1.007, 0.607], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.764999988032, 0.847000002394, 0.823999980852, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [44.561, 74.865], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 8", + np: 2, + cix: 2, + bm: 0, + ix: 8, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.818, 0.222], + [-0.243, -0.784], + [-0.377, 0.385], + ], + o: [ + [-0.396, -0.106], + [0.244, 0.782], + [0.285, -0.291], + ], + v: [ + [0.355, -0.886], + [-1.05, -0.033], + [1.007, 0.606], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.764999988032, 0.847000002394, 0.823999980852, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [56.343, 56.799], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 9", + np: 2, + cix: 2, + bm: 0, + ix: 9, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.787, 0.313], + [-0.153, -0.806], + [-0.418, 0.339], + ], + o: [ + [-0.382, -0.151], + [0.153, 0.804], + [0.316, -0.256], + ], + v: [ + [0.425, -0.873], + [-1.067, -0.186], + [0.904, 0.684], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.764999988032, 0.847000002394, 0.823999980852, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [66.553, 92.192], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 10", + np: 2, + cix: 2, + bm: 0, + ix: 10, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.531, -0.661], + [-0.815, -0.091], + [0.201, 0.499], + ], + o: [ + [-0.257, 0.319], + [0.814, 0.092], + [-0.152, -0.378], + ], + v: [ + [-0.616, -0.529], + [-0.399, 1.098], + [1.013, -0.529], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.764999988032, 0.847000002394, 0.823999980852, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [70.136, 48.195], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 11", + np: 2, + cix: 2, + bm: 0, + ix: 11, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-0.252, 2.604], + [0.498, -1.165], + ], + o: [ + [0.055, -0.57], + [-0.497, 1.164], + ], + v: [ + [1.278, -0.278], + [-0.836, -1.161], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.764999988032, 0.847000002394, 0.823999980852, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [48.968, 80.26], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 12", + np: 2, + cix: 2, + bm: 0, + ix: 12, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-0.252, 2.603], + [0.498, -1.164], + ], + o: [ + [0.055, -0.57], + [-0.497, 1.165], + ], + v: [ + [1.278, -0.278], + [-0.836, -1.161], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.764999988032, 0.847000002394, 0.823999980852, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [62.616, 53.056], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 13", + np: 2, + cix: 2, + bm: 0, + ix: 13, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [1.73, -1.961], + [-1.087, 0.651], + ], + o: [ + [-0.379, 0.43], + [1.086, -0.652], + ], + v: [ + [-0.951, -0.323], + [0.244, 1.633], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.764999988032, 0.847000002394, 0.823999980852, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [78.041, 44.59], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 14", + np: 2, + cix: 2, + bm: 0, + ix: 14, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [4.682, -1.015], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [4.724, -3.801], + [-4.724, 3.801], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.764999988032, 0.847000002394, 0.823999980852, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 1, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [88.873, 108.948], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 15", + np: 2, + cix: 2, + bm: 0, + ix: 15, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-0.96, -1.956], + [-0.071, 1.899], + ], + o: [ + [0.318, 0.649], + [0.072, -1.899], + ], + v: [ + [-0.987, -0.188], + [1.875, 0.245], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.764999988032, 0.847000002394, 0.823999980852, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [78.645, 97.893], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 16", + np: 2, + cix: 2, + bm: 0, + ix: 16, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-0.273, 2.16], + [1.104, -1.547], + ], + o: [ + [0.092, -0.719], + [-1.104, 1.547], + ], + v: [ + [1.583, 0.662], + [-0.57, -1.275], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.764999988032, 0.847000002394, 0.823999980852, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [55.899, 85.138], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 17", + np: 2, + cix: 2, + bm: 0, + ix: 17, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [1.497, 1.582], + [-0.496, -1.835], + ], + o: [ + [-0.497, -0.526], + [0.496, 1.834], + ], + v: [ + [0.931, -0.437], + [-1.932, 0.001], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.764999988032, 0.847000002394, 0.823999980852, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [50.605, 61.327], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 18", + np: 2, + cix: 2, + bm: 0, + ix: 18, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [1.918, -1.032], + [-1.901, 0], + ], + o: [ + [-0.638, 0.343], + [1.9, 0], + ], + v: [ + [0.155, -0.923], + [-0.172, 1.955], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.764999988032, 0.847000002394, 0.823999980852, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [86.167, 39.934], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 19", + np: 2, + cix: 2, + bm: 0, + ix: 19, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [10.662, -8.47], + [-15.964, -8.471], + [0, 0], + ], + o: [ + [0, 0], + [-10.663, 8.471], + [15.964, 8.471], + [0, 0], + ], + v: [ + [31.568, -36.833], + [-20.905, -7.475], + [-10.48, 18.914], + [23.404, 36.833], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.764999988032, 0.847000002394, 0.823999980852, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 1, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [61.832, 68.857], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 20", + np: 2, + cix: 2, + bm: 0, + ix: 20, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [20.239, -15.382], + [13.488, -24.226], + [-26.722, -11.845], + [-12.999, -4.641], + [-1.288, -0.443], + [-1.582, 0.298], + [-4.801, 4.586], + [1.027, 2.222], + [0.844, 1.355], + [5.21, 4.744], + [0, 0], + [-3.238, 9.715], + ], + o: [ + [0, 0], + [-6.773, 12.163], + [0, 0], + [1.509, 0.539], + [1.526, 0.526], + [0, 0], + [0, 0], + [-0.459, -0.994], + [-2.001, -3.209], + [-14.991, -13.649], + [0, 0], + [3.238, -9.715], + ], + v: [ + [4.259, -43.574], + [-57.267, 3.381], + [-17.497, 42.357], + [15.177, 54.557], + [18.34, 58.429], + [23.349, 57.354], + [32.996, 49.962], + [34.086, 45.832], + [29.839, 42.949], + [19.392, 30.846], + [-1.859, 12.385], + [60.802, -20.368], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.811999990426, 0.913999968884, 0.885999971278, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [64.289, 59.206], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 21", + np: 2, + cix: 2, + bm: 0, + ix: 21, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 6, + ty: 4, + nm: "front foot ", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 23, + s: [-9.209], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 43, + s: [-9.209], + }, + { t: 64, s: [0] }, + ], + ix: 10, + }, + p: { a: 0, k: [388.048, 416.894, 0], ix: 2 }, + a: { a: 0, k: [11.764, 30.553, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [6.099, -5.573], + [0.432, 5.573], + [-6.099, 1.573], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 23, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [3.151, -7.697], + [-3.113, 3.225], + [-9.047, -0.551], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 43, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [3.151, -7.697], + [-3.113, 3.225], + [-9.047, -0.551], + ], + c: true, + }, + ], + }, + { + t: 64, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [6.099, -5.573], + [0.432, 5.573], + [-6.099, 1.573], + ], + c: true, + }, + ], + }, + ], + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.8980392156862745, 0.7254901960784313, 0.4392156862745098, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [7.756, 7.436], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 3.237], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-8.089, 0.913], + [3.231, 7.846], + [8.089, 1.37], + [2.768, -7.846], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 23, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 3.237], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-12.048, -2.008], + [1.314, 6.396], + [6.172, -0.08], + [1.53, -8.807], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 43, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 3.237], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-12.048, -2.008], + [1.314, 6.396], + [6.172, -0.08], + [1.53, -8.807], + ], + c: true, + }, + ], + }, + { + t: 64, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 3.237], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-8.089, 0.913], + [3.231, 7.846], + [8.089, 1.37], + [2.768, -7.846], + ], + c: true, + }, + ], + }, + ], + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.996078431372549, 0.8431372549019608, 0.5882352941176471, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [9.746, 8.097], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [ + { + i: [ + [0, 0], + [-3.296, -4.749], + [7.384, -7.649], + [0, 0], + [-1.996, 1.385], + [-2.506, 0.395], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0.758, -0.526], + [0, 0], + [0, 0], + ], + v: [ + [3.824, -11.31], + [12.264, -7.581], + [2.506, 12.331], + [-12.264, 12.331], + [-9.216, 8.65], + [-1.45, 4.419], + [0, -8.374], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 23, + s: [ + { + i: [ + [0, 0], + [-3.296, -4.749], + [7.384, -7.649], + [0, 0], + [-1.996, 1.385], + [-2.506, 0.395], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0.758, -0.526], + [0, 0], + [0, 0], + ], + v: [ + [1.64, -12.677], + [10.246, -8.415], + [2.506, 12.331], + [-12.951, 10.32], + [-8.712, 6.325], + [-3.034, 4.035], + [-2.184, -9.741], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 43, + s: [ + { + i: [ + [0, 0], + [-3.296, -4.749], + [7.384, -7.649], + [0, 0], + [-1.996, 1.385], + [-2.506, 0.395], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0.758, -0.526], + [0, 0], + [0, 0], + ], + v: [ + [1.64, -12.677], + [10.246, -8.415], + [2.506, 12.331], + [-12.951, 10.32], + [-8.712, 6.325], + [-3.034, 4.035], + [-2.184, -9.741], + ], + c: true, + }, + ], + }, + { + t: 64, + s: [ + { + i: [ + [0, 0], + [-3.296, -4.749], + [7.384, -7.649], + [0, 0], + [-1.996, 1.385], + [-2.506, 0.395], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0.758, -0.526], + [0, 0], + [0, 0], + ], + v: [ + [3.824, -11.31], + [12.264, -7.581], + [2.506, 12.331], + [-12.264, 12.331], + [-9.216, 8.65], + [-1.45, 4.419], + [0, -8.374], + ], + c: true, + }, + ], + }, + ], + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.004000000393, 0.532999973671, 0.536999990426, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [12.514, 20.776], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 2, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 7, + ty: 4, + nm: "back leg ", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 23, + s: [-4.639], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 43, + s: [-4.639], + }, + { t: 64, s: [0] }, + ], + ix: 10, + }, + p: { a: 0, k: [326.959, 435.272, 0], ix: 2 }, + a: { a: 0, k: [10.423, 131.948, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [42.886, -25.031], + [20.65, -44.478], + [3.366, -0.959], + [0, 0], + [0.249, 2.134], + [-7.104, 14.208], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [-0.452, 0.974], + [-0.571, 0.162], + [-2.097, -1.467], + [-1.804, -15.438], + [6.843, -13.686], + [0, 0], + ], + v: [ + [50.673, -60.212], + [-6.868, -15.886], + [-32.934, 64.604], + [-34.311, 67.535], + [-48.576, 63.374], + [-47.669, 58.702], + [-37.631, -30.458], + [10.943, -67.697], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.689999988032, 0.819999964097, 0.783999992819, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [50.923, 67.948], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 8, + ty: 4, + nm: "back foot ", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [325.99, 436.118, 0], ix: 2 }, + a: { a: 0, k: [25.645, 4.057, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-4.621, -2.702], + [3.966, 2.702], + [4.621, 0.07], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.8980392156862745, 0.7254901960784313, 0.4392156862745098, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [26.058, 6.193], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [-4.747, 0.33], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-5.321, -6.335], + [-4.726, 3.829], + [2.708, 6.005], + [5.321, -4.489], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.996078431372549, 0.8431372549019608, 0.5882352941176471, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [26.396, 6.585], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [9.434, 0], + [1.768, -0.982], + [0, 0], + [0, 0], + [4.662, 3.396], + ], + o: [ + [0, 0], + [-2.171, 0], + [-1.44, 0.801], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [6.92, -5.048], + [-6.431, -7.6], + [-14.847, -5.463], + [-16.395, 0.064], + [12.492, 7.6], + [11.733, -4.06], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.004000000393, 0.532999973671, 0.536999990426, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [16.645, 15.265], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 2, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 9, + ty: 4, + nm: "front arm", + parent: 4, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [11.608, 51.721, 0], ix: 2 }, + a: { a: 0, k: [65.435, 23.145, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [ + { + i: [ + [0, 0], + [7.774, -3.838], + [0, 0], + [-9.345, 6.62], + [0, 0], + [4.719, -5.032], + ], + o: [ + [-0.471, 1.412], + [0, 0], + [0, 0], + [13.528, -9.583], + [0, 0], + [-13.036, 13.9], + ], + v: [ + [0.948, 1.529], + [-37.685, 26.109], + [-35.79, 32.895], + [10.729, 19.729], + [37.685, -4.766], + [22.587, -27.863], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 20, + s: [ + { + i: [ + [0, 0], + [7.774, -3.838], + [0, 0], + [-9.345, 6.62], + [0, 0], + [4.719, -5.032], + ], + o: [ + [-0.471, 1.412], + [0, 0], + [0, 0], + [13.528, -9.583], + [0, 0], + [-13.036, 13.9], + ], + v: [ + [7.904, 5.157], + [-31.021, 17.946], + [-30.095, 24.678], + [17.686, 23.357], + [37.685, -4.766], + [22.587, -27.863], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 39, + s: [ + { + i: [ + [0, 0], + [7.774, -3.838], + [0, 0], + [-9.345, 6.62], + [0, 0], + [4.719, -5.032], + ], + o: [ + [-0.471, 1.412], + [0, 0], + [0, 0], + [13.528, -9.583], + [0, 0], + [-13.036, 13.9], + ], + v: [ + [9.532, 4.226], + [-29.876, 14.814], + [-28.949, 21.546], + [19.314, 22.426], + [37.685, -4.766], + [22.587, -27.863], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 43, + s: [ + { + i: [ + [0, 0], + [7.774, -3.838], + [0, 0], + [-9.345, 6.62], + [0, 0], + [4.719, -5.032], + ], + o: [ + [-0.471, 1.412], + [0, 0], + [0, 0], + [13.528, -9.583], + [0, 0], + [-13.036, 13.9], + ], + v: [ + [9.532, 4.226], + [-29.876, 14.814], + [-28.949, 21.546], + [19.314, 22.426], + [37.685, -4.766], + [22.587, -27.863], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 67, + s: [ + { + i: [ + [0, 0], + [7.774, -3.838], + [0, 0], + [-9.345, 6.62], + [0, 0], + [4.719, -5.032], + ], + o: [ + [-0.471, 1.412], + [0, 0], + [0, 0], + [13.528, -9.583], + [0, 0], + [-13.036, 13.9], + ], + v: [ + [0.948, 1.529], + [-38.247, 26.046], + [-36.353, 32.833], + [10.729, 19.729], + [37.685, -4.766], + [22.587, -27.863], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 91, + s: [ + { + i: [ + [0, 0], + [7.774, -3.838], + [0, 0], + [-9.345, 6.62], + [0, 0], + [4.719, -5.032], + ], + o: [ + [-0.471, 1.412], + [0, 0], + [0, 0], + [13.528, -9.583], + [0, 0], + [-13.036, 13.9], + ], + v: [ + [0.567, 0.907], + [-38.554, 26.742], + [-36.66, 33.528], + [10.349, 19.107], + [37.685, -4.766], + [22.587, -27.863], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 120, + s: [ + { + i: [ + [0, 0], + [7.774, -3.838], + [0, 0], + [-9.345, 6.62], + [0, 0], + [4.719, -5.032], + ], + o: [ + [-0.471, 1.412], + [0, 0], + [0, 0], + [13.528, -9.583], + [0, 0], + [-13.036, 13.9], + ], + v: [ + [0.948, 1.529], + [-38.247, 26.046], + [-36.353, 32.833], + [10.729, 19.729], + [37.685, -4.766], + [22.587, -27.863], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 151, + s: [ + { + i: [ + [0, 0], + [7.774, -3.838], + [0, 0], + [-9.345, 6.62], + [0, 0], + [4.719, -5.032], + ], + o: [ + [-0.471, 1.412], + [0, 0], + [0, 0], + [13.528, -9.583], + [0, 0], + [-13.036, 13.9], + ], + v: [ + [0.567, 0.907], + [-38.554, 26.742], + [-36.66, 33.528], + [10.349, 19.107], + [37.685, -4.766], + [22.587, -27.863], + ], + c: true, + }, + ], + }, + { + t: 179, + s: [ + { + i: [ + [0, 0], + [7.774, -3.838], + [0, 0], + [-9.345, 6.62], + [0, 0], + [4.719, -5.032], + ], + o: [ + [-0.471, 1.412], + [0, 0], + [0, 0], + [13.528, -9.583], + [0, 0], + [-13.036, 13.9], + ], + v: [ + [0.948, 1.529], + [-38.247, 26.046], + [-36.353, 32.833], + [10.729, 19.729], + [37.685, -4.766], + [22.587, -27.863], + ], + c: true, + }, + ], + }, + ], + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.996078431372549, 0.8431372549019608, 0.5882352941176471, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [37.934, 33.145], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 10, + ty: 4, + nm: "front hand ", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [289.939, 287.713, 0], ix: 2 }, + a: { a: 0, k: [24.479, 5.734, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [3.259, -0.434], + [-1.52, -0.325], + [-2.086, -0.349], + [0, 0], + ], + o: [ + [0, 0], + [-3.257, 0.435], + [1.521, 0.326], + [2.086, 0.349], + [0, 0], + ], + v: [ + [10.836, -3.421], + [0.736, -5.05], + [-11.21, 5.158], + [-0.264, 2.529], + [12.729, 3.365], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.996078431372549, 0.8431372549019608, 0.5882352941176471, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [12.98, 5.734], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 11, + ty: 4, + nm: "back arm ", + parent: 4, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [30.946], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 21, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.527], y: [0] }, + t: 39, + s: [-13.807], + }, + { t: 82, s: [30.946] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 0.667 }, + o: { x: 0.333, y: 0.333 }, + t: 0, + s: [18.082, 44.908, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 21, + s: [18.082, 44.908, 0], + to: [-1.074, -1.099, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.527, y: 0 }, + t: 39, + s: [11.638, 38.314, 0], + to: [0, 0, 0], + ti: [-1.074, -1.099, 0], + }, + { t: 82, s: [18.082, 44.908, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [43.193, 43.062, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [2.147, 3.13], + [0, 0], + [-11.413, -0.947], + ], + o: [ + [-0.354, 1.446], + [0, 0], + [0, 0], + [11.414, 0.948], + ], + v: [ + [18.147, 8.12], + [-35.211, -16.131], + [-40.943, -11.171], + [8.741, 25.178], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.996078431372549, 0.8431372549019608, 0.5882352941176471, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [41.192, 26.062], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 12, + ty: 4, + nm: "back hand ", + parent: 11, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 5, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 22, + s: [16.768], + }, + { t: 37, s: [-1.431] }, + ], + ix: 10, + }, + p: { a: 0, k: [3.668, 12.596, 0], ix: 2 }, + a: { a: 0, k: [18.001, 21.565, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [3.121, 2.162], + [1.094, 0.382], + [-0.917, -1.105], + [0, 0], + [-1.805, -3.275], + [0, 0], + ], + o: [ + [0, 0], + [-1.042, -0.721], + [-1.094, -0.382], + [0.918, 1.105], + [0, 0], + [1.806, 3.276], + [0, 0], + ], + v: [ + [10.251, 7.309], + [6.539, -2.01], + [-9.157, -11.932], + [-8.887, -8.648], + [-3.881, -2.359], + [-6.798, 6.646], + [4.651, 12.314], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.996078431372549, 0.8431372549019608, 0.5882352941176471, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [10.501, 12.564], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 13, + ty: 4, + nm: "LottieFiles cube 2", + parent: 24, + sr: 1, + ks: { + o: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 128, + s: [0], + }, + { t: 151, s: [100] }, + ], + ix: 11, + }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [154.347, 108.147, 0], ix: 2 }, + a: { a: 0, k: [34.006, 33.096, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-4.506, -0.225], + [0.043, -0.868], + [0.869, 0.043], + [3.277, -8.047], + [4.417, -0.102], + [0.021, 0.87], + [-0.87, 0.02], + [-3.29, 8.081], + ], + o: [ + [0.869, 0.043], + [-0.044, 0.869], + [-2.65, -0.132], + [-3.736, 9.175], + [-0.869, 0.02], + [-0.019, -0.87], + [2.688, -0.062], + [3.75, -9.21], + ], + v: [ + [10.685, -14.342], + [12.18, -12.691], + [10.528, -11.195], + [1.429, 0.5], + [-10.592, 14.546], + [-12.204, 13.008], + [-10.665, 11.397], + [-1.489, -0.688], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 1.509, ix: 5 }, + lc: 1, + lj: 1, + ml: 10, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [50.637, 39.122], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-4.506, -0.225], + [0.043, -0.868], + [0.869, 0.043], + [3.277, -8.047], + [4.417, -0.102], + [0.021, 0.87], + [-0.87, 0.02], + [-3.29, 8.081], + ], + o: [ + [0.869, 0.043], + [-0.044, 0.869], + [-2.65, -0.132], + [-3.736, 9.175], + [-0.869, 0.02], + [-0.019, -0.87], + [2.688, -0.062], + [3.75, -9.21], + ], + v: [ + [10.685, -14.342], + [12.18, -12.691], + [10.528, -11.195], + [1.429, 0.5], + [-10.592, 14.546], + [-12.204, 13.008], + [-10.665, 11.397], + [-1.489, -0.688], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [50.637, 39.122], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-18.302, -14.011], + [18.114, -27.199], + [18.114, 14.074], + [-18.302, 27.887], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "gf", + o: { a: 0, k: 100, ix: 10 }, + r: 1, + bm: 0, + g: { + p: 3, + k: { + a: 0, + k: [0, 0.165, 0.918, 0.925, 0.5, 0.112, 0.859, 0.867, 1, 0.059, 0.8, 0.808], + ix: 9, + }, + }, + s: { a: 0, k: [-13.805, 6.441], ix: 5 }, + e: { a: 0, k: [13.507, -1.4], ix: 6 }, + t: 1, + nm: "Gradient Fill 1", + mn: "ADBE Vector Graphic - G-Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [49.647, 38.743], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 2, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-15.204, -26.356], + [15.391, -14.919], + [15.641, 26.231], + [-15.641, 14.981], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "gf", + o: { a: 0, k: 100, ix: 10 }, + r: 1, + bm: 0, + g: { + p: 3, + k: { + a: 0, + k: [0, 0.165, 0.918, 0.925, 0.5, 0.112, 0.859, 0.867, 1, 0.059, 0.8, 0.808], + ix: 9, + }, + }, + s: { a: 0, k: [-16.328, 0.389], ix: 5 }, + e: { a: 0, k: [13.016, 5.091], ix: 6 }, + t: 1, + nm: "Gradient Fill 1", + mn: "ADBE Vector Graphic - G-Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [15.891, 39.71], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 2, + cix: 2, + bm: 0, + ix: 4, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-33.506, 0.739], + [1.256, -12.761], + [33.631, -0.988], + [-3.006, 12.262], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "gf", + o: { a: 0, k: 100, ix: 10 }, + r: 1, + bm: 0, + g: { + p: 3, + k: { + a: 0, + k: [0, 0.165, 0.918, 0.925, 0.5, 0.112, 0.859, 0.867, 1, 0.059, 0.8, 0.808], + ix: 9, + }, + }, + s: { a: 0, k: [-29.482, 0.338], ix: 5 }, + e: { a: 0, k: [21.871, -1.938], ix: 6 }, + t: 1, + nm: "Gradient Fill 1", + mn: "ADBE Vector Graphic - G-Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [34.006, 12.512], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 5", + np: 2, + cix: 2, + bm: 0, + ix: 5, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 128, + op: 352, + st: 172, + bm: 0, + }, + { + ddd: 0, + ind: 14, + ty: 4, + nm: "LottieFiles cube", + parent: 24, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [154.347, 108.147, 0], ix: 2 }, + a: { a: 0, k: [34.006, 33.096, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-4.506, -0.225], + [0.043, -0.868], + [0.869, 0.043], + [3.277, -8.047], + [4.417, -0.102], + [0.021, 0.87], + [-0.87, 0.02], + [-3.29, 8.081], + ], + o: [ + [0.869, 0.043], + [-0.044, 0.869], + [-2.65, -0.132], + [-3.736, 9.175], + [-0.869, 0.02], + [-0.019, -0.87], + [2.688, -0.062], + [3.75, -9.21], + ], + v: [ + [10.685, -14.342], + [12.18, -12.691], + [10.528, -11.195], + [1.429, 0.5], + [-10.592, 14.546], + [-12.204, 13.008], + [-10.665, 11.397], + [-1.489, -0.688], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 1.509, ix: 5 }, + lc: 1, + lj: 1, + ml: 10, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 25, + s: [50.637, 39.122], + to: [-2.25, 0.417], + ti: [5.833, -0.25], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 55, + s: [37.137, 41.622], + to: [-5.833, 0.25], + ti: [3.583, 0.167], + }, + { + i: { x: 0.667, y: 0.667 }, + o: { x: 0.333, y: 0.333 }, + t: 85, + s: [15.637, 40.622], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 128, + s: [15.637, 40.622], + to: [5.833, -0.25], + ti: [-5.833, 0.25], + }, + { t: 129, s: [50.637, 39.122] }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.833, 0.833], y: [0.833, 0.833] }, + o: { x: [0.333, 0.333], y: [0, 0] }, + t: 25, + s: [100, 100], + }, + { + i: { x: [0.667, 0.667], y: [1, 1] }, + o: { x: [0.167, 0.167], y: [0.167, 0.167] }, + t: 55, + s: [110, 110], + }, + { + i: { x: [0.667, 0.667], y: [1, 1] }, + o: { x: [0.333, 0.333], y: [0, 0] }, + t: 85, + s: [90, 90], + }, + { + i: { x: [0.667, 0.667], y: [1, 1] }, + o: { x: [0.333, 0.333], y: [0, 0] }, + t: 128, + s: [90, 90], + }, + { t: 129, s: [100, 100] }, + ], + ix: 3, + }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.167], y: [0.167] }, + t: 55, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 85, + s: [6], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.333], y: [0] }, + t: 128, + s: [6], + }, + { t: 129, s: [0] }, + ], + ix: 6, + }, + o: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 107, + s: [100], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 128, + s: [0], + }, + { t: 151, s: [100] }, + ], + ix: 7, + }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-4.506, -0.225], + [0.043, -0.868], + [0.869, 0.043], + [3.277, -8.047], + [4.417, -0.102], + [0.021, 0.87], + [-0.87, 0.02], + [-3.29, 8.081], + ], + o: [ + [0.869, 0.043], + [-0.044, 0.869], + [-2.65, -0.132], + [-3.736, 9.175], + [-0.869, 0.02], + [-0.019, -0.87], + [2.688, -0.062], + [3.75, -9.21], + ], + v: [ + [10.685, -14.342], + [12.18, -12.691], + [10.528, -11.195], + [1.429, 0.5], + [-10.592, 14.546], + [-12.204, 13.008], + [-10.665, 11.397], + [-1.489, -0.688], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 25, + s: [50.637, 39.122], + to: [-2.25, 0.417], + ti: [5.833, -0.25], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 55, + s: [37.137, 41.622], + to: [-5.833, 0.25], + ti: [3.583, 0.167], + }, + { + i: { x: 0.667, y: 0.667 }, + o: { x: 0.333, y: 0.333 }, + t: 85, + s: [15.637, 40.622], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 128, + s: [15.637, 40.622], + to: [5.833, -0.25], + ti: [-5.833, 0.25], + }, + { t: 129, s: [50.637, 39.122] }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.833, 0.833], y: [0.833, 0.833] }, + o: { x: [0.333, 0.333], y: [0, 0] }, + t: 25, + s: [100, 100], + }, + { + i: { x: [0.667, 0.667], y: [1, 1] }, + o: { x: [0.167, 0.167], y: [0.167, 0.167] }, + t: 55, + s: [110, 110], + }, + { + i: { x: [0.667, 0.667], y: [1, 1] }, + o: { x: [0.333, 0.333], y: [0, 0] }, + t: 85, + s: [90, 90], + }, + { + i: { x: [0.667, 0.667], y: [1, 1] }, + o: { x: [0.333, 0.333], y: [0, 0] }, + t: 128, + s: [90, 90], + }, + { t: 129, s: [100, 100] }, + ], + ix: 3, + }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.167], y: [0.167] }, + t: 55, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 85, + s: [6], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.333], y: [0] }, + t: 128, + s: [6], + }, + { t: 129, s: [0] }, + ], + ix: 6, + }, + o: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 107, + s: [100], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 128, + s: [0], + }, + { t: 151, s: [100] }, + ], + ix: 7, + }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 25, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-18.302, -14.011], + [18.114, -27.199], + [18.114, 14.074], + [-18.302, 27.887], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 55, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-40.226, -21.211], + [13.441, -21.234], + [13.274, 26.289], + [-40.392, 26.937], + ], + c: true, + }, + ], + }, + { + t: 85, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-48.96, -25.389], + [-18.365, -13.952], + [-18.115, 27.199], + [-49.397, 15.949], + ], + c: true, + }, + ], + }, + ], + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "gf", + o: { a: 0, k: 100, ix: 10 }, + r: 1, + bm: 0, + g: { + p: 3, + k: { + a: 0, + k: [0, 0.165, 0.918, 0.925, 0.5, 0.112, 0.859, 0.867, 1, 0.059, 0.8, 0.808], + ix: 9, + }, + }, + s: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 55, + s: [-13.805, 6.441], + to: [-5.915, -0.854], + ti: [5.915, 0.854], + }, + { t: 85, s: [-49.293, 1.319] }, + ], + ix: 5, + }, + e: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 55, + s: [13.507, -1.4], + to: [-6.296, 0.834], + ti: [6.296, -0.834], + }, + { t: 85, s: [-24.27, 3.603] }, + ], + ix: 6, + }, + t: 1, + nm: "Gradient Fill 1", + mn: "ADBE Vector Graphic - G-Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [49.647, 38.743], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 2, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 25, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-15.204, -26.356], + [15.391, -14.919], + [15.641, 26.231], + [-15.641, 14.981], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 40, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-10.204, -27.731], + [7.141, -17.794], + [7.266, 26.606], + [-10.266, 16.981], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 51, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-3.487, -29.14], + [-3.459, -21.852], + [-3.642, 25.798], + [-3.275, 18.048], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 55, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-6.704, -22.356], + [-6.359, -22.919], + [-6.609, 25.731], + [-6.391, 25.731], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 56, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [43.796, -21.606], + [44.141, -22.169], + [43.891, 26.481], + [44.109, 26.481], + ], + c: true, + }, + ], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 61, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [39.3, -20.462], + [44.598, -30.247], + [44.09, 14.486], + [39.07, 25.604], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 67, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [30.609, -19.005], + [46.699, -29.66], + [46.996, 15.705], + [30.812, 25.853], + ], + c: true, + }, + ], + }, + { + t: 85, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [15.546, -14.606], + [51.141, -28.419], + [52.141, 12.731], + [15.609, 26.106], + ], + c: true, + }, + ], + }, + ], + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "gf", + o: { a: 0, k: 100, ix: 10 }, + r: 1, + bm: 0, + g: { + p: 3, + k: { + a: 0, + k: [0, 0.165, 0.918, 0.925, 0.5, 0.112, 0.859, 0.867, 1, 0.059, 0.8, 0.808], + ix: 9, + }, + }, + s: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 55, + s: [-16.328, 0.389], + to: [6.422, 0.9], + ti: [-6.422, -0.9], + }, + { t: 85, s: [22.202, 5.788] }, + ], + ix: 5, + }, + e: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 55, + s: [13.016, 5.091], + to: [5.772, -1.308], + ti: [-5.772, 1.308], + }, + { t: 85, s: [47.647, -2.755] }, + ], + ix: 6, + }, + t: 1, + nm: "Gradient Fill 1", + mn: "ADBE Vector Graphic - G-Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [15.891, 39.71], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 2, + cix: 2, + bm: 0, + ix: 4, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 25, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-33.506, 0.739], + [1.256, -12.761], + [33.631, -0.988], + [-3.006, 12.262], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 55, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-19.788, -3.011], + [24.474, -3.511], + [29.381, 4.762], + [-24.256, 5.262], + ], + c: true, + }, + ], + }, + { + t: 85, + s: [ + { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [1.744, -13.011], + [32.756, -1.261], + [-2.369, 12.512], + [-33.006, 0.762], + ], + c: true, + }, + ], + }, + ], + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "gf", + o: { a: 0, k: 100, ix: 10 }, + r: 1, + bm: 0, + g: { + p: 3, + k: { + a: 0, + k: [0, 0.165, 0.918, 0.925, 0.5, 0.112, 0.859, 0.867, 1, 0.059, 0.8, 0.808], + ix: 9, + }, + }, + s: { a: 0, k: [-29.482, 0.338], ix: 5 }, + e: { a: 0, k: [21.871, -1.938], ix: 6 }, + t: 1, + nm: "Gradient Fill 1", + mn: "ADBE Vector Graphic - G-Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [34.006, 12.512], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 5", + np: 2, + cix: 2, + bm: 0, + ix: 5, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: -25, + op: 152, + st: 19, + bm: 0, + }, + { + ddd: 0, + ind: 15, + ty: 4, + nm: "neck", + parent: 4, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 17, + s: [8.514], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 47, + s: [8.514], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 75, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 103, + s: [2], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 129, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 155, + s: [2], + }, + { t: 179, s: [0] }, + ], + ix: 10, + }, + p: { a: 0, k: [52.113, 5.779, 0], ix: 2 }, + a: { a: 0, k: [13.313, 24.871, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [-0.633, 1.791], + [8.027, -4.628], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-5.118, -3.117], + [4.422, -7.729], + [-2.909, 7.729], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.8980392156862745, 0.7254901960784313, 0.4392156862745098, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [5.875, 13.141], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [2.747, 4.842], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [-5.467, -9.637], + [0, 0], + ], + v: [ + [-14.063, -7.355], + [-10.639, 12.977], + [11.316, 9.279], + [6.469, -14.121], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.996078431372549, 0.8431372549019608, 0.5882352941176471, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [14.313, 14.371], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 16, + ty: 4, + nm: "ear ", + parent: 21, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [23.568, 22.743, 0], ix: 2 }, + a: { a: 0, k: [5.918, 6.096, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-0.427, -0.596], + [0.427, 0.596], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.011999999776, 0.136999990426, 0.128999986836, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 0.732, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [6.641, 4.494], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [-3.191, -2.85], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-0.836, 2.222], + [1.595, 0.628], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.011999999776, 0.136999990426, 0.128999986836, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 0.732, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [6.754, 4.052], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-0.481, -2.864], + [-2.865, 0.483], + [0.482, 2.864], + [2.865, -0.483], + ], + o: [ + [0.482, 2.864], + [2.864, -0.482], + [-0.482, -2.864], + [-2.863, 0.482], + ], + v: [ + [-5.186, 0.873], + [0.874, 5.186], + [5.186, -0.873], + [-0.874, -5.186], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.996078431372549, 0.8431372549019608, 0.5882352941176471, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [5.917, 6.274], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 2, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 17, + ty: 4, + nm: "hair ", + parent: 21, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [20.961, 16.877, 0], ix: 2 }, + a: { a: 0, k: [27.778, 22.05, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [3.736, -0.37], + [1.719, -0.152], + [1.087, 2.033], + [1.672, 0.08], + [-0.331, 2.006], + [-1.928, 0.572], + [-5.411, 1.006], + [-9.41, -2.895], + [-2.055, -1.558], + [2.235, -3.61], + [0, 0], + [3.951, -3.197], + [0, 0], + [1.373, -3.745], + [5.761, 1.075], + [0.543, 1.023], + ], + o: [ + [-3.397, -1.072], + [0, 0], + [-2.993, 0.298], + [-2.105, 0.185], + [-1.041, -1.947], + [-2.252, -0.109], + [0.272, -1.646], + [2.527, -0.75], + [4.892, -0.909], + [3.454, 1.062], + [4.048, 3.068], + [-2.323, 3.751], + [0, 0], + [-3.917, 3.169], + [0, 0], + [-1.771, 4.835], + [-2.75, -0.513], + [0, 0], + ], + v: [ + [-4.624, 0.391], + [-8.025, -7.378], + [-14.426, -2.401], + [-17.594, -5.221], + [-25.823, -4.094], + [-23.431, -8.755], + [-27.197, -12.639], + [-20.328, -17.152], + [-6.488, -20.053], + [11.09, -18.906], + [18.951, -13.751], + [25.293, -2.723], + [20.462, -0.728], + [23.272, 8.036], + [15.095, 7.59], + [19.225, 14.329], + [9.788, 20.725], + [3.28, 10.249], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.011999999776, 0.136999990426, 0.128999986836, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [27.777, 22.051], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 18, + ty: 4, + nm: "eyebrow ", + parent: 21, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 76, + s: [7.726, 19.844, 0], + to: [0.004, 0.167, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 85, + s: [7.751, 20.844, 0], + to: [0, 0, 0], + ti: [0.004, 0.167, 0], + }, + { t: 94, s: [7.726, 19.844, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [2.638, 1.453, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.14, -0.453], + [-1.241, -0.383], + [-0.14, 0.454], + [1.242, 0.382], + ], + o: [ + [-0.14, 0.454], + [1.242, 0.382], + [0.14, -0.453], + [-1.241, -0.383], + ], + v: [ + [-2.248, -0.693], + [-0.253, 0.821], + [2.248, 0.692], + [0.252, -0.821], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.011999999776, 0.136999990426, 0.128999986836, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [2.638, 1.454], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 19, + ty: 4, + nm: "eye ", + parent: 21, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [6.716, 25.438, 0], ix: 2 }, + a: { a: 0, k: [1.382, 1.805, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 76, + s: [100, 100, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 85, + s: [100, 20, 100], + }, + { t: 94, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-0.136, -0.808], + [-0.55, 0.092], + [0.136, 0.807], + [0.55, -0.092], + ], + o: [ + [0.136, 0.808], + [0.551, -0.093], + [-0.136, -0.809], + [-0.55, 0.093], + ], + v: [ + [-0.996, 0.168], + [0.246, 1.463], + [0.996, -0.167], + [-0.246, -1.463], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.011999999776, 0.136999990426, 0.128999986836, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [1.382, 1.805], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 20, + ty: 4, + nm: "mouth ", + parent: 21, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [8.094, 39.492, 0], ix: 2 }, + a: { a: 0, k: [4.575, 3.583, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [4.016, 0.712], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [2.745, -1.753], + [-2.745, 1.041], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.011999999776, 0.136999990426, 0.128999986836, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 0.732, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [4.575, 3.583], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 21, + ty: 4, + nm: "head ", + parent: 15, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [10.136, 6.255, 0], ix: 2 }, + a: { a: 0, k: [26.396, 42.325, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [-6.627, -3.172], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [6.627, 3.171], + [0, 0], + [0, 0], + ], + v: [ + [13.228, -24.825], + [-15.778, -17.108], + [-11.769, 21.654], + [11.749, 15.037], + [18.396, 11.245], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.996078431372549, 0.8431372549019608, 0.5882352941176471, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [18.646, 25.075], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 22, + ty: 4, + nm: "nose ", + parent: 21, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [1.54, 30.283, 0], ix: 2 }, + a: { a: 0, k: [2.243, 7.577, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [-0.201, -0.984], + [0, 0], + ], + o: [ + [0, 0], + [0.214, 1.052], + [0, 0], + ], + v: [ + [1.503, -7.327], + [-1.793, 3.803], + [1.993, 7.327], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.8980392156862745, 0.7254901960784313, 0.4392156862745098, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [2.243, 7.577], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 23, + ty: 4, + nm: "front grey screen ", + sr: 1, + ks: { + o: { a: 0, k: 60, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: -5, + s: [328.193, 129.455, 0], + to: [0, 0.333, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 25, + s: [328.193, 131.455, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 55, + s: [328.193, 129.455, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 85, + s: [328.193, 131.455, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 115, + s: [328.193, 129.455, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 145, + s: [328.193, 131.455, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 175, + s: [328.193, 129.455, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 205, + s: [328.193, 131.455, 0], + to: [0, 0, 0], + ti: [0, 0.333, 0], + }, + { t: 235, s: [328.193, 129.455, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [31.722, 34.738, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.003, -0.402], + [-0.403, 0.117], + [-0.004, 0.402], + [0.403, -0.117], + ], + o: [ + [-0.004, 0.402], + [0.403, -0.118], + [0.004, -0.402], + [-0.402, 0.117], + ], + v: [ + [-0.729, 0.212], + [-0.007, 0.728], + [0.729, -0.212], + [0.006, -0.728], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [33.239, 51.407], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-12.1, 3.52], + [12.1, -3.52], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 0.459, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [20.949, 54.887], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.004, -0.402], + [0.403, -0.1], + [-0.004, 0.404], + [-0.403, 0.1], + ], + o: [ + [-0.004, 0.402], + [-0.403, 0.101], + [0.004, -0.403], + [0.404, -0.1], + ], + v: [ + [0.73, -0.182], + [-0.007, 0.729], + [-0.73, 0.181], + [0.006, -0.73], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [31.661, 16.678], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 2, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [12.115, -3.014], + [-12.115, 3.014], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 0.459, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [43.968, 13.522], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 2, + cix: 2, + bm: 0, + ix: 4, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [-23.504, 5.865], + ], + o: [ + [22.752, -6.622], + [0, 0], + ], + v: [ + [-23.651, 23.703], + [23.651, -23.703], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 1.838, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [32.425, 34.851], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 5", + np: 2, + cix: 2, + bm: 0, + ix: 5, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-31.472, -19.487], + [31.472, -34.487], + [31.472, 15.987], + [-31.472, 34.487], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "gf", + o: { a: 0, k: 100, ix: 10 }, + r: 1, + bm: 0, + g: { + p: 3, + k: { + a: 0, + k: [0, 0.816, 0.91, 0.886, 0.5, 0.863, 0.924, 0.898, 1, 0.91, 0.937, 0.91], + ix: 9, + }, + }, + s: { a: 0, k: [0, 0], ix: 5 }, + e: { a: 0, k: [100, 0], ix: 6 }, + t: 1, + nm: "Gradient Fill 1", + mn: "ADBE Vector Graphic - G-Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [31.722, 34.738], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 6", + np: 2, + cix: 2, + bm: 0, + ix: 6, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: -5, + op: 189, + st: -5, + bm: 0, + }, + { + ddd: 0, + ind: 24, + ty: 4, + nm: "main screen ", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [205.027, 196.59, 0], + to: [0, 0.333, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 30, + s: [205.027, 198.59, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 60, + s: [205.027, 196.59, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 90, + s: [205.027, 198.59, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 120, + s: [205.027, 196.59, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 150, + s: [205.027, 198.59, 0], + to: [0, 0, 0], + ti: [0, 0.333, 0], + }, + { t: 180, s: [205.027, 196.59, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [109.406, 114.227, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [108.5, -114.132], + [108.632, 30.75], + [-108, 113.633], + [-110.633, -68], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "gf", + o: { a: 0, k: 100, ix: 10 }, + r: 1, + bm: 0, + g: { + p: 3, + k: { + a: 0, + k: [0, 0.965, 0.859, 0.847, 0.5, 0.982, 0.904, 0.865, 1, 1, 0.949, 0.882], + ix: 9, + }, + }, + s: { a: 0, k: [-96.426, -58.766], ix: 5 }, + e: { a: 0, k: [56.41, 29.195], ix: 6 }, + t: 1, + nm: "Gradient Fill 1", + mn: "ADBE Vector Graphic - G-Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [109.406, 114.227], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 25, + ty: 4, + nm: "back blue shape ", + sr: 1, + ks: { + o: { a: 0, k: 60, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: -8, + s: [225.695, 88.637, 0], + to: [0, -0.5, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 22, + s: [225.695, 85.637, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 52, + s: [225.695, 88.637, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 82, + s: [225.695, 85.637, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 112, + s: [225.695, 88.637, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 142, + s: [225.695, 85.637, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 172, + s: [225.695, 88.637, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 202, + s: [225.695, 85.637, 0], + to: [0, 0, 0], + ti: [0, -0.5, 0], + }, + { t: 232, s: [225.695, 88.637, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [31.446, 35.405, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-31.391, -25.155], + [31.445, -35.405], + [31.391, 21.405], + [-31.445, 35.405], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "gf", + o: { a: 0, k: 100, ix: 10 }, + r: 1, + bm: 0, + g: { + p: 3, + k: { + a: 0, + k: [ + 0, 0.3137254901960784, 0.8901960784313725, 0.7607843137254902, 0.5, + 0.30980392156862746, 0.9450980392156862, 0.803921568627451, 1, + 0.08627450980392157, 0.8470588235294118, 0.6745098039215687, + ], + ix: 9, + }, + }, + s: { a: 0, k: [-30.332, 2.707], ix: 5 }, + e: { a: 0, k: [34.27, 0.754], ix: 6 }, + t: 1, + nm: "Gradient Fill 1", + mn: "ADBE Vector Graphic - G-Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [31.445, 35.405], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: -12, + op: 185, + st: -8, + bm: 0, + }, + { + ddd: 0, + ind: 26, + ty: 4, + nm: "back grey shape ", + sr: 1, + ks: { + o: { a: 0, k: 60, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: -20, + s: [116.501, 131.865, 0], + to: [0, 0.667, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 10, + s: [116.501, 135.865, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 40, + s: [116.501, 131.865, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 70, + s: [116.501, 135.865, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 100, + s: [116.501, 131.865, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 130, + s: [116.501, 135.865, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 160, + s: [116.501, 131.865, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 190, + s: [116.501, 135.865, 0], + to: [0, 0, 0], + ti: [0, 0.667, 0], + }, + { t: 220, s: [116.501, 131.865, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [49.241, 48.214, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-48.838, -30.117], + [48.292, -47.765], + [48.838, 22.617], + [-48.792, 48.265], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "gf", + o: { a: 0, k: 100, ix: 10 }, + r: 1, + bm: 0, + g: { + p: 3, + k: { + a: 0, + k: [0, 0.816, 0.91, 0.886, 0.5, 0.863, 0.924, 0.898, 1, 0.91, 0.937, 0.91], + ix: 9, + }, + }, + s: { a: 0, k: [-53.793, -32.803], ix: 5 }, + e: { a: 0, k: [38.566, 16.902], ix: 6 }, + t: 1, + nm: "Gradient Fill 1", + mn: "ADBE Vector Graphic - G-Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [49.241, 48.214], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: -20, + op: 186, + st: -20, + bm: 0, + }, + { + ddd: 0, + ind: 27, + ty: 4, + nm: "blue line 2", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [241.148, 215.735, 0], ix: 2 }, + a: { a: 0, k: [193.088, 165.536, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [-22.399, 11.62], + [-36.973, 24.518], + [-29.615, 53.791], + [-59.087, -2.563], + [-29.695, -35.695], + ], + o: [ + [0.131, -87.199], + [38.711, -20.081], + [27.097, -17.969], + [7.201, -13.08], + [8.86, 0.384], + [0, 0], + ], + v: [ + [-190.588, 163.037], + [-146.607, 32.068], + [-28.344, 28.16], + [14.66, -71.532], + [124.126, -160.473], + [190.588, -121.378], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "tm", + s: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 12, + s: [0], + }, + { t: 104, s: [100] }, + ], + ix: 1, + }, + e: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: -75, + s: [0], + }, + { t: 12, s: [100] }, + ], + ix: 2, + }, + o: { a: 0, k: 0, ix: 3 }, + m: 1, + ix: 2, + nm: "Trim Paths 1", + mn: "ADBE Vector Filter - Trim", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.3137254901960784, 0.8901960784313725, 0.7607843137254902, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 1, ix: 5 }, + lc: 1, + lj: 1, + ml: 10, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [193.088, 165.536], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 105, + st: -75, + bm: 0, + }, + { + ddd: 0, + ind: 28, + ty: 4, + nm: "blue line ", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [241.148, 215.735, 0], ix: 2 }, + a: { a: 0, k: [193.088, 165.536, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [-22.399, 11.62], + [-36.973, 24.518], + [-29.615, 53.791], + [-59.087, -2.563], + [-29.695, -35.695], + ], + o: [ + [0.131, -87.199], + [38.711, -20.081], + [27.097, -17.969], + [7.201, -13.08], + [8.86, 0.384], + [0, 0], + ], + v: [ + [-190.588, 163.037], + [-146.607, 32.068], + [-28.344, 28.16], + [14.66, -71.532], + [124.126, -160.473], + [190.588, -121.378], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "tm", + s: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 191, + s: [0], + }, + { t: 283, s: [100] }, + ], + ix: 1, + }, + e: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 104, + s: [0], + }, + { t: 191, s: [100] }, + ], + ix: 2, + }, + o: { a: 0, k: 0, ix: 3 }, + m: 1, + ix: 2, + nm: "Trim Paths 1", + mn: "ADBE Vector Filter - Trim", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.3137254901960784, 0.8901960784313725, 0.7607843137254902, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 1, ix: 5 }, + lc: 1, + lj: 1, + ml: 10, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [193.088, 165.536], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 104, + op: 180, + st: 104, + bm: 0, + }, + { + ddd: 0, + ind: 29, + ty: 4, + nm: "keyboard ", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [261.997, 286.067, 0], ix: 2 }, + a: { a: 0, k: [69.2, 22.723, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-31.872, 12.597], + [31.872, -12.597], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 1, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [76.863, 25.042], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-31.872, 12.597], + [31.872, -12.597], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 1, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [66.498, 22.723], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-31.872, 12.597], + [31.872, -12.597], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 1, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [56.133, 20.406], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 2, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [68.95, -10.855], + [-17.95, 22.473], + [-68.95, 10.855], + [17.95, -22.473], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.929000016755, 0.929000016755, 0.929000016755, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [69.2, 22.723], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 2, + cix: 2, + bm: 0, + ix: 4, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 30, + ty: 4, + nm: "mouse ", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [198.624, 312.684, 0], ix: 2 }, + a: { a: 0, k: [14.47, 6.307, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [2.688, -1.074], + [0, 0], + [0.58, 0.129], + [0, 0], + [-2.688, 1.074], + [0, 0], + [-0.579, -0.13], + [0, 0], + ], + o: [ + [0, 0], + [-0.552, 0.22], + [0, 0], + [-2.825, -0.633], + [0, 0], + [0.551, -0.22], + [0, 0], + [2.825, 0.632], + ], + v: [ + [11.532, 2.524], + [3.356, 5.789], + [1.62, 5.928], + [-11.083, 3.085], + [-11.532, -2.524], + [-3.356, -5.789], + [-1.621, -5.927], + [11.083, -3.084], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.929000016755, 0.929000016755, 0.929000016755, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [14.47, 6.307], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 31, + ty: 4, + nm: "table ", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [246.07, 278.528, 0], ix: 2 }, + a: { a: 0, k: [172.503, 70.456, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [172.254, -21.209], + [-29.857, 70.205], + [-172.253, 25.352], + [64.895, -70.205], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.9882352941176471, 0.9764705882352941, 0.9764705882352941, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [172.504, 70.456], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 32, + ty: 4, + nm: "chair", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 17, + s: [-1.524], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 43, + s: [-1.524], + }, + { t: 64, s: [0] }, + ], + ix: 10, + }, + p: { a: 0, k: [405.477, 450.364, 0], ix: 2 }, + a: { a: 0, k: [38.985, 124.515, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [17.658, -1.844], + [-17.658, -1.844], + [-17.658, 1.844], + [17.658, 1.844], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.8862745098039215, 0.9333333333333333, 0.9098039215686274, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [33.794, 93.86], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-1.844, 59.003], + [1.844, 59.003], + [1.844, -59.003], + [-1.844, -59.003], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.9215686274509803, 0.9333333333333333, 0.9254901960784314, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [51.453, 65.778], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-1.844, 59.003], + [1.844, 59.003], + [1.844, -59.003], + [-1.844, -59.003], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.9294117647058824, 0.9450980392156862, 0.9372549019607843, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [59.112, 65.778], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 2, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-1.844, 59.003], + [1.844, 59.003], + [1.844, -59.003], + [-1.844, -59.003], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.9294117647058824, 0.9529411764705882, 0.9411764705882353, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [17.98, 65.778], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 2, + cix: 2, + bm: 0, + ix: 4, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-36.735, 4.255], + [36.735, 4.255], + [36.735, -4.255], + [-36.735, -4.255], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.9411764705882353, 0.9450980392156862, 0.9450980392156862, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [36.985, 4.505], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 5", + np: 2, + cix: 2, + bm: 0, + ix: 5, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 33, + ty: 1, + nm: "White Solid 2", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [250, 250, 0], ix: 2 }, + a: { a: 0, k: [250, 250, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + sw: 500, + sh: 500, + sc: "#ffffff", + ip: 0, + op: 180, + st: 0, + bm: 0, + }, + ], + markers: [], +}; diff --git a/src/electron/renderer/assets/lotties/overview-lotties.js b/src/electron/renderer/assets/lotties/overview-lotties.js index 544647a9c..0ff9b9348 100644 --- a/src/electron/renderer/assets/lotties/overview-lotties.js +++ b/src/electron/renderer/assets/lotties/overview-lotties.js @@ -1,32213 +1,32213 @@ -export const column1Lottie = { - v: "5.7.3", - fr: 25, - ip: 0, - op: 151, - w: 500, - h: 500, - nm: "doc", - ddd: 0, - assets: [ - { - id: "comp_0", - layers: [ - { - ddd: 0, - ind: 1, - ty: 4, - nm: "OBJECTS 2", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.27, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [417.635, 485.668, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.27, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 75, - s: [379.635, 485.668, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { t: 150, s: [417.635, 485.668, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [417.635, 485.668, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ty: "gr", - it: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.256, 0], - [0.195, 0.195], - [0, 0], - [-0.391, 0.391], - [-0.391, -0.39], - [0, 0], - [0.391, -0.391], - ], - o: [ - [-0.256, 0], - [0, 0], - [-0.391, -0.391], - [0.391, -0.391], - [0, 0], - [0.391, 0.391], - [-0.195, 0.195], - ], - v: [ - [3.138, 4.138], - [2.431, 3.845], - [-3.845, -2.431], - [-3.845, -3.845], - [-2.43, -3.845], - [3.845, 2.431], - [3.845, 3.845], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [504.072, 492.154], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [3.259, 0], - [0, -3.259], - [-3.259, 0], - [-1.116, 1.116], - [0, 1.579], - ], - o: [ - [-3.259, 0], - [0, 3.259], - [1.579, 0], - [1.116, -1.116], - [0, -3.259], - ], - v: [ - [0, -5.911], - [-5.911, 0], - [0, 5.911], - [4.179, 4.18], - [5.911, 0], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [2.113, 0], - [0, 4.362], - [-4.362, 0], - [0, -4.362], - [1.494, -1.494], - ], - o: [ - [-4.362, 0], - [0, -4.362], - [4.362, 0], - [0, 2.113], - [-1.494, 1.494], - ], - v: [ - [0, 7.911], - [-7.911, 0], - [0, -7.911], - [7.911, 0], - [5.594, 5.594], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [496.081, 484.095], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 3, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [496.081, 484.095], ix: 2 }, - a: { a: 0, k: [496.081, 484.095], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [9.988, 0], - [0, 0], - [0, 0], - [0, 0], - [0, -9.988], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [9.988, 0], - [0, 0], - [0, 9.988], - ], - v: [ - [4.928, 18.085], - [-22.879, 18.085], - [-23.014, -18.085], - [4.928, -18.085], - [23.014, 0], - [23.014, 0], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.349019616842, 0.603921592236, 0.949019610882, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [498.19, 485.668], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [9.988, 0], - [0, 0], - [0, 9.988], - [0, 0], - [-9.988, 0], - [0, 0], - [0, -9.988], - [0, 0], - ], - o: [ - [0, 0], - [-9.988, 0], - [0, 0], - [0, -9.988], - [0, 0], - [9.988, 0], - [0, 0], - [0, 9.988], - ], - v: [ - [85.483, 18.085], - [-85.483, 18.085], - [-103.568, 0], - [-103.568, 0], - [-85.483, -18.085], - [85.483, -18.085], - [103.568, 0], - [103.568, 0], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [417.635, 485.668], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 2, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [417.635, 485.668], ix: 2 }, - a: { a: 0, k: [417.635, 485.668], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 176, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 2, - ty: 4, - nm: "OBJECTS 3", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 1, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 6, - s: [-21], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 13, - s: [5.875], - }, - { - i: { x: [0.294], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 21, - s: [-3.452], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 34, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 75, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 80, - s: [-21], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 87, - s: [5.875], - }, - { - i: { x: [0.294], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 95, - s: [-3.452], - }, - { t: 108, s: [0] }, - ], - ix: 10, - }, - p: { a: 0, k: [432.18, 579.061, 0], ix: 2 }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 1, - s: [100, 100, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 5, - s: [42, 42, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 12, - s: [107, 107, 100], - }, - { - i: { x: [0.273, 0.273, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 19, - s: [95.222, 95.222, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 34, - s: [100, 100, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 75, - s: [100, 100, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 79, - s: [42, 42, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 86, - s: [107, 107, 100], - }, - { - i: { x: [0.273, 0.273, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 93, - s: [95.222, 95.222, 100], - }, - { t: 108, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, -0.553], - [0.552, 0], - [0, 0], - [-0.011, 1.065], - ], - o: [ - [0, 0], - [0.552, 0], - [0, 0.553], - [0, 0], - [0, 0], - [0.011, -1.066], - ], - v: [ - [-11.536, 52.534], - [17.428, 52.534], - [18.428, 53.534], - [17.428, 54.534], - [-11.536, 54.534], - [-12.669, 53.624], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, -0.553], - [0.552, 0], - [0, 0], - [-0.011, 1.065], - ], - o: [ - [0, 0], - [0.552, 0], - [0, 0.553], - [0, 0], - [0, 0], - [0.011, -1.066], - ], - v: [ - [-11.544, 60.347], - [36.484, 60.317], - [37.484, 61.317], - [36.484, 62.317], - [-11.544, 62.347], - [-12.676, 61.437], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, -0.553], - [0.552, 0], - [0, 0], - [-0.011, 1.065], - ], - o: [ - [0, 0], - [0.552, 0], - [0, 0.553], - [0, 0], - [0, 0], - [0.011, -1.066], - ], - v: [ - [-11.544, 68.347], - [36.484, 68.317], - [37.484, 69.317], - [36.484, 70.317], - [-11.544, 70.347], - [-12.676, 69.437], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 4", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 3, - ty: "sh", - ix: 4, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, -0.553], - [0.552, 0], - [0, 0], - [-0.011, 1.065], - ], - o: [ - [0, 0], - [0.552, 0], - [0, 0.553], - [0, 0], - [0, 0], - [0.011, -1.066], - ], - v: [ - [-11.544, 76.597], - [36.484, 76.567], - [37.484, 77.567], - [36.484, 78.567], - [-11.544, 78.597], - [-12.676, 77.687], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 5", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 4, - ty: "sh", - ix: 5, - ks: { - a: 0, - k: { - i: [ - [0.552, 0], - [0, 0.553], - [0, 0], - [-3.8, 0], - [0, 0], - [0, -0.553], - [0.552, 0], - [0, 0], - [0, -2.698], - [0, 0], - ], - o: [ - [-0.552, 0], - [0, 0], - [0, -3.801], - [0, 0], - [0.552, 0], - [0, 0.553], - [0, 0], - [-2.697, 0], - [0, 0], - [0, 0.553], - ], - v: [ - [-17.428, 16.216], - [-18.428, 15.216], - [-18.428, -9.323], - [-11.536, -16.216], - [17.428, -16.216], - [18.428, -15.216], - [17.428, -14.216], - [-11.536, -14.216], - [-16.428, -9.323], - [-16.428, 15.216], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [-67.5, -42.5], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 6, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [4.801, 0], - [0, 0], - [0, 5.956], - [0, 0], - [5.155, 0], - [0, 0], - [0, -5.977], - [0, 0], - [0, 0], - [0, 0], - [-4.801, 0], - [0, 0], - [0, 5.567], - [0, 0], - ], - o: [ - [0, 0], - [-5.136, 0], - [0, 0], - [0, -5.977], - [0, 0], - [-5.155, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 5.567], - [0, 0], - [4.801, 0], - [0, 0], - [0, -5.567], - ], - v: [ - [63.279, -37.939], - [-10.108, -37.939], - [-19.408, -48.723], - [-19.408, -55.795], - [-28.742, -66.618], - [-62.639, -66.618], - [-71.972, -55.795], - [-71.972, -27.859], - [-71.972, 4.259], - [-71.972, 56.537], - [-63.279, 66.618], - [63.279, 66.618], - [71.972, 56.537], - [71.972, -27.859], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.960784375668, 0.623529434204, 0.674509823322, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [-20, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [5.567, 0], - [0, 0], - [0, 5.956], - [0, 0], - [5.977, 0], - [0, 0], - [0, -5.977], - [0, 0], - [0, 0], - [0, 0], - [-5.567, 0], - [0, 0], - [0, 5.567], - [0, 0], - ], - o: [ - [0, 0], - [-5.956, 0], - [0, 0], - [0, -5.977], - [0, 0], - [-5.977, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 5.567], - [0, 0], - [5.567, 0], - [0, 0], - [0, -5.567], - ], - v: [ - [73.378, -37.939], - [-11.722, -37.939], - [-22.506, -48.723], - [-22.506, -55.795], - [-33.329, -66.618], - [-72.635, -66.618], - [-83.458, -55.795], - [-83.458, -27.858], - [-83.458, 4.259], - [-83.458, 56.537], - [-73.377, 66.618], - [73.378, 66.618], - [83.458, 56.537], - [83.458, -27.858], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.956862807274, 0.572549045086, 0.627451002598, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [-9, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 2, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [5.567, 0], - [0, 0], - [0, 5.956], - [0, 0], - [5.977, 0], - [0, 0], - [0, -5.977], - [0, 0], - [0, 0], - [0, 0], - [-5.567, 0], - [0, 0], - [0, 5.567], - [0, 0], - ], - o: [ - [0, 0], - [-5.956, 0], - [0, 0], - [0, -5.977], - [0, 0], - [-5.977, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 5.567], - [0, 0], - [5.567, 0], - [0, 0], - [0, -5.567], - ], - v: [ - [73.378, -37.939], - [-11.722, -37.939], - [-22.506, -48.723], - [-22.506, -55.795], - [-33.329, -66.618], - [-72.635, -66.618], - [-83.458, -55.795], - [-83.458, -27.859], - [-83.458, 4.259], - [-83.458, 56.537], - [-73.378, 66.618], - [73.378, 66.618], - [83.458, 56.537], - [83.458, -27.859], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.949019610882, 0.51372551918, 0.57647061348, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 4, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 176, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 3, - ty: 4, - nm: "OBJECTS 11", - parent: 4, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [29.68, 88.318, 0], ix: 2 }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 1, - k: [ - { - i: { x: 0, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [ - { - i: [ - [10.91, -0.656], - [0, 0], - [0, 0], - [0, 12.841], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [11.432, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 12.418], - ], - v: [ - [-60.014, 16.006], - [-60.014, 16.041], - [39.314, 16.041], - [60.014, -7.21], - [60.014, -16.041], - [-40.437, -16.041], - [-40.437, -7.21], - ], - c: true, - }, - ], - }, - { - i: { x: 0, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 75, - s: [ - { - i: [ - [10.91, -0.656], - [0, 0], - [0, 0], - [0, 12.841], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [11.432, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 12.418], - ], - v: [ - [-60.014, 16.006], - [-60.014, 16.041], - [39.314, 16.041], - [59.764, -3.46], - [59.804, -3.791], - [-40.648, -3.791], - [-40.687, -3.46], - ], - c: true, - }, - ], - }, - { - t: 150, - s: [ - { - i: [ - [10.91, -0.656], - [0, 0], - [0, 0], - [0, 12.841], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [11.432, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 12.418], - ], - v: [ - [-60.014, 16.006], - [-60.014, 16.041], - [39.314, 16.041], - [60.014, -7.21], - [60.014, -16.041], - [-40.437, -16.041], - [-40.437, -7.21], - ], - c: true, - }, - ], - }, - ], - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.345098048449, 0.35686275363, 0.686274528503, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 1, - k: [ - { - i: { x: 0, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [ - { - i: [ - [12.254, -0.656], - [0, 0], - [0, 0], - [0, 12.841], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [12.841, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 12.418], - ], - v: [ - [-74.41, 16.006], - [-74.41, 16.041], - [37.159, 16.041], - [60.41, -7.21], - [60.41, -16.041], - [-52.421, -16.041], - [-52.421, -7.21], - ], - c: true, - }, - ], - }, - { - i: { x: 0, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 75, - s: [ - { - i: [ - [12.254, -0.656], - [0, 0], - [0, 0], - [0, 12.841], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [12.841, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 12.418], - ], - v: [ - [-74.41, 16.006], - [-74.41, 16.041], - [37.159, 16.041], - [60.16, -3.46], - [60.199, -3.791], - [-52.631, -3.791], - [-52.671, -3.46], - ], - c: true, - }, - ], - }, - { - t: 150, - s: [ - { - i: [ - [12.254, -0.656], - [0, 0], - [0, 0], - [0, 12.841], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [12.841, 0], - [0, 0], - [0, 0], - [0, 0], - [0, 12.418], - ], - v: [ - [-74.41, 16.006], - [-74.41, 16.041], - [37.159, 16.041], - [60.41, -7.21], - [60.41, -16.041], - [-52.421, -16.041], - [-52.421, -7.21], - ], - c: true, - }, - ], - }, - ], - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.380392193794, 0.380392193794, 0.709803938866, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 2", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [7, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 4, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 176, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 4, - ty: 4, - nm: "OBJECTS 8", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [465.221, 449.154, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 75, - s: [465.221, 436.154, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { t: 150, s: [465.221, 449.154, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-0.552, 0], - [0, 0], - ], - o: [ - [0, 0], - [0.553, 0], - ], - v: [ - [-40.11, -1], - [40.11, -1], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [-0.552, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-40.094, 16.875], - [-11.731, 16.875], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0.553, 0], - ], - v: [ - [4.019, 16.875], - [40.125, 16.875], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 4", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 3, - ty: "sh", - ix: 4, - ks: { - a: 0, - k: { - i: [ - [-0.552, 0], - [0, 0], - ], - o: [ - [0, 0], - [0.553, 0], - ], - v: [ - [-40.064, 33.75], - [40.156, 33.75], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 4, - ty: "sh", - ix: 5, - ks: { - a: 0, - k: { - i: [ - [-0.552, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-40.002, 48.125], - [13.269, 48.125], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 5", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 5, - ty: "sh", - ix: 6, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0.553, 0], - ], - v: [ - [23.144, 48.125], - [40.217, 48.125], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 6", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 6, - ty: "sh", - ix: 7, - ks: { - a: 0, - k: { - i: [ - [-0.552, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-40.064, 65], - [-24.856, 65], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 7", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 7, - ty: "sh", - ix: 8, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0.553, 0], - ], - v: [ - [-17.231, 65], - [40.156, 65], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 8", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 8, - ty: "sh", - ix: 9, - ks: { - a: 0, - k: { - i: [ - [-0.552, 0], - [0, 0], - ], - o: [ - [0, 0], - [0.553, 0], - ], - v: [ - [-40.127, 84.25], - [40.092, 84.25], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 9", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 9, - ty: "sh", - ix: 10, - ks: { - a: 0, - k: { - i: [ - [-0.552, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-40.129, 101], - [-0.481, 101], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 10", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 10, - ty: "sh", - ix: 11, - ks: { - a: 0, - k: { - i: [ - [-0.552, 0], - [0, 0], - ], - o: [ - [0, 0], - [0.553, 0], - ], - v: [ - [-40.164, 117.875], - [40.055, 117.875], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 11", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "tm", - s: { a: 0, k: 0, ix: 1 }, - e: { a: 0, k: 80, ix: 2 }, - o: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 0, - s: [117], - }, - { t: 150, s: [1197] }, - ], - ix: 3, - }, - m: 2, - ix: 12, - nm: "Trim Paths 1", - mn: "ADBE Vector Filter - Trim", - hd: false, - }, - { - ty: "st", - c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 2.5, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { - a: 1, - k: [ - { - i: { x: 0, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [7.481, -64.58], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 75, - s: [7.481, -77.58], - to: [0, 0], - ti: [0, 0], - }, - { t: 150, s: [7.481, -64.58] }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 13", - np: 13, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-0.609, 0], - [0, 0], - [0, -1.09], - [0, 0], - [8.168, 0], - [0, 0], - [0, 16.931], - [0, 0], - ], - o: [ - [0, 0], - [1.09, 0], - [0, 0], - [0, 8.168], - [0, 0], - [-16.93, 0], - [0, 0], - [0, -0.609], - ], - v: [ - [-62.181, -104.359], - [61.31, -104.359], - [63.283, -102.385], - [63.283, 89.57], - [48.494, 104.359], - [-32.628, 104.359], - [-63.283, 73.703], - [-63.283, -103.256], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.57647061348, 0.588235318661, 0.811764776707, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [6, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-3.649, 0], - [0, 0], - [0, -2.571], - [0, 0], - [8.869, 0], - [0, 0], - [0, 18.899], - [0, 0], - ], - o: [ - [0, 0], - [2.571, 0], - [0, 0], - [0, 8.869], - [0, 0], - [-18.899, 0], - [0, 0], - [0, -3.649], - ], - v: [ - [-62.845, -104.359], - [64.797, -104.359], - [69.452, -99.704], - [69.452, 88.3], - [53.394, 104.359], - [-35.233, 104.359], - [-69.452, 70.139], - [-69.452, -97.751], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.780392229557, 0.780392229557, 0.937254965305, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 176, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 5, - ty: 4, - nm: "OBJECTS 15", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.33], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.33], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 51, - s: [-11], - }, - { t: 133, s: [0] }, - ], - ix: 10, - }, - p: { a: 0, k: [594.07, 517.85, 0], ix: 2 }, - a: { a: 0, k: [594.07, 517.85, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.236, 0], - [0.031, 0.006], - [0, 0], - [-0.05, 0.272], - [-0.275, -0.054], - [0, 0], - [0.05, -0.272], - ], - o: [ - [-0.03, 0], - [0, 0], - [-0.271, -0.05], - [0.051, -0.272], - [0, 0], - [0.271, 0.05], - [-0.045, 0.241], - ], - v: [ - [9.996, 2.343], - [9.904, 2.335], - [-10.085, -1.35], - [-10.487, -1.932], - [-9.904, -2.333], - [10.085, 1.351], - [10.487, 1.934], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [563.027, 439.315], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [3.061, 0], - [0.395, 0.073], - [0, 0], - [-0.746, 4.051], - [0, 0], - [-0.809, -0.152], - [0.149, -0.815], - [0, 0], - [-2.424, -0.447], - [0, 0], - [-0.347, 1.885], - [0, 0], - [1.944, 0.358], - [0, 0], - [0.382, -2.064], - [0, 0], - [0.805, 0.15], - [-0.15, 0.814], - [0, 0], - [-3.689, -0.682], - [0, 0], - [0.657, -3.571], - [0, 0], - ], - o: [ - [-0.388, 0], - [0, 0], - [-4.05, -0.747], - [0, 0], - [0.15, -0.815], - [0.815, 0.15], - [0, 0], - [-0.447, 2.424], - [0, 0], - [1.885, 0.35], - [0, 0], - [0.358, -1.944], - [0, 0], - [-2.072, -0.381], - [0, 0], - [-0.151, 0.816], - [-0.814, -0.15], - [0, 0], - [0.683, -3.692], - [0, 0], - [3.571, 0.658], - [0, 0], - [-0.575, 3.116], - ], - v: [ - [-1.645, 19.875], - [-2.821, 19.767], - [-3.584, 19.626], - [-9.576, 10.925], - [-7.652, 0.487], - [-5.905, -0.716], - [-4.701, 1.031], - [-6.625, 11.469], - [-3.04, 16.676], - [-2.277, 16.816], - [1.769, 14.028], - [6.64, -12.394], - [3.764, -16.57], - [2.459, -16.811], - [-1.976, -13.756], - [-2.096, -13.105], - [-3.843, -11.901], - [-5.047, -13.648], - [-4.927, -14.3], - [3.002, -19.761], - [4.307, -19.52], - [9.591, -11.85], - [4.72, 14.572], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.243137255311, 0.278431385756, 0.607843160629, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [569.461, 443.971], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [-1.057, -0.195], - [0, 0], - [0.188, -1.018], - ], - o: [ - [0, 0], - [0, 0], - [0.195, -1.057], - [0, 0], - [1.018, 0.188], - [0, 0], - ], - v: [ - [27.043, 8.481], - [-28.048, -1.674], - [-27.087, -6.887], - [-24.821, -8.448], - [26.512, 1.014], - [28.017, 3.199], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.92549020052, 0.945098042488, 0.96862745285, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [580.45, 438.35], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 7, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 2, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [1.089, 0.201], - [0, 0], - [-0.201, 1.089], - [0, 0], - [-1.089, -0.201], - [0, 0], - [0.201, -1.089], - [0, 0], - ], - o: [ - [0, 0], - [-1.089, -0.201], - [0, 0], - [0.201, -1.089], - [0, 0], - [1.089, 0.201], - [0, 0], - [-0.201, 1.089], - ], - v: [ - [20.176, 33.999], - [-30.972, 24.571], - [-32.58, 22.237], - [-22.511, -32.391], - [-20.176, -33.999], - [30.972, -24.571], - [32.58, -22.237], - [22.511, 32.391], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.349019616842, 0.603921592236, 0.949019610882, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [575.863, 463.912], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 2, - cix: 2, - bm: 0, - ix: 4, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [1.089, 0.201], - [0, 0], - [-0.201, 1.089], - [0, 0], - [-1.089, -0.201], - [0, 0], - [0.201, -1.089], - [0, 0], - ], - o: [ - [0, 0], - [-1.089, -0.201], - [0, 0], - [0.201, -1.089], - [0, 0], - [1.089, 0.201], - [0, 0], - [-0.201, 1.089], - ], - v: [ - [21.145, 35.766], - [-32.507, 25.876], - [-34.115, 23.542], - [-23.479, -34.158], - [-21.145, -35.766], - [32.508, -25.876], - [34.115, -23.542], - [23.479, 34.158], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.243137255311, 0.278431385756, 0.607843160629, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [576.866, 465.495], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 14, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 5", - np: 2, - cix: 2, - bm: 0, - ix: 5, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [565.616, 432.495], ix: 2 }, - a: { a: 0, k: [565.616, 432.495], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 0, - s: [0], - }, - { t: 5, s: [0] }, - ], - ix: 6, - }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 5, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-0.55, -0.099], - [0, 0], - ], - o: [ - [0, 0], - [0.543, 0.1], - ], - v: [ - [-15.476, -3.869], - [15.839, 1.902], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [-0.55, -0.099], - [0, 0], - ], - o: [ - [0, 0], - [0.543, 0.1], - ], - v: [ - [-17.476, 7.068], - [13.839, 12.84], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [-0.55, -0.099], - [0, 0], - ], - o: [ - [0, 0], - [0.543, 0.1], - ], - v: [ - [-19.476, 18.006], - [11.839, 23.777], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "tm", - s: { - a: 1, - k: [ - { - i: { x: [0.43], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [1], y: [0] }, - t: 75, - s: [0], - }, - { t: 150, s: [100] }, - ], - ix: 1, - }, - e: { - a: 1, - k: [ - { - i: { x: [0.43], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [1], y: [0] }, - t: 75, - s: [100], - }, - { t: 150, s: [100] }, - ], - ix: 2, - }, - o: { a: 0, k: 0, ix: 3 }, - m: 2, - ix: 4, - nm: "Trim Paths 1", - mn: "ADBE Vector Filter - Trim", - hd: false, - }, - { - ty: "st", - c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 2.5, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [634.648, 467.253], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 9", - np: 5, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-1.672, -0.302], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-93.37, 43.771], - [-46.31, 52.445], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [-1.672, -0.302], - [0, 0], - ], - o: [ - [0, 0], - [1.651, 0.304], - ], - v: [ - [-96.245, 59.146], - [-1.049, 76.692], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 4", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [-1.672, -0.302], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [-99.45, 77.771], - [-55.22, 85.923], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 3, - ty: "sh", - ix: 4, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [1.651, 0.304], - ], - v: [ - [-46.479, 87.534], - [-4.254, 95.317], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 5", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 4, - ty: "sh", - ix: 5, - ks: { - a: 0, - k: { - i: [ - [-1.672, -0.302], - [0, 0], - ], - o: [ - [0, 0], - [1.651, 0.304], - ], - v: [ - [-102.78, 96.271], - [-7.584, 113.817], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 2.5, ix: 5 }, - lc: 2, - lj: 2, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tm", - s: { - a: 1, - k: [ - { - i: { x: [0.43], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [1], y: [0] }, - t: 75, - s: [0], - }, - { t: 150, s: [100] }, - ], - ix: 1, - }, - e: { - a: 1, - k: [ - { - i: { x: [0.43], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [1], y: [0] }, - t: 75, - s: [100], - }, - { t: 150, s: [100] }, - ], - ix: 2, - }, - o: { a: 0, k: 0, ix: 3 }, - m: 2, - ix: 7, - nm: "Trim Paths 1", - mn: "ADBE Vector Filter - Trim", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [634.648, 467.253], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 5", - np: 7, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [1.005, 0.185], - [0, 0], - [-0.185, 1.005], - [0, 0], - [-1.005, -0.185], - [0, 0], - [0.185, -1.005], - [0, 0], - ], - o: [ - [0, 0], - [-1.005, -0.185], - [0, 0], - [0.185, -1.005], - [0, 0], - [1.005, 0.185], - [0, 0], - [-0.185, 1.005], - ], - v: [ - [46.514, 98.515], - [-78.583, 75.456], - [-80.068, 73.3], - [-48.671, -97.03], - [-46.514, -98.515], - [78.583, -75.456], - [80.068, -73.3], - [48.671, 97.03], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.96862745285, 0.662745118141, 0.705882370472, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [589.386, 525.766], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 39, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 6", - np: 2, - cix: 2, - bm: 0, - ix: 4, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [48.335, 98.851], - [-80.403, 75.12], - [-48.335, -98.851], - [80.403, -75.12], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [589.386, 525.766], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 7", - np: 2, - cix: 2, - bm: 0, - ix: 5, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [1.006, 0.185], - [0, 0], - [-0.185, 1.006], - [0, 0], - [-1.005, -0.185], - [0, 0], - [0.185, -1.005], - [0, 0], - ], - o: [ - [0, 0], - [-1.005, -0.185], - [0, 0], - [0.185, -1.005], - [0, 0], - [1.005, 0.185], - [0, 0], - [-0.185, 1.005], - ], - v: [ - [46.514, 98.515], - [-78.583, 75.456], - [-80.068, 73.3], - [-48.671, -97.03], - [-46.514, -98.515], - [78.583, -75.456], - [80.068, -73.3], - [48.671, 97.03], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.243137255311, 0.278431385756, 0.607843160629, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [592.06, 530.557], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 14, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 8", - np: 2, - cix: 2, - bm: 0, - ix: 6, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 176, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 6, - ty: 4, - nm: "OBJECTS 14", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.33], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 11, - s: [-8], - }, - { - i: { x: [0.33], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 83, - s: [1], - }, - { t: 148, s: [-8] }, - ], - ix: 10, - }, - p: { a: 0, k: [598.964, 525.362, 0], ix: 2 }, - a: { a: 0, k: [598.964, 525.362, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.88, 0.521], - [0, 0], - [-0.521, 0.88], - [0, 0], - [-0.88, -0.521], - [0, 0], - [0.521, -0.88], - [0, 0], - ], - o: [ - [0, 0], - [-0.879, -0.521], - [0, 0], - [0.521, -0.88], - [0, 0], - [0.88, 0.521], - [0, 0], - [-0.521, 0.88], - ], - v: [ - [9.601, 108.52], - [-99.818, 43.647], - [-100.467, 41.111], - [-12.137, -107.872], - [-9.601, -108.52], - [99.818, -43.647], - [100.467, -41.111], - [12.137, 107.872], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.96862745285, 0.662745118141, 0.705882370472, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [597.543, 522.377], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.88, 0.521], - [0, 0], - [-0.521, 0.88], - [0, 0], - [-0.88, -0.521], - [0, 0], - [0.521, -0.88], - [0, 0], - ], - o: [ - [0, 0], - [-0.879, -0.521], - [0, 0], - [0.521, -0.88], - [0, 0], - [0.88, 0.521], - [0, 0], - [-0.521, 0.88], - ], - v: [ - [9.601, 108.52], - [-99.818, 43.647], - [-100.467, 41.111], - [-12.137, -107.872], - [-9.601, -108.52], - [99.818, -43.647], - [100.467, -41.111], - [12.137, 107.872], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.243137255311, 0.278431385756, 0.607843160629, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [600.385, 528.346], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 14, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 176, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 7, - ty: 4, - nm: "OBJECTS 16", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [626.887, 381.595, 0], ix: 2 }, - a: { a: 0, k: [626.887, 381.595, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [1.639, 0], - [0, -1.639], - [-1.639, 0], - [0, 1.639], - ], - o: [ - [-1.639, 0], - [0, 1.639], - [1.639, 0], - [0, -1.639], - ], - v: [ - [0, -2.972], - [-2.972, 0], - [0, 2.972], - [2.972, 0], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [1.639, 0], - [0, -1.639], - [-1.639, 0], - [0, 1.639], - ], - o: [ - [-1.639, 0], - [0, 1.639], - [1.639, 0], - [0, -1.639], - ], - v: [ - [15.275, -2.972], - [12.304, 0], - [15.275, 2.972], - [18.247, 0], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [1.639, 0], - [0, -1.639], - [-1.639, 0], - [0, 1.639], - ], - o: [ - [-1.639, 0], - [0, 1.639], - [1.639, 0], - [0, -1.639], - ], - v: [ - [31.661, -2.972], - [28.689, 0], - [31.661, 2.972], - [34.633, 0], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 4", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [100], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 25, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 50, - s: [100], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 75, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 100, - s: [100], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 125, - s: [0], - }, - { t: 150, s: [100] }, - ], - ix: 5, - }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [628.985, 403.692], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 4, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [2.19, 0], - [0, 2.19], - [-2.191, 0], - [0, -2.19], - ], - o: [ - [-2.191, 0], - [0, -2.19], - [2.19, 0], - [0, 2.19], - ], - v: [ - [-15.275, 3.972], - [-19.247, 0], - [-15.275, -3.972], - [-11.304, 0], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [2.191, 0], - [0, 2.19], - [-2.19, 0], - [0, -2.19], - ], - o: [ - [-2.19, 0], - [0, -2.19], - [2.191, 0], - [0, 2.19], - ], - v: [ - [0, 3.972], - [-3.972, 0], - [0, -3.972], - [3.972, 0], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [2.19, 0], - [0, 2.19], - [-2.19, 0], - [0, -2.19], - ], - o: [ - [-2.19, 0], - [0, -2.19], - [2.19, 0], - [0, 2.19], - ], - v: [ - [16.386, 3.972], - [12.414, 0], - [16.386, -3.972], - [20.357, 0], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 4", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 2, ix: 5 }, - lc: 1, - lj: 1, - ml: 4, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [644.261, 403.692], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 4, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-2.489, 0], - [0, 0], - [0, -2.489], - [0, 0], - [2.489, 0], - [0, 0], - [0, 2.489], - [0, 0], - ], - o: [ - [0, 0], - [2.489, 0], - [0, 0], - [0, 2.489], - [0, 0], - [-2.489, 0], - [0, 0], - [0, -2.489], - ], - v: [ - [602.768, 386.506], - [685.144, 386.506], - [689.668, 391.031], - [689.668, 416.265], - [685.144, 420.79], - [602.768, 420.79], - [598.244, 416.265], - [598.244, 391.031], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.57647061348, 0.572549045086, 0.874509871006, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [643.956, 403.648], ix: 2 }, - a: { a: 0, k: [643.956, 403.648], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 2, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "tr", - p: { - a: 1, - k: [ - { - i: { x: 0.21, y: 1 }, - o: { x: 0.333, y: 0 }, - t: -27, - s: [588.956, 403.648], - to: [9.167, 0], - ti: [0, 0], - }, - { - i: { x: 0.21, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 11, - s: [643.956, 403.648], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.21, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 48, - s: [588.956, 403.648], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.21, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 86, - s: [643.956, 403.648], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.21, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 123, - s: [588.956, 403.648], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.21, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 161, - s: [643.956, 403.648], - to: [0, 0], - ti: [9.167, 0], - }, - { t: 198, s: [588.956, 403.648] }, - ], - ix: 2, - }, - a: { a: 0, k: [643.956, 403.648], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [1.841, 0], - [0, 0], - [0, 1.841], - [0, 0], - [-1.841, 0], - [0, 0], - [0, -1.841], - [0, 0], - ], - o: [ - [0, 0], - [-1.841, 0], - [0, 0], - [0, -1.841], - [0, 0], - [1.841, 0], - [0, 0], - [0, 1.841], - ], - v: [ - [37.194, 16.559], - [-37.195, 16.559], - [-40.527, 13.226], - [-40.527, -13.226], - [-37.195, -16.559], - [37.194, -16.559], - [40.527, -13.226], - [40.527, 13.226], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.96862745285, 0.662745118141, 0.705882370472, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { - a: 1, - k: [ - { - i: { x: 0.21, y: 1 }, - o: { x: 0.333, y: 0 }, - t: -30, - s: [610.487, 376.948], - to: [2.167, 0], - ti: [0, 0], - }, - { - i: { x: 0.21, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 8, - s: [623.487, 376.948], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.21, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 45, - s: [610.487, 376.948], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.21, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 83, - s: [623.487, 376.948], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.21, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 120, - s: [610.487, 376.948], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.21, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 158, - s: [623.487, 376.948], - to: [0, 0], - ti: [2.167, 0], - }, - { t: 195, s: [610.487, 376.948] }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [1.841, 0], - [0, 0], - [0, 1.841], - [0, 0], - [-1.841, 0], - [0, 0], - [0, -1.841], - [0, 0], - ], - o: [ - [0, 0], - [-1.841, 0], - [0, 0], - [0, -1.841], - [0, 0], - [1.841, 0], - [0, 0], - [0, 1.841], - ], - v: [ - [26.59, 12.226], - [-26.59, 12.226], - [-29.923, 8.893], - [-29.923, -8.893], - [-26.59, -12.226], - [26.59, -12.226], - [29.923, -8.893], - [29.923, 8.893], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.349019616842, 0.603921592236, 0.949019610882, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { - a: 1, - k: [ - { - i: { x: 0.21, y: 1 }, - o: { x: 0.333, y: 0 }, - t: -33, - s: [625.029, 354.627], - to: [-5.167, 0], - ti: [0, 0], - }, - { - i: { x: 0.21, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 5, - s: [594.029, 354.627], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.21, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 42, - s: [625.029, 354.627], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.21, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 80, - s: [594.029, 354.627], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.21, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 117, - s: [625.029, 354.627], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.21, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 155, - s: [594.029, 354.627], - to: [0, 0], - ti: [-5.167, 0], - }, - { t: 192, s: [625.029, 354.627] }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 2, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 176, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 8, - ty: 4, - nm: "OBJECTS 17", - sr: 1, - ks: { - o: { a: 0, k: 66, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [533.031, 525.909, 0], ix: 2 }, - a: { a: 0, k: [533.031, 525.909, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [16.7, 22.376], - [16.71, 22.376], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [1.303, 0], - [4.7, -3.508], - [-8.878, -11.896], - [-11.898, 8.876], - [0, 0], - [-1.033, 7.116], - [4.301, 5.763], - [7.116, 1.033], - ], - o: [ - [-5.761, 0], - [-11.895, 8.878], - [8.879, 11.896], - [0, 0], - [5.762, -4.301], - [1.034, -7.116], - [-4.301, -5.763], - [-1.312, -0.19], - ], - v: [ - [-0.057, -26.926], - [-16.102, -21.575], - [-21.575, 16.102], - [16.102, 21.574], - [16.102, 21.574], - [26.64, 3.87], - [21.574, -16.102], - [3.87, -26.641], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [6.016, 0], - [5.672, 7.598], - [-12.78, 9.538], - [-7.641, -1.112], - [-4.62, -6.191], - [1.11, -7.645], - [6.191, -4.62], - [0, 0], - ], - o: [ - [-8.824, 0], - [-9.537, -12.781], - [6.191, -4.619], - [7.645, 1.11], - [4.62, 6.191], - [-1.11, 7.645], - [0, 0], - [-5.181, 3.866], - ], - v: [ - [0.036, 28.909], - [-23.178, 17.298], - [-17.297, -23.178], - [4.157, -28.621], - [23.177, -17.297], - [28.62, 4.157], - [17.297, 23.177], - [17.297, 23.177], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 3, - ty: "sh", - ix: 4, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [-5.145, -1.718], - [0, 0], - [0, 0], - [-3.193, -0.465], - [-0.464, 3.194], - [0, 0], - [0, 0], - [-4.846, 2.423], - [0, 0], - [0, 0], - [-1.548, -0.225], - [-1.254, 0.936], - [1.932, 2.586], - [0, 0], - [0, 0], - [-1.718, 5.147], - [0, 0], - [0, 0], - [-0.466, 3.193], - [3.193, 0.465], - [0, 0], - [0, 0], - [2.423, 4.845], - [0, 0], - [0, 0], - [1.931, 2.587], - [1.548, 0.225], - [1.254, -0.935], - [0, 0], - [0, 0], - [0, 0], - [5.145, 1.717], - [0, 0], - [0, 0], - [0.935, 1.253], - [1.547, 0.225], - [0.465, -3.193], - [0, 0], - [0, 0], - [4.847, -2.423], - [0, 0], - [0, 0], - [1.547, 0.225], - [1.253, -0.936], - [0.225, -1.547], - [-0.936, -1.253], - [0, 0], - [0, 0], - [1.717, -5.146], - [0, 0], - [0, 0], - [1.253, -0.934], - [0.225, -1.547], - [-3.193, -0.464], - [0, 0], - [0, 0], - [-2.424, -4.848], - [0, 0], - [0, 0], - [0.225, -1.548], - [-0.936, -1.254], - [-1.547, -0.225], - [-1.254, 0.936], - ], - o: [ - [0, 0], - [3.956, 3.702], - [0, 0], - [0, 0], - [-0.464, 3.193], - [3.194, 0.463], - [0, 0], - [0, 0], - [5.422, -0.182], - [0, 0], - [0, 0], - [0.935, 1.253], - [1.549, 0.227], - [2.586, -1.931], - [0, 0], - [0, 0], - [3.701, -3.955], - [0, 0], - [0, 0], - [3.198, 0.461], - [0.463, -3.193], - [0, 0], - [0, 0], - [-0.182, -5.423], - [0, 0], - [0, 0], - [2.587, -1.93], - [-0.935, -1.253], - [-1.547, -0.227], - [0, 0], - [0, 0], - [0, 0], - [-3.956, -3.703], - [0, 0], - [0, 0], - [0.225, -1.547], - [-0.936, -1.253], - [-3.203, -0.466], - [0, 0], - [0, 0], - [-5.421, 0.182], - [0, 0], - [0, 0], - [-0.935, -1.254], - [-1.546, -0.223], - [-1.254, 0.935], - [-0.225, 1.548], - [0, 0], - [0, 0], - [-3.703, 3.956], - [0, 0], - [0, 0], - [-1.545, -0.222], - [-1.253, 0.935], - [-0.464, 3.194], - [0, 0], - [0, 0], - [0.182, 5.421], - [0, 0], - [0, 0], - [-1.252, 0.935], - [-0.225, 1.547], - [0.935, 1.252], - [1.546, 0.224], - [0, 0], - ], - v: [ - [-26.252, 26.896], - [-25.641, 27.467], - [-11.923, 35.634], - [-11.13, 35.899], - [-12.325, 44.121], - [-7.373, 50.755], - [-0.739, 45.804], - [0.456, 37.581], - [1.292, 37.553], - [16.766, 33.627], - [17.514, 33.253], - [22.484, 39.913], - [26.334, 42.204], - [30.676, 41.102], - [31.865, 32.911], - [26.896, 26.252], - [27.467, 25.64], - [35.634, 11.922], - [35.899, 11.129], - [44.121, 12.324], - [50.755, 7.373], - [45.804, 0.738], - [37.581, -0.456], - [37.553, -1.292], - [33.628, -16.766], - [33.254, -17.514], - [39.912, -22.485], - [41.102, -30.676], - [37.253, -32.967], - [32.91, -31.866], - [32.911, -31.866], - [26.252, -26.896], - [25.64, -27.467], - [11.922, -35.634], - [11.129, -35.899], - [12.324, -44.122], - [11.222, -48.463], - [7.373, -50.755], - [0.738, -45.804], - [-0.456, -37.581], - [-1.292, -37.554], - [-16.766, -33.628], - [-17.514, -33.254], - [-22.485, -39.913], - [-26.333, -42.205], - [-30.675, -41.102], - [-32.967, -37.253], - [-31.866, -32.911], - [-26.896, -26.252], - [-27.467, -25.641], - [-35.634, -11.923], - [-35.899, -11.13], - [-44.121, -12.325], - [-48.463, -11.222], - [-50.755, -7.373], - [-45.804, -0.739], - [-37.581, 0.456], - [-37.554, 1.292], - [-33.627, 16.766], - [-33.253, 17.514], - [-39.913, 22.484], - [-42.204, 26.334], - [-41.102, 30.676], - [-37.253, 32.967], - [-32.911, 31.865], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 4", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 4, - ty: "sh", - ix: 5, - ks: { - a: 0, - k: { - i: [ - [3.835, -0.001], - [0.381, 0.056], - [-0.623, 4.284], - [0, 0], - [3.821, 3.428], - [0, 0], - [2.076, 0.303], - [1.255, 1.682], - [-3.471, 2.59], - [0, 0], - [0.278, 5.131], - [0, 0], - [-0.623, 4.285], - [-1.682, 1.255], - [-2.075, -0.301], - [0, 0], - [-3.429, 3.821], - [0, 0], - [-0.302, 2.075], - [-1.682, 1.255], - [-2.076, -0.301], - [-1.255, -1.682], - [0, 0], - [-5.13, 0.278], - [0, 0], - [-4.273, -0.626], - [-1.255, -1.682], - [0.302, -2.075], - [0, 0], - [-3.821, -3.429], - [0, 0], - [-2.592, -3.473], - [3.471, -2.59], - [0, 0], - [-0.278, -5.132], - [0, 0], - [0.622, -4.284], - [4.275, 0.627], - [0, 0], - [3.428, -3.82], - [0, 0], - [3.47, -2.592], - [2.076, 0.301], - [1.255, 1.682], - [0, 0], - [5.132, -0.278], - [0, 0], - ], - o: [ - [-0.374, 0], - [-4.285, -0.623], - [0, 0], - [-4.841, -1.727], - [0, 0], - [-1.682, 1.255], - [-2.076, -0.301], - [-2.59, -3.471], - [0, 0], - [-2.2, -4.64], - [0, 0], - [-4.285, -0.622], - [0.301, -2.076], - [1.682, -1.254], - [0, 0], - [1.727, -4.841], - [0, 0], - [-1.254, -1.682], - [0.302, -2.076], - [1.681, -1.255], - [2.076, 0.302], - [0, 0], - [4.639, -2.199], - [0, 0], - [0.623, -4.286], - [2.076, 0.301], - [1.255, 1.681], - [0, 0], - [4.841, 1.727], - [0, 0], - [3.468, -2.589], - [2.59, 3.47], - [0, 0], - [2.199, 4.638], - [0, 0], - [4.285, 0.623], - [-0.623, 4.286], - [0, 0], - [-1.728, 4.842], - [0, 0], - [2.59, 3.469], - [-1.682, 1.254], - [-2.076, -0.302], - [0, 0], - [-4.639, 2.199], - [0, 0], - [-0.566, 3.904], - ], - v: [ - [-6.527, 52.817], - [-7.661, 52.734], - [-14.303, 43.834], - [-13.348, 37.257], - [-26.39, 29.495], - [-31.715, 33.468], - [-37.54, 34.946], - [-42.705, 31.872], - [-41.109, 20.88], - [-35.784, 16.907], - [-39.516, 2.196], - [-46.091, 1.24], - [-52.734, -7.661], - [-49.66, -12.826], - [-43.834, -14.303], - [-37.257, -13.348], - [-29.495, -26.39], - [-33.469, -31.714], - [-34.947, -37.54], - [-31.871, -42.706], - [-26.046, -44.184], - [-20.881, -41.109], - [-16.907, -35.785], - [-2.197, -39.516], - [-1.241, -46.091], - [7.66, -52.734], - [12.825, -49.66], - [14.302, -43.834], - [13.347, -37.257], - [26.389, -29.495], - [31.714, -33.469], - [42.706, -31.872], - [41.108, -20.881], - [35.784, -16.907], - [39.515, -2.197], - [46.091, -1.241], - [52.734, 7.66], - [43.834, 14.302], - [37.257, 13.347], - [29.495, 26.389], - [33.468, 31.714], - [31.873, 42.706], - [26.046, 44.183], - [20.88, 41.108], - [16.907, 35.784], - [2.196, 39.515], - [1.24, 46.091], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 5", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 6, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [673.486, 574.02], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 0, - s: [360], - }, - { t: 150, s: [0] }, - ], - ix: 6, - }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 1, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [3.127, 0], - [1.968, -0.623], - [2.433, -4.689], - [-1.595, -5.035], - [-4.688, -2.433], - [-5.032, 1.594], - [-2.433, 4.689], - [1.595, 5.035], - [4.689, 2.433], - ], - o: [ - [-2.008, 0], - [-5.036, 1.595], - [-2.434, 4.688], - [1.595, 5.036], - [4.689, 2.434], - [5.036, -1.595], - [2.434, -4.688], - [-1.595, -5.036], - [-2.855, -1.482], - ], - v: [ - [0.024, -19.784], - [-5.968, -18.852], - [-17.55, -9.109], - [-18.851, 5.969], - [-9.108, 17.551], - [5.97, 18.852], - [17.552, 9.109], - [18.853, -5.969], - [9.11, -17.551], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [2.21, 0], - [3.145, 1.632], - [1.756, 5.545], - [-2.679, 5.163], - [-5.545, 1.756], - [-5.164, -2.679], - [-1.756, -5.544], - [2.68, -5.162], - [5.545, -1.756], - ], - o: [ - [-3.444, 0], - [-5.162, -2.68], - [-1.756, -5.545], - [2.68, -5.162], - [5.546, -1.757], - [5.162, 2.68], - [1.756, 5.545], - [-2.68, 5.162], - [-2.167, 0.686], - ], - v: [ - [-0.024, 21.785], - [-10.03, 19.327], - [-20.757, 6.574], - [-19.326, -10.031], - [-6.573, -20.758], - [10.032, -19.327], - [20.76, -6.574], - [19.328, 10.031], - [6.575, 20.758], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [-0.972, -0.504], - [-1.045, 0.33], - [-0.505, 0.972], - [0.33, 1.044], - [0, 0], - [0, 0], - [-2.439, 3.165], - [0, 0], - [0, 0], - [-1.045, 0.33], - [-0.504, 0.973], - [2.006, 1.042], - [0, 0], - [0, 0], - [0.514, 3.965], - [0, 0], - [0, 0], - [0.682, 2.154], - [0.973, 0.505], - [1.044, -0.33], - [0, 0], - [0, 0], - [3.166, 2.438], - [0, 0], - [0, 0], - [2.006, 1.041], - [1.04, -2.006], - [0, 0], - [0, 0], - [3.966, -0.512], - [0, 0], - [0, 0], - [0.972, 0.504], - [1.047, -0.33], - [-0.682, -2.155], - [0, 0], - [0, 0], - [2.438, -3.165], - [0, 0], - [0, 0], - [1.044, -0.33], - [0.504, -0.973], - [-0.33, -1.044], - [-0.973, -0.504], - [0, 0], - [0, 0], - [-0.514, -3.965], - [0, 0], - [0, 0], - [0.504, -0.972], - [-0.33, -1.044], - [-2.154, 0.684], - [0, 0], - [0, 0], - [-3.165, -2.438], - [0, 0], - [0, 0], - [-0.33, -1.044], - [-0.973, -0.504], - [-1.041, 2.005], - [0, 0], - [0, 0], - [-3.962, 0.512], - ], - o: [ - [0, 0], - [0.331, 1.044], - [0.972, 0.505], - [1.044, -0.331], - [0.505, -0.972], - [0, 0], - [0, 0], - [3.539, -1.862], - [0, 0], - [0, 0], - [0.972, 0.505], - [1.044, -0.331], - [1.041, -2.005], - [0, 0], - [0, 0], - [1.186, -3.816], - [0, 0], - [0, 0], - [2.154, -0.683], - [-0.331, -1.044], - [-0.97, -0.505], - [0, 0], - [0, 0], - [-1.862, -3.539], - [0, 0], - [0, 0], - [1.041, -2.006], - [-2.009, -1.044], - [0, 0], - [0, 0], - [-3.815, -1.186], - [0, 0], - [0, 0], - [-0.33, -1.044], - [-0.972, -0.505], - [-2.154, 0.683], - [0, 0], - [0, 0], - [-3.539, 1.863], - [0, 0], - [0, 0], - [-0.971, -0.505], - [-1.044, 0.331], - [-0.505, 0.972], - [0.331, 1.044], - [0, 0], - [0, 0], - [-1.186, 3.816], - [0, 0], - [0, 0], - [-1.044, 0.33], - [-0.505, 0.972], - [0.683, 2.154], - [0, 0], - [0, 0], - [1.862, 3.539], - [0, 0], - [0, 0], - [-0.505, 0.972], - [0.331, 1.044], - [2.006, 1.042], - [0, 0], - [0, 0], - [3.816, 1.186], - [0, 0], - ], - v: [ - [4.368, 27.368], - [6.298, 33.466], - [8.318, 35.867], - [11.444, 36.136], - [13.845, 34.117], - [14.115, 30.991], - [12.183, 24.893], - [12.923, 24.504], - [21.931, 16.927], - [22.441, 16.265], - [28.119, 19.211], - [31.245, 19.481], - [33.645, 17.461], - [31.895, 11.934], - [26.217, 8.988], - [26.465, 8.189], - [27.477, -3.536], - [27.369, -4.367], - [33.467, -6.297], - [36.138, -11.443], - [34.118, -13.844], - [30.993, -14.114], - [24.895, -12.182], - [24.505, -12.922], - [16.928, -21.93], - [16.265, -22.44], - [19.212, -28.118], - [17.462, -33.644], - [11.936, -31.894], - [8.989, -26.216], - [8.19, -26.464], - [-3.536, -27.476], - [-4.366, -27.368], - [-6.296, -33.466], - [-8.316, -35.867], - [-11.442, -36.137], - [-14.113, -30.991], - [-12.181, -24.894], - [-12.921, -24.504], - [-21.928, -16.927], - [-22.438, -16.264], - [-28.117, -19.211], - [-31.242, -19.481], - [-33.642, -17.46], - [-33.913, -14.335], - [-31.892, -11.935], - [-26.215, -8.988], - [-26.463, -8.189], - [-27.475, 3.537], - [-27.367, 4.367], - [-33.465, 6.298], - [-35.866, 8.317], - [-36.135, 11.443], - [-30.99, 14.114], - [-24.892, 12.182], - [-24.502, 12.923], - [-16.926, 21.929], - [-16.264, 22.439], - [-19.209, 28.118], - [-19.48, 31.243], - [-17.459, 33.643], - [-11.933, 31.893], - [-8.986, 26.216], - [-8.187, 26.465], - [3.538, 27.476], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 3, - ty: "sh", - ix: 4, - ks: { - a: 0, - k: { - i: [ - [0.619, 0], - [0.881, 0.457], - [0.492, 1.554], - [0, 0], - [3.572, 1.003], - [0, 0], - [2.984, 1.549], - [0.492, 1.554], - [-0.751, 1.446], - [0, 0], - [1.819, 3.237], - [0, 0], - [1.015, 3.206], - [-0.75, 1.446], - [-1.553, 0.491], - [0, 0], - [-1.003, 3.573], - [0, 0], - [0.492, 1.554], - [-0.751, 1.446], - [-1.554, 0.492], - [-1.446, -0.75], - [0, 0], - [-3.237, 1.82], - [0, 0], - [-3.206, 1.016], - [-1.446, -0.75], - [-0.491, -1.553], - [0, 0], - [-3.573, -1.003], - [0, 0], - [-2.988, -1.55], - [1.548, -2.985], - [0, 0], - [-1.819, -3.237], - [0, 0], - [-1.446, -0.75], - [-0.492, -1.554], - [3.206, -1.016], - [0, 0], - [1.003, -3.573], - [0, 0], - [1.549, -2.984], - [1.554, -0.491], - [1.448, 0.75], - [0, 0], - [3.237, -1.819], - [0, 0], - [0.75, -1.445], - [1.554, -0.491], - ], - o: [ - [-0.964, 0], - [-1.445, -0.75], - [0, 0], - [-3.695, 0.377], - [0, 0], - [-1.55, 2.984], - [-1.446, -0.75], - [-0.492, -1.553], - [0, 0], - [-2.876, -2.344], - [0, 0], - [-3.207, 1.016], - [-0.492, -1.553], - [0.751, -1.446], - [0, 0], - [-0.376, -3.694], - [0, 0], - [-1.446, -0.75], - [-0.492, -1.553], - [0.75, -1.445], - [1.552, -0.491], - [0, 0], - [2.344, -2.875], - [0, 0], - [-1.015, -3.206], - [1.551, -0.492], - [1.446, 0.751], - [0, 0], - [3.695, -0.378], - [0, 0], - [1.549, -2.984], - [2.983, 1.55], - [0, 0], - [2.876, 2.345], - [0, 0], - [1.554, -0.491], - [1.446, 0.751], - [1.015, 3.206], - [0, 0], - [0.376, 3.694], - [0, 0], - [2.984, 1.55], - [-0.75, 1.446], - [-1.552, 0.492], - [0, 0], - [-2.346, 2.876], - [0, 0], - [0.492, 1.553], - [-0.751, 1.446], - [-0.607, 0.192], - ], - v: [ - [10.199, 38.331], - [7.397, 37.642], - [4.392, 34.07], - [2.962, 29.555], - [-7.976, 28.612], - [-10.158, 32.815], - [-18.381, 35.419], - [-21.386, 31.846], - [-20.985, 27.196], - [-18.804, 22.993], - [-25.872, 14.59], - [-30.386, 16.02], - [-38.041, 12.047], - [-37.641, 7.396], - [-34.069, 4.391], - [-29.554, 2.962], - [-28.611, -7.978], - [-32.814, -10.16], - [-35.819, -13.732], - [-35.417, -18.382], - [-31.845, -21.387], - [-27.195, -20.987], - [-22.992, -18.805], - [-14.589, -25.873], - [-16.019, -30.387], - [-12.045, -38.043], - [-7.395, -37.642], - [-4.39, -34.07], - [-2.96, -29.555], - [7.979, -28.612], - [10.161, -32.816], - [18.384, -35.419], - [20.988, -27.196], - [18.806, -22.994], - [25.875, -14.59], - [30.389, -16.02], - [35.04, -15.619], - [38.044, -12.046], - [34.071, -4.391], - [29.556, -2.961], - [28.613, 7.978], - [32.817, 10.159], - [35.42, 18.382], - [31.848, 21.387], - [27.197, 20.986], - [22.995, 18.805], - [14.591, 25.873], - [16.021, 30.387], - [15.621, 35.038], - [12.047, 38.043], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 4", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 5, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [604.247, 625.836], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 0, - s: [0], - }, - { t: 150, s: [360] }, - ], - ix: 6, - }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 1, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [16.422, 1.254], - [-1.254, 16.422], - [-16.422, -1.254], - [1.254, -16.422], - ], - o: [ - [-16.422, -1.254], - [1.254, -16.422], - [16.422, 1.254], - [-1.254, 16.422], - ], - v: [ - [-2.27, 29.735], - [-29.735, -2.27], - [2.27, -29.735], - [29.735, 2.27], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [4.031, 0.308], - [0, 0], - [2.938, 4.996], - [0, 0], - [2.633, 3.068], - [3.068, -2.633], - [0, 0], - [5.831, 1.512], - [0, 0], - [4.031, 0.308], - [0, 0], - [0.308, -4.031], - [0, 0], - [4.997, -2.938], - [0, 0], - [3.068, -2.633], - [-2.633, -3.068], - [0, 0], - [1.512, -5.831], - [0, 0], - [0.308, -4.031], - [0, 0], - [-4.031, -0.308], - [0, 0], - [-2.937, -4.996], - [0, 0], - [-2.633, -3.068], - [-3.068, 2.633], - [0, 0], - [-5.831, -1.512], - [0, 0], - [-4.031, -0.308], - [0, 0], - [-0.308, 4.031], - [0, 0], - [-4.997, 2.938], - [0, 0], - [-3.068, 2.633], - [2.633, 3.068], - [0, 0], - [-1.512, 5.831], - [0, 0], - [-0.308, 4.031], - [0, 0], - ], - o: [ - [0, 0], - [-0.609, -5.993], - [0, 0], - [3.068, -2.633], - [-2.633, -3.068], - [0, 0], - [-4.493, -3.662], - [0, 0], - [0.308, -4.031], - [0, 0], - [-4.031, -0.308], - [0, 0], - [-5.993, 0.609], - [0, 0], - [-2.633, -3.068], - [-3.068, 2.633], - [0, 0], - [-3.662, 4.493], - [0, 0], - [-4.031, -0.308], - [0, 0], - [-0.308, 4.031], - [0, 0], - [0.609, 5.993], - [0, 0], - [-3.068, 2.633], - [2.633, 3.068], - [0, 0], - [4.493, 3.662], - [0, 0], - [-0.308, 4.031], - [0, 0], - [4.031, 0.308], - [0, 0], - [5.993, -0.609], - [0, 0], - [2.633, 3.068], - [3.068, -2.633], - [0, 0], - [3.662, -4.492], - [0, 0], - [4.031, 0.308], - [0, 0], - [0.308, -4.031], - ], - v: [ - [48.944, -3.604], - [40.986, -4.212], - [35.537, -20.85], - [41.594, -26.048], - [42.382, -36.369], - [32.06, -37.157], - [26.003, -31.96], - [10.385, -39.872], - [10.993, -47.83], - [4.251, -55.686], - [4.251, -55.686], - [-3.604, -48.944], - [-4.212, -40.986], - [-20.85, -35.537], - [-26.048, -41.594], - [-36.37, -42.382], - [-37.158, -32.06], - [-31.96, -26.003], - [-39.872, -10.385], - [-47.83, -10.993], - [-55.686, -4.251], - [-55.686, -4.251], - [-48.944, 3.604], - [-40.986, 4.212], - [-35.537, 20.85], - [-41.594, 26.048], - [-42.382, 36.37], - [-32.06, 37.158], - [-26.003, 31.96], - [-10.385, 39.872], - [-10.993, 47.83], - [-4.251, 55.686], - [-4.251, 55.686], - [3.604, 48.944], - [4.212, 40.986], - [20.85, 35.537], - [26.048, 41.594], - [36.369, 42.382], - [37.157, 32.06], - [31.96, 26.003], - [39.872, 10.385], - [47.83, 10.993], - [55.686, 4.251], - [55.686, 4.251], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [395.468, 443.357], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 0, - s: [360], - }, - { t: 150, s: [0] }, - ], - ix: 6, - }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 1, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 176, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 9, - ty: 4, - nm: "OBJECTS 18", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [426.779, 595.191, 0], ix: 2 }, - a: { a: 0, k: [426.779, 595.191, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-1.392, 0], - [0, 0], - ], - o: [ - [0, 0], - [1.392, 0], - ], - v: [ - [-59.382, -25.279], - [58.961, -25.229], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [-1.392, 0], - [0, 0], - ], - o: [ - [0, 0], - [1.392, 0], - ], - v: [ - [-59.385, -12.466], - [58.957, -12.416], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 4", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [-1.392, 0], - [0, 0], - ], - o: [ - [0, 0], - [1.392, 0], - ], - v: [ - [-59.391, 0.046], - [58.951, 0.096], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 5", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 3, - ty: "sh", - ix: 4, - ks: { - a: 0, - k: { - i: [ - [-1.392, 0], - [0, 0], - ], - o: [ - [0, 0], - [1.392, 0], - ], - v: [ - [-59.404, 13.01], - [58.938, 13.06], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 6", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 4, - ty: "sh", - ix: 5, - ks: { - a: 0, - k: { - i: [ - [-1.392, 0], - [0, 0], - ], - o: [ - [0, 0], - [1.392, 0], - ], - v: [ - [-59.43, 25.221], - [-16.154, 25.22], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 7", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "tm", - s: { a: 0, k: 0, ix: 1 }, - e: { a: 0, k: 91, ix: 2 }, - o: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 0, - s: [220], - }, - { t: 150, s: [1300] }, - ], - ix: 3, - }, - m: 2, - ix: 6, - nm: "Trim Paths 1", - mn: "ADBE Vector Filter - Trim", - hd: false, - }, - { - ind: 6, - ty: "sh", - ix: 7, - ks: { - a: 0, - k: { - i: [ - [1.495, 0], - [0, 0], - [0, 1.495], - [0, 0], - [-1.495, 0], - [0, 0], - [0, -1.495], - [0, 0], - ], - o: [ - [0, 0], - [-1.495, 0], - [0, 0], - [0, -1.495], - [0, 0], - [1.495, 0], - [0, 0], - [0, 1.495], - ], - v: [ - [71.509, 39.929], - [-71.509, 39.929], - [-74.221, 37.217], - [-74.221, -37.217], - [-71.509, -39.929], - [71.509, -39.929], - [74.221, -37.217], - [74.221, 37.217], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 2.5, ix: 5 }, - lc: 1, - lj: 1, - ml: 4, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [486.898, 641.529], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [91, 91], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 8, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-1.392, 0], - [0, 0], - ], - o: [ - [0, 0], - [1.392, 0], - ], - v: [ - [-59.382, -25.279], - [58.961, -25.229], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [-1.392, 0], - [0, 0], - ], - o: [ - [0, 0], - [1.392, 0], - ], - v: [ - [-59.385, -12.466], - [58.957, -12.416], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 4", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [-1.392, 0], - [0, 0], - ], - o: [ - [0, 0], - [1.392, 0], - ], - v: [ - [-59.391, 0.046], - [58.951, 0.096], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 5", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 3, - ty: "sh", - ix: 4, - ks: { - a: 0, - k: { - i: [ - [-1.392, 0], - [0, 0], - ], - o: [ - [0, 0], - [1.392, 0], - ], - v: [ - [-59.404, 13.01], - [58.938, 13.06], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 6", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 4, - ty: "sh", - ix: 5, - ks: { - a: 0, - k: { - i: [ - [-1.392, 0], - [0, 0], - ], - o: [ - [0, 0], - [1.392, 0], - ], - v: [ - [-59.43, 25.221], - [-16.154, 25.22], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 7", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "tm", - s: { a: 0, k: 0, ix: 1 }, - e: { a: 0, k: 91, ix: 2 }, - o: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 0, - s: [220], - }, - { t: 150, s: [1300] }, - ], - ix: 3, - }, - m: 2, - ix: 6, - nm: "Trim Paths 1", - mn: "ADBE Vector Filter - Trim", - hd: false, - }, - { - ind: 6, - ty: "sh", - ix: 7, - ks: { - a: 0, - k: { - i: [ - [1.495, 0], - [0, 0], - [0, 1.495], - [0, 0], - [-1.495, 0], - [0, 0], - [0, -1.495], - [0, 0], - ], - o: [ - [0, 0], - [-1.495, 0], - [0, 0], - [0, -1.495], - [0, 0], - [1.495, 0], - [0, 0], - [0, 1.495], - ], - v: [ - [71.509, 39.929], - [-71.509, 39.929], - [-74.221, 37.217], - [-74.221, -37.217], - [-71.509, -39.929], - [71.509, -39.929], - [74.221, -37.217], - [74.221, 37.217], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 2.5, ix: 5 }, - lc: 1, - lj: 1, - ml: 4, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [371.898, 556.529], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 8, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 176, - st: 0, - bm: 0, - }, - ], - }, - ], - layers: [ - { - ddd: 0, - ind: 1, - ty: 3, - nm: "Null 1", - sr: 1, - ks: { - o: { a: 0, k: 0, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [250, 250, 0], ix: 2 }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { a: 0, k: [86.5, 86.5, 100], ix: 6 }, - }, - ao: 0, - ip: 0, - op: 176, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 2, - ty: 4, - nm: "OBJECTS 2", - parent: 1, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.16], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.16], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 18, - s: [-19], - }, - { - i: { x: [0.16], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 36, - s: [13.224], - }, - { - i: { x: [0.768], y: [0.989] }, - o: { x: [0.396], y: [0] }, - t: 58, - s: [-28.71], - }, - { - i: { x: [0.738], y: [1.109] }, - o: { x: [0.4], y: [-0.031] }, - t: 70, - s: [22.487], - }, - { - i: { x: [0.581], y: [1] }, - o: { x: [0.167], y: [0.104] }, - t: 90, - s: [-28.937], - }, - { - i: { x: [0.16], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 120, - s: [22.796], - }, - { t: 150, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.16, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [100.192, -7.033, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.16, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 14, - s: [-2.808, -79.033, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.16, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 39, - s: [-2.063, -19.443, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.333, y: 0 }, - t: 56, - s: [-123.178, 129.126, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 69, - s: [-50.998, 74.437, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.16, y: 1 }, - o: { x: 0.167, y: 0.167 }, - t: 91, - s: [5.702, 117.936, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.16, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 115, - s: [87.199, -45.624, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.16, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 131, - s: [124.883, 63.26, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { t: 150, s: [100.192, -7.033, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [600.192, 492.967, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.16, 0.16, 0.16], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [100, 100, 100], - }, - { - i: { x: [0.16, 0.16, 0.16], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 14, - s: [124.717, 124.717, 100], - }, - { - i: { x: [0.16, 0.16, 0.16], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 39, - s: [113.284, 113.284, 100], - }, - { - i: { x: [0.16, 0.16, 0.16], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 56, - s: [68.448, 68.448, 100], - }, - { - i: { x: [0.16, 0.16, 0.16], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 115, - s: [118.576, 118.576, 100], - }, - { t: 150, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [5.288, 5.345], - [0, 0], - [0.818, -0.555], - [3.456, -3.495], - [0, 0], - [3.799, -5.337], - [-1.655, 1.673], - ], - o: [ - [0, 0], - [-0.187, -0.189], - [-2.046, 1.387], - [-1.498, 1.515], - [3.633, 3.673], - [2.097, -0.626], - [5.288, -5.345], - ], - v: [ - [33.63, 14.637], - [-18.381, -37.941], - [-19.956, -37.324], - [-29.104, -29.104], - [28.482, 25.244], - [27.903, 37.442], - [33.63, 33.994], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.243137255311, 0.278431385756, 0.607843160629, 1], - ix: 4, - }, - o: { a: 0, k: 35, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 2", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [5.288, 5.345], - [0, 0], - [0.818, -0.555], - [3.456, -3.495], - [1.147, -1.922], - [-0.164, -0.165], - [0, 0], - [-5.288, 5.345], - ], - o: [ - [0, 0], - [-0.187, -0.189], - [-2.046, 1.387], - [-3.571, 3.611], - [-0.373, 0.625], - [0, 0], - [5.288, 5.345], - [5.288, -5.345], - ], - v: [ - [33.63, 14.637], - [-18.381, -37.941], - [-19.956, -37.324], - [-29.104, -29.104], - [-37.176, -19.808], - [-37.529, -18.584], - [14.482, 33.994], - [33.63, 33.994], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.349019616842, 0.603921592236, 0.949019610882, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [661.549, 554.396], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 4, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [-1.103, -1.103], - [0, 0], - [-2.046, 1.387], - [0, 0], - [1.107, -0.838], - [0.093, -0.093], - ], - o: [ - [-1.103, 1.103], - [0, 0], - [3.456, -3.495], - [0, 0], - [-1.009, -1.009], - [-0.102, 0.078], - [0, 0], - ], - v: [ - [3.323, -8.077], - [3.323, -4.084], - [6.188, -1.219], - [15.336, -9.438], - [12.007, -12.767], - [8.314, -13.012], - [8.014, -12.767], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.274509817362, 0.345098048449, 0.678431391716, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 2", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [-3.571, 3.611], - [0, 0], - [-1.103, 1.103], - [0, 0], - [0, 0], - [-1.103, -1.103], - [0, 0], - ], - o: [ - [0, 0], - [-1.103, -1.103], - [0, 0], - [0, 0], - [-1.103, 1.103], - [0, 0], - [1.147, -1.922], - ], - v: [ - [6.188, -1.219], - [3.323, -4.084], - [3.323, -8.077], - [-5.221, 0.468], - [-5.361, 0.607], - [-5.361, 4.6], - [-1.884, 8.077], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.298039227724, 0.396078437567, 0.729411780834, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [626.257, 526.51], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 4, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [34.348, 0], - [0, -34.348], - [-34.348, 0], - [0, 34.348], - ], - o: [ - [-34.348, 0], - [0, 34.348], - [34.348, 0], - [0, -34.348], - ], - v: [ - [576.097, 406.103], - [513.805, 468.395], - [576.097, 530.687], - [638.389, 468.395], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [16.615, 0], - [0, 41.277], - [-41.277, 0], - [0, -41.277], - [10.201, -13.205], - [0, 0], - [0.044, -0.045], - [0, 0], - ], - o: [ - [-41.277, 0], - [0, -41.277], - [41.277, 0], - [0, 16.702], - [0, 0], - [-0.099, 0.074], - [0, 0], - [-13.183, 10.129], - ], - v: [ - [576.097, 543.253], - [501.238, 468.395], - [576.097, 393.536], - [650.955, 468.395], - [635.362, 514.109], - [635.175, 514.295], - [634.98, 514.448], - [621.646, 527.771], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 4", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.243137255311, 0.278431385756, 0.607843160629, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [576.097, 468.395], ix: 2 }, - a: { a: 0, k: [576.097, 468.395], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 5", - np: 3, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [576.097, 468.395], ix: 2 }, - a: { a: 0, k: [576.097, 468.395], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [2.209, 0], - [0, 2.209], - [-31.929, 0], - [0, -2.209], - [2.209, 0], - [0, -27.517], - ], - o: [ - [-2.209, 0], - [0, -31.929], - [2.209, 0], - [0, 2.209], - [-27.518, 0], - [0, 2.209], - ], - v: [ - [-48.452, 8.452], - [-52.452, 4.452], - [5.452, -53.452], - [9.452, -49.452], - [5.452, -45.452], - [-44.452, 4.452], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 70, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 2", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [34.955, 0], - [0, -34.955], - [-34.955, 0], - [0, 34.955], - ], - o: [ - [-34.955, 0], - [0, 34.955], - [34.955, 0], - [0, -34.955], - ], - v: [ - [0, -63.292], - [-63.292, 0], - [0, 63.292], - [63.292, 0], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "gf", - o: { a: 0, k: 100, ix: 10 }, - r: 1, - bm: 0, - g: { - p: 3, - k: { - a: 0, - k: [ - 0.068, 1, 1, 1, 0.534, 1, 1, 1, 1, 1, 1, 1, 0.172, 0, 0.687, 0.25, - 0.995, 0.5, - ], - ix: 9, - }, - }, - s: { a: 0, k: [0, 0], ix: 5 }, - e: { a: 0, k: [63.5, 0], ix: 6 }, - t: 2, - h: { a: 0, k: 0, ix: 7 }, - a: { a: 0, k: 0, ix: 8 }, - nm: "Gradient Fill 1", - mn: "ADBE Vector Graphic - G-Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 4, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [576.097, 468.395], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 1, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 176, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 3, - ty: 4, - nm: "OBJECTS", - parent: 2, - td: 1, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [600.192, 492.967, 0], ix: 2 }, - a: { a: 0, k: [600.192, 492.967, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [34.955, 0], - [0, -34.955], - [-34.955, 0], - [0, 34.955], - ], - o: [ - [-34.955, 0], - [0, 34.955], - [34.955, 0], - [0, -34.955], - ], - v: [ - [0, -63.292], - [-63.292, 0], - [0, 63.292], - [63.292, 0], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0, 0, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [576.097, 468.395], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 1, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 176, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 4, - ty: 0, - nm: "all", - parent: 1, - tt: 1, - refId: "comp_0", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.22, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [80, -32, 0], - to: [5, 1.833, 0], - ti: [-5, 0.833, 0], - }, - { - i: { x: 0.22, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 14, - s: [110, -21, 0], - to: [5, -0.833, 0], - ti: [-1.667, 4.333, 0], - }, - { - i: { x: 0.22, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 39, - s: [110, -37, 0], - to: [1.667, -4.333, 0], - ti: [3.333, 0, 0], - }, - { - i: { x: 0.22, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 56, - s: [150, -77, 0], - to: [-3.333, 0, 0], - ti: [5, 1.667, 0], - }, - { - i: { x: 0.22, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 69, - s: [110, -37, 0], - to: [-5, -1.667, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.22, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 91, - s: [90, -77, 0], - to: [0, 0, 0], - ti: [0, -6.667, 0], - }, - { - i: { x: 0.22, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 115, - s: [90, -37, 0], - to: [0, 6.667, 0], - ti: [1.667, -0.833, 0], - }, - { - i: { x: 0.22, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 131, - s: [90, -17, 0], - to: [-1.667, 0.833, 0], - ti: [1.667, 2.5, 0], - }, - { t: 150, s: [80, -32, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [580, 468, 0], ix: 1 }, - s: { a: 0, k: [140, 140, 100], ix: 6 }, - }, - ao: 0, - w: 1000, - h: 1000, - ip: 0, - op: 176, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 5, - ty: 0, - nm: "all", - parent: 1, - refId: "comp_0", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [0, 0, 0], ix: 2 }, - a: { a: 0, k: [500, 500, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - w: 1000, - h: 1000, - ip: 0, - op: 176, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 6, - ty: 4, - nm: "BACKGROUND", - parent: 1, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [6.89, -17.736, 0], ix: 2 }, - a: { a: 0, k: [506.89, 482.264, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [9.248, 8.588], - [8.588, -9.248], - [-9.248, -8.588], - [-11.987, 3.948], - ], - o: [ - [-9.248, -8.588], - [-8.588, 9.248], - [9.248, 8.588], - [16.717, -5.507], - ], - v: [ - [16.52, -18.271], - [-15.774, -17.076], - [-20.546, 21.643], - [14.641, 12.257], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.882352948189, 0.886274516582, 0.996078431606, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [313.017, 296.905], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 50, - s: [301.017, 305.905], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 100, - s: [288.01, 333.41], - to: [0, 0], - ti: [0, 0], - }, - { t: 150, s: [313.017, 296.905] }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 50, - s: [12], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 100, - s: [-18], - }, - { t: 150, s: [0] }, - ], - ix: 6, - }, - o: { a: 0, k: 47, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-8.408, -5.428], - [-5.428, 8.408], - [8.407, 5.428], - [8.814, -4.739], - ], - o: [ - [8.408, 5.428], - [5.428, -8.408], - [-8.408, -5.428], - [-12.293, 6.61], - ], - v: [ - [-9.956, 17.35], - [15.095, 11.955], - [13.471, -18.938], - [-12.707, -6.747], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.882352948189, 0.886274516582, 0.996078431606, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [682.659, 671.752], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 50, - s: [663.659, 680.752], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 100, - s: [695.159, 659.252], - to: [0, 0], - ti: [0, 0], - }, - { t: 150, s: [682.659, 671.752] }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 50, - s: [-39], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 100, - s: [11.5], - }, - { t: 150, s: [0] }, - ], - ix: 6, - }, - o: { a: 0, k: 47, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-5.965, 11.62], - [11.62, 5.965], - [5.965, -11.62], - [-7.293, -10.837], - ], - o: [ - [5.965, -11.62], - [-11.62, -5.965], - [-5.965, 11.62], - [10.171, 15.114], - ], - v: [ - [24.368, 10.668], - [14.129, -21.174], - [-25.786, -15.079], - [-6.575, 17.35], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.92549020052, 0.945098042488, 0.96862745285, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [699.145, 321.283], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 50, - s: [674.145, 311.283], - to: [0, 0], - ti: [0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 100, - s: [681.645, 346.283], - to: [0, 0], - ti: [0, 0], - }, - { t: 150, s: [699.145, 321.283] }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 50, - s: [28], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 100, - s: [-26], - }, - { t: 150, s: [0] }, - ], - ix: 6, - }, - o: { a: 0, k: 47, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 2, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 176, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 7, - ty: 4, - nm: "BACKGROUND 2", - parent: 1, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [-8.52, -10.982, 0], ix: 2 }, - a: { a: 0, k: [491.48, 489.018, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.259, -2.915], - [4.029, -14.154], - [5.692, -16.637], - [-10.214, -23.955], - [-9.82, -7.42], - [-18.655, 1.451], - [-27.915, -3.278], - [-7.956, -10.998], - [-13.547, -6.504], - [-25.502, 10.861], - [1.56, 32.025], - [-2.745, 14.557], - [-9.975, 14.885], - [-1.308, 20], - [-0.014, 0.227], - [32.833, 10.798], - [0.003, 0.001], - [65.177, -34.214], - [4.73, -15.211], - ], - o: [ - [-1.27, 14.292], - [-4.824, 16.945], - [-8.411, 24.584], - [4.923, 11.545], - [15.139, 11.439], - [27.764, -2.159], - [15.404, 1.809], - [8.998, 12.439], - [24.952, 11.978], - [27.227, -11.596], - [-0.722, -14.815], - [3.446, -18.269], - [11.016, -16.439], - [0.015, -0.227], - [2.045, -34.503], - [0, 0], - [-70.886, -23.313], - [-14.104, 7.404], - [-0.893, 2.87], - ], - v: [ - [-171.011, -91.868], - [-171.49, -48.694], - [-195.97, -2.419], - [-193.762, 73.668], - [-171.828, 103.363], - [-118.198, 115.859], - [-33.223, 104.958], - [-5.16, 134.437], - [29.639, 163.149], - [110.039, 165.4], - [159.437, 93.462], - [155.53, 49.375], - [182.717, -0.427], - [201.709, -56.47], - [201.752, -57.151], - [149.201, -133.92], - [79.34, -156.896], - [-127.548, -145.224], - [-169.347, -100.55], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.882352948189, 0.886274516582, 0.996078431606, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "tr", - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [492.184, 486.224], - to: [0, 2], - ti: [2.167, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 50, - s: [492.184, 498.224], - to: [-2.167, 0], - ti: [0, 2], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 100, - s: [479.184, 486.224], - to: [0, -2], - ti: [-2.167, 0], - }, - { t: 150, s: [492.184, 486.224] }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [-13], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 50, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 100, - s: [-20], - }, - { t: 150, s: [-13] }, - ], - ix: 6, - }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 1, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [1.842, -4], - [-3.956, -19.29], - [4.899, -24.193], - [1.513, -14.581], - [-24.115, -14.246], - [-22.519, 0.309], - [-19.64, 5.032], - [-19.839, -2.016], - [-15.366, -5.319], - [-33.546, 19.331], - [-6.683, 21.663], - [4.004, 17.675], - [-2.155, 18.908], - [1.104, 13.215], - [4.727, 7.435], - [30.574, 10.015], - [29.956, -2.268], - [63.296, 13.538], - [23.912, -36.092], - ], - o: [ - [-8.245, 17.898], - [4.65, 22.678], - [-2.984, 14.736], - [-3.107, 29.94], - [19.587, 11.57], - [20.268, -0.278], - [18.927, -4.85], - [16.5, 1.677], - [36.685, 12.699], - [21.529, -12.406], - [5.341, -17.312], - [-4.11, -18.147], - [1.502, -13.176], - [-0.734, -8.781], - [-17.262, -27.149], - [-28.773, -9.426], - [-61.936, 4.688], - [-40.863, -8.74], - [-2.439, 3.681], - ], - v: [ - [-212.919, -92.593], - [-219.459, -34.771], - [-205.589, 29.523], - [-210.833, 72.491], - [-170.385, 143.057], - [-105.316, 158.66], - [-45.177, 149.607], - [12.094, 140.383], - [58.82, 154.511], - [173.491, 149.67], - [216.772, 95.453], - [218.787, 44.277], - [209.892, -11.07], - [216.316, -50.178], - [206.989, -74.632], - [130.249, -129.973], - [41.847, -143.956], - [-96.012, -162.644], - [-206.496, -104.136], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.882352948189, 0.886274516582, 0.996078431606, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [482.48, 480.055], - to: [1.5, -1.5], - ti: [-2.333, -1.5], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 50, - s: [491.48, 471.055], - to: [2.333, 1.5], - ti: [1.5, -1.5], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 100, - s: [496.48, 489.055], - to: [-1.5, 1.5], - ti: [2.333, 1.5], - }, - { t: 150, s: [482.48, 480.055] }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 50, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 100, - s: [8], - }, - { t: 150, s: [0] }, - ], - ix: 6, - }, - o: { a: 0, k: 47, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 2, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 176, - st: 0, - bm: 0, - }, - ], - markers: [], -}; - -export const column2Lottie = { - v: "5.5.9", - fr: 60, - ip: 0, - op: 300, - w: 1080, - h: 1080, - nm: "middle-lottie-animation", - ddd: 0, - assets: [], - fonts: { - list: [ - { - fName: "Nunito-Light", - fFamily: "Nunito", - fStyle: "Light", - ascent: 75.7487305440009, - }, - ], - }, - layers: [ - { - ddd: 0, - ind: 1, - ty: 4, - nm: "Layer 1 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [550.587, 825.739, 0], ix: 2 }, - a: { a: 0, k: [447.773, 13.388, 0], ix: 1 }, - s: { a: 0, k: [102.092, 102.092, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.97, 0], - [0, 0], - [0, 0.97], - [0, 0], - [-0.97, 0], - [0, 0], - [0, -0.971], - [0, 0], - ], - o: [ - [0, 0], - [-0.97, 0], - [0, 0], - [0, -0.971], - [0, 0], - [0.97, 0], - [0, 0], - [0, 0.97], - ], - v: [ - [434.717, 2.088], - [-434.716, 2.088], - [-436.473, 0.331], - [-436.473, -0.331], - [-434.716, -2.088], - [434.717, -2.088], - [436.473, -0.331], - [436.473, 0.331], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 4.52, ix: 5 }, - lc: 1, - lj: 1, - ml: 10, - bm: 0, - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [447.773, 13.388], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.97, 0], - [0, 0], - [0, 0.97], - [0, 0], - [-0.97, 0], - [0, 0], - [0, -0.971], - [0, 0], - ], - o: [ - [0, 0], - [-0.97, 0], - [0, 0], - [0, -0.971], - [0, 0], - [0.97, 0], - [0, 0], - [0, 0.97], - ], - v: [ - [434.717, 2.088], - [-434.716, 2.088], - [-436.473, 0.331], - [-436.473, -0.331], - [-434.716, -2.088], - [434.717, -2.088], - [436.473, -0.331], - [436.473, 0.331], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [447.773, 13.388], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 3, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 2, - ty: 4, - nm: "Layer 10 Outlines", - sr: 1, - ks: { - o: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 22, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 44, - s: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 67, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 97, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 119, - s: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 142, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 172, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 194, - s: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 217, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 247, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 269, - s: [100], - }, - { t: 292, s: [0] }, - ], - ix: 11, - }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 22, - s: [758.08, 706.031, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 67, - s: [758.08, 736.031, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 97, - s: [758.08, 706.031, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 142, - s: [758.08, 736.031, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 172, - s: [758.08, 706.031, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 217, - s: [758.08, 736.031, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 247, - s: [758.08, 706.031, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { t: 292, s: [758.08, 736.031, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [19.302, 23.844, 0], ix: 1 }, - s: { a: 0, k: [102.092, 102.092, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [2.08, 0], - [0, 2.08], - [0, 0], - [-2.08, 0], - [0, -2.08], - [0, 0], - ], - o: [ - [-2.08, 0], - [0, 0], - [0, -2.08], - [2.08, 0], - [0, 0], - [0, 2.08], - ], - v: [ - [0, 22.825], - [-3.766, 19.059], - [-3.766, -19.059], - [0, -22.825], - [3.766, -19.059], - [3.766, 19.059], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [19.295, 23.075], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [-1.471, 1.472], - [-1.471, -1.471], - [0, 0], - [0, 0], - [-1.461, -1.48], - [1.483, -1.46], - ], - o: [ - [0, 0], - [-1.471, -1.471], - [1.471, -1.471], - [0, 0], - [0, 0], - [1.485, -1.457], - [1.458, 1.485], - [0, 0], - ], - v: [ - [-0.154, 12.116], - [-17.581, -5.31], - [-17.581, -10.636], - [-12.255, -10.636], - [-0.111, 1.508], - [12.266, -10.659], - [17.594, -10.614], - [17.547, -5.286], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [19.301, 35.321], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 3, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 3, - ty: 4, - nm: "Layer 2 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [752.125, 728.662, 0], ix: 2 }, - a: { a: 0, k: [105.838, 95.55, 0], ix: 1 }, - s: { a: 0, k: [102.092, 102.092, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [4.708, 0], - [0, 0], - [0, 4.465], - [0, 0], - [-2.08, 0], - [0, -2.081], - [0, 0], - [-0.312, 0], - [0, 0], - [0, 0.555], - [0, 0], - [-2.08, 0], - [0, -2.081], - [0, 0], - ], - o: [ - [0, 0], - [-4.465, 0], - [0, 0], - [0, -2.081], - [2.08, 0], - [0, 0], - [0, 0.311], - [0, 0], - [0.555, 0], - [0, 0], - [0, -2.081], - [2.081, 0], - [0, 0], - [0, 4.708], - ], - v: [ - [27.73, 16.087], - [-28.168, 16.087], - [-36.267, 7.988], - [-36.267, -12.32], - [-32.501, -16.087], - [-28.736, -12.32], - [-28.736, 7.988], - [-28.168, 8.554], - [27.73, 8.554], - [28.734, 7.549], - [28.734, -12.32], - [32.501, -16.087], - [36.267, -12.32], - [36.267, 7.549], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [111.788, 126.99], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.833, 0], - [0, 0.833], - [0, 0], - [3.664, 0], - [0, 0], - [0, 0.833], - [-0.833, 0], - [0, 0], - [0, -5.022], - [0, 0], - ], - o: [ - [-0.833, 0], - [0, 0], - [0, -3.361], - [0, 0], - [-0.833, 0], - [0, -0.832], - [0, 0], - [5.325, 0], - [0, 0], - [0, 0.833], - ], - v: [ - [11.372, 15.319], - [9.865, 13.813], - [9.865, -6.212], - [3.221, -12.306], - [-11.372, -12.306], - [-12.878, -13.814], - [-11.372, -15.319], - [3.221, -15.319], - [12.878, -6.212], - [12.878, 13.813], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [188.146, 26.912], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 3, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -4.063], - [4.062, 0], - [0, 4.063], - [-4.063, 0], - ], - o: [ - [0, 4.063], - [-4.063, 0], - [0, -4.063], - [4.062, 0], - ], - v: [ - [7.357, 0], - [0, 7.356], - [-7.357, 0], - [0, -7.356], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [187.021, 166.588], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 3, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [7.25, -0.015], - [0, 0], - [-0.016, -7.251], - [0, 0], - [0, 0], - [-0.023, -11.081], - [0, 0], - [-11.079, 0.024], - [0, 0], - [0.024, 11.081], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [-7.25, 0.015], - [0, 0], - [0, 0], - [-11.079, 0.023], - [0, 0], - [0.024, 11.081], - [0, 0], - [11.078, -0.023], - [0, 0], - [0, 0], - [0, 0], - [-0.015, -7.252], - ], - v: [ - [78.931, -83.265], - [39.831, -83.183], - [26.677, -69.971], - [26.716, -51.256], - [-72.319, -51.048], - [-92.42, -30.859], - [-92.223, 63.16], - [-72.037, 83.264], - [72.319, 82.961], - [92.419, 62.772], - [92.226, -29.321], - [92.222, -31.247], - [92.14, -70.108], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.37254901960784315, 0.6078431372549019, 1, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [113.172, 102.531], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 3, - cix: 2, - bm: 0, - ix: 4, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [88.224, -93.041], - [88.238, -93.041], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [2.36, -2.369], - [-0.007, -3.315], - [0, 0], - [1.248, -0.003], - [0, 0], - [-0.023, -11.167], - [0, 0], - [-11.15, 0], - [0, 0], - [0, 0], - [-3.829, 3.846], - [0.012, 5.385], - [0, 0], - [2.369, 2.359], - [3.305, 0], - ], - o: [ - [0, 0], - [-3.315, 0.008], - [-2.358, 2.369], - [0, 0], - [0.003, 1.248], - [0, 0], - [-11.167, 0.024], - [0, 0], - [0.022, 11.153], - [0, 0], - [0, 0], - [5.385, -0.01], - [3.83, -3.844], - [0, 0], - [-0.006, -3.314], - [-2.362, -2.352], - [0, 0], - ], - v: [ - [88.227, -90.781], - [44.529, -90.689], - [35.728, -87.006], - [32.082, -78.191], - [32.125, -57.278], - [29.87, -55.014], - [-80.814, -54.782], - [-101.023, -34.486], - [-100.802, 70.57], - [-80.549, 90.781], - [-80.508, 90.781], - [80.828, 90.441], - [95.117, 84.459], - [101.038, 70.145], - [100.727, -78.335], - [97.042, -87.133], - [88.255, -90.781], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0.028, 13.642], - [0, 0], - [-13.661, 0.03], - [0, 0], - [0, 0], - [-3.212, 3.223], - [-4.523, 0.011], - [0, 0], - [0, 0], - [-3.217, -3.201], - [-0.009, -4.523], - [0, 0], - [4.682, -4.701], - [6.593, -0.014], - [0, 0], - ], - o: [ - [-13.639, 0], - [0, 0], - [-0.029, -13.658], - [0, 0], - [0, 0], - [-0.01, -4.521], - [3.21, -3.225], - [0, 0], - [0, 0], - [4.51, 0], - [3.223, 3.211], - [0, 0], - [0.014, 6.592], - [-4.681, 4.701], - [0, 0], - [0, 0], - ], - v: [ - [-80.549, 95.3], - [-105.323, 70.579], - [-105.544, -34.477], - [-80.823, -59.301], - [27.602, -59.529], - [27.563, -78.183], - [32.527, -90.193], - [44.519, -95.209], - [88.219, -95.3], - [88.255, -95.3], - [100.232, -90.337], - [105.246, -78.343], - [105.558, 70.136], - [98.32, 87.649], - [80.837, 94.96], - [-80.499, 95.3], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [105.823, 95.55], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 5", - np: 6, - cix: 2, - bm: 0, - ix: 5, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [8.103, -0.017], - [0, 0], - [-0.017, -8.103], - [0, 0], - [0, 0], - [-0.026, -12.382], - [0, 0], - [-12.382, 0.026], - [0, 0], - [0.026, 12.382], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [-8.103, 0.017], - [0, 0], - [0, 0], - [-12.382, 0.026], - [0, 0], - [0.026, 12.381], - [0, 0], - [12.382, -0.026], - [0, 0], - [0, 0], - [0, 0], - [-0.017, -8.102], - ], - v: [ - [88.216, -93.045], - [44.516, -92.952], - [29.815, -78.189], - [29.859, -57.278], - [-80.826, -57.045], - [-103.291, -34.485], - [-103.07, 70.571], - [-80.511, 93.036], - [80.826, 92.697], - [103.291, 70.137], - [103.075, -32.768], - [103.071, -34.92], - [102.979, -78.343], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.23921568627450981, 0.5215686274509804, 0.9921568627450981, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [105.83, 95.554], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 6", - np: 3, - cix: 2, - bm: 0, - ix: 6, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [8.28, 0], - [0, 0], - [0, 0], - [2.844, -2.858], - [-0.009, -4], - [0, 0], - [-8.281, 0], - [0, 0], - [0, 0], - [0.018, 8.297], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [-4, 0.009], - [-2.846, 2.857], - [0, 0], - [0.017, 8.286], - [0, 0], - [0, 0], - [8.296, -0.018], - [0, 0], - [-0.017, -8.284], - ], - v: [ - [86.501, -73.716], - [86.469, -73.716], - [-86.787, -73.353], - [-97.402, -68.909], - [-101.801, -58.275], - [-101.555, 58.7], - [-86.51, 73.716], - [-86.478, 73.716], - [86.778, 73.351], - [101.792, 58.273], - [101.546, -58.702], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0.021, 9.946], - [0, 0], - [-3.413, 3.426], - [-4.805, 0.01], - [0, 0], - [0, 0], - [-0.02, -9.945], - [0, 0], - [9.958, -0.021], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [-9.94, 0], - [0, 0], - [-0.011, -4.805], - [3.412, -3.428], - [0, 0], - [0, 0], - [9.94, 0], - [0, 0], - [0.021, 9.958], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-86.51, 76.729], - [-104.569, 58.706], - [-104.814, -58.269], - [-99.537, -71.035], - [-86.793, -76.366], - [86.463, -76.729], - [86.501, -76.729], - [104.559, -58.708], - [104.805, 58.267], - [86.783, 76.364], - [86.781, 74.857], - [86.783, 76.364], - [-86.472, 76.729], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [105.851, 105.877], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 7", - np: 5, - cix: 2, - bm: 0, - ix: 7, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [9.104, -0.019], - [0, 0], - [0.019, 9.104], - [0, 0], - [-9.104, 0.019], - [0, 0], - [-0.02, -9.104], - [0, 0], - ], - o: [ - [0, 0], - [-9.105, 0.019], - [0, 0], - [-0.019, -9.105], - [0, 0], - [9.104, -0.019], - [0, 0], - [0.019, 9.104], - ], - v: [ - [86.786, 74.858], - [-86.469, 75.223], - [-103.057, 58.704], - [-103.304, -58.271], - [-86.786, -74.858], - [86.471, -75.223], - [103.058, -58.704], - [103.303, 58.271], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [105.845, 105.876], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 8", - np: 3, - cix: 2, - bm: 0, - ix: 8, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0.018, 8.298], - [0, 0], - [8.281, 0], - [0, 0], - [0, 0], - [-0.017, -8.298], - [0, 0], - [-8.28, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [8.296, -0.018], - [0, 0], - [-0.018, -8.285], - [0, 0], - [0, 0], - [-8.296, 0.018], - [0, 0], - [0.018, 8.285], - [0, 0], - [0, 0], - ], - v: [ - [86.783, 73.352], - [86.786, 74.86], - [86.783, 73.352], - [101.797, 58.274], - [101.552, -58.701], - [86.505, -73.715], - [86.474, -73.715], - [-86.782, -73.352], - [-101.797, -58.274], - [-101.55, 58.702], - [-86.505, 73.715], - [-86.472, 73.715], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0.02, 9.946], - [0, 0], - [-9.958, 0.02], - [0, 0], - [0, 0], - [-0.021, -9.946], - [0, 0], - [9.958, -0.02], - [0, 0], - ], - o: [ - [-9.94, 0], - [0, 0], - [-0.021, -9.959], - [0, 0], - [0, 0], - [9.94, 0], - [0, 0], - [0.021, 9.959], - [0, 0], - [0, 0], - ], - v: [ - [-86.505, 76.73], - [-104.563, 58.708], - [-104.81, -58.268], - [-86.787, -76.365], - [86.468, -76.73], - [86.505, -76.73], - [104.565, -58.708], - [104.81, 58.268], - [86.789, 76.365], - [-86.467, 76.73], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [105.845, 96.496], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 9", - np: 5, - cix: 2, - bm: 0, - ix: 9, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [9.104, -0.019], - [0, 0], - [0.019, 9.104], - [0, 0], - [-9.104, 0.019], - [0, 0], - [-0.02, -9.104], - [0, 0], - ], - o: [ - [0, 0], - [-9.105, 0.019], - [0, 0], - [-0.019, -9.104], - [0, 0], - [9.104, -0.019], - [0, 0], - [0.019, 9.104], - ], - v: [ - [86.786, 74.858], - [-86.469, 75.223], - [-103.057, 58.704], - [-103.304, -58.272], - [-86.786, -74.858], - [86.471, -75.223], - [103.058, -58.704], - [103.303, 58.271], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [105.845, 96.496], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 10", - np: 3, - cix: 2, - bm: 0, - ix: 10, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [12.382, -0.026], - [0, 0], - [0.026, 12.382], - [0, 0], - [-12.382, 0.026], - [0, 0], - [-0.026, -12.382], - [0, 0], - ], - o: [ - [0, 0], - [-12.382, 0.026], - [0, 0], - [-0.026, -12.382], - [0, 0], - [12.382, -0.026], - [0, 0], - [0.026, 12.381], - ], - v: [ - [80.826, 74.871], - [-80.511, 75.21], - [-103.071, 52.745], - [-103.291, -52.312], - [-80.826, -74.871], - [80.511, -75.21], - [103.07, -52.745], - [103.291, 52.312], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [105.845, 87.116], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 11", - np: 3, - cix: 2, - bm: 0, - ix: 11, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [11.148, 0], - [0, 0], - [0, 0], - [-0.022, -11.167], - [0, 0], - [-3.845, -3.83], - [-5.368, 0], - [0, 0], - [0, 0], - [-3.831, 3.844], - [0.012, 5.385], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [-11.166, 0.024], - [0, 0], - [0.012, 5.385], - [3.835, 3.819], - [0, 0], - [0, 0], - [5.383, -0.012], - [3.829, -3.846], - [0, 0], - [-0.023, -11.152], - ], - v: [ - [80.557, -72.95], - [80.516, -72.95], - [-80.822, -72.612], - [-101.032, -52.316], - [-100.811, 52.741], - [-94.83, 67.03], - [-80.561, 72.95], - [-80.516, 72.95], - [80.822, 72.612], - [95.111, 66.631], - [101.031, 52.317], - [100.81, -52.741], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [80.826, 74.872], - [80.841, 74.872], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [4.688, 4.668], - [0.015, 6.592], - [0, 0], - [-13.66, 0.029], - [0, 0], - [0, 0], - [-0.029, -13.642], - [0, 0], - [13.66, -0.029], - [0, 0], - ], - o: [ - [-6.572, 0], - [-4.7, -4.682], - [0, 0], - [-0.028, -13.659], - [0, 0], - [0, 0], - [13.636, 0], - [0, 0], - [0.029, 13.658], - [0, 0], - [0, 0], - ], - v: [ - [-80.561, 77.47], - [-98.019, 70.233], - [-105.331, 52.75], - [-105.552, -52.307], - [-80.831, -77.131], - [80.507, -77.47], - [80.557, -77.47], - [105.33, -52.749], - [105.551, 52.308], - [80.831, 77.131], - [-80.508, 77.47], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [105.846, 87.116], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 12", - np: 6, - cix: 2, - bm: 0, - ix: 12, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [12.382, -0.026], - [0, 0], - [0.026, 12.382], - [0, 0], - [-12.382, 0.026], - [0, 0], - [-0.026, -12.382], - [0, 0], - ], - o: [ - [0, 0], - [-12.382, 0.026], - [0, 0], - [-0.026, -12.382], - [0, 0], - [12.382, -0.026], - [0, 0], - [0.026, 12.381], - ], - v: [ - [80.826, 74.871], - [-80.511, 75.21], - [-103.071, 52.745], - [-103.291, -52.312], - [-80.826, -74.871], - [80.511, -75.21], - [103.07, -52.745], - [103.291, 52.312], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.23921568627450981, 0.5215686274509804, 0.9921568627450981, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [105.846, 87.116], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 13", - np: 3, - cix: 2, - bm: 0, - ix: 13, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [11.148, 0], - [0, 0], - [0, 0], - [-0.022, -11.167], - [0, 0], - [-3.845, -3.83], - [-5.368, 0], - [0, 0], - [0, 0], - [-3.831, 3.844], - [0.012, 5.385], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [-11.166, 0.024], - [0, 0], - [0.012, 5.385], - [3.835, 3.819], - [0, 0], - [0, 0], - [5.383, -0.012], - [3.829, -3.846], - [0, 0], - [-0.023, -11.152], - ], - v: [ - [80.557, -72.95], - [80.516, -72.95], - [-80.822, -72.612], - [-101.032, -52.316], - [-100.811, 52.741], - [-94.83, 67.03], - [-80.561, 72.95], - [-80.516, 72.95], - [80.822, 72.612], - [95.111, 66.631], - [101.031, 52.317], - [100.81, -52.741], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [80.826, 74.872], - [80.841, 74.872], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [4.688, 4.668], - [0.015, 6.592], - [0, 0], - [-13.66, 0.029], - [0, 0], - [0, 0], - [-0.029, -13.642], - [0, 0], - [13.66, -0.029], - [0, 0], - ], - o: [ - [-6.572, 0], - [-4.7, -4.682], - [0, 0], - [-0.028, -13.659], - [0, 0], - [0, 0], - [13.636, 0], - [0, 0], - [0.029, 13.658], - [0, 0], - [0, 0], - ], - v: [ - [-80.561, 77.47], - [-98.019, 70.233], - [-105.331, 52.75], - [-105.552, -52.307], - [-80.831, -77.131], - [80.507, -77.47], - [80.557, -77.47], - [105.33, -52.749], - [105.551, 52.308], - [80.831, 77.131], - [-80.508, 77.47], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [105.846, 87.116], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 14", - np: 6, - cix: 2, - bm: 0, - ix: 14, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [12.382, -0.026], - [0, 0], - [0.026, 12.382], - [0, 0], - [-12.382, 0.026], - [0, 0], - [-0.026, -12.382], - [0, 0], - ], - o: [ - [0, 0], - [-12.382, 0.026], - [0, 0], - [-0.026, -12.382], - [0, 0], - [12.382, -0.026], - [0, 0], - [0.026, 12.381], - ], - v: [ - [80.826, 74.871], - [-80.511, 75.21], - [-103.071, 52.745], - [-103.291, -52.312], - [-80.826, -74.871], - [80.511, -75.21], - [103.07, -52.745], - [103.291, 52.312], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.238999998803, 0.522000002394, 0.991999966491, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [105.846, 87.116], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 15", - np: 3, - cix: 2, - bm: 0, - ix: 15, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 4, - ty: 4, - nm: "Layer 9 Outlines", - parent: 5, - sr: 1, - ks: { - o: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 0, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 22, - s: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 45, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 75, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 97, - s: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 120, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 150, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 172, - s: [100], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 195, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 225, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 247, - s: [100], - }, - { t: 270, s: [0] }, - ], - ix: 11, - }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 0, - s: [107.059, 101.262, 0], - to: [0, -4.571, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 45, - s: [107.059, 73.836, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 75, - s: [107.059, 101.262, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 120, - s: [107.059, 73.836, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 150, - s: [107.059, 101.262, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 195, - s: [107.059, 73.836, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 225, - s: [107.059, 101.262, 0], - to: [0, 0, 0], - ti: [0, 4.571, 0], - }, - { t: 270, s: [107.059, 73.836, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [19.301, 23.844, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [2.08, 0], - [0, 2.08], - [0, 0], - [-2.08, 0], - [0, -2.08], - [0, 0], - ], - o: [ - [-2.08, 0], - [0, 0], - [0, -2.08], - [2.08, 0], - [0, 0], - [0, 2.08], - ], - v: [ - [0, 22.825], - [-3.767, 19.059], - [-3.767, -19.059], - [0, -22.825], - [3.767, -19.059], - [3.767, 19.059], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [19.308, 24.613], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.953, 0], - [0.739, 0.748], - [-1.483, 1.46], - [0, 0], - [0, 0], - [1.471, -1.472], - [1.471, 1.471], - [0, 0], - [0, 0], - ], - o: [ - [-0.974, 0], - [-1.458, -1.485], - [0, 0], - [0, 0], - [1.471, 1.471], - [-1.471, 1.471], - [0, 0], - [0, 0], - [-0.734, 0.721], - ], - v: [ - [-14.906, 11.743], - [-17.593, 10.618], - [-17.548, 5.291], - [0.154, -12.111], - [17.581, 5.314], - [17.581, 10.64], - [12.255, 10.64], - [0.111, -1.503], - [-12.265, 10.663], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [19.301, 12.362], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 3, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 5, - ty: 4, - nm: "Layer 4 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 0, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 5, - s: [4], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 10, - s: [-3], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 14, - s: [2], - }, - { t: 19, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 0, - s: [334.844, 728.662, 0], - to: [-3.333, 0, 0], - ti: [-3.333, 0, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 5, - s: [314.844, 728.662, 0], - to: [3.333, 0, 0], - ti: [-3.333, 0, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 10, - s: [354.844, 728.662, 0], - to: [3.333, 0, 0], - ti: [3.333, 0, 0], - }, - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 14, - s: [334.844, 728.662, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { t: 19, s: [334.844, 728.662, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [105.83, 95.55, 0], ix: 1 }, - s: { a: 0, k: [102.092, 102.092, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [4.708, 0], - [0, 0], - [0, 4.465], - [0, 0], - [-2.08, 0], - [0, -2.081], - [0, 0], - [-0.312, 0], - [0, 0], - [0, 0.555], - [0, 0], - [-2.08, 0], - [0, -2.081], - [0, 0], - ], - o: [ - [0, 0], - [-4.465, 0], - [0, 0], - [0, -2.081], - [2.08, 0], - [0, 0], - [0, 0.311], - [0, 0], - [0.555, 0], - [0, 0], - [0, -2.081], - [2.081, 0], - [0, 0], - [0, 4.708], - ], - v: [ - [27.73, 16.087], - [-28.169, 16.087], - [-36.268, 7.988], - [-36.268, -12.32], - [-32.502, -16.087], - [-28.736, -12.32], - [-28.736, 7.988], - [-28.169, 8.554], - [27.73, 8.554], - [28.734, 7.549], - [28.734, -12.32], - [32.501, -16.087], - [36.268, -12.32], - [36.268, 7.549], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [107.09, 126.99], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.833, 0], - [0, 0.833], - [0, 0], - [3.665, 0], - [0, 0], - [0, 0.833], - [-0.833, 0], - [0, 0], - [0, -5.022], - [0, 0], - ], - o: [ - [-0.833, 0], - [0, 0], - [0, -3.361], - [0, 0], - [-0.833, 0], - [0, -0.832], - [0, 0], - [5.326, 0], - [0, 0], - [0, 0.833], - ], - v: [ - [11.372, 15.319], - [9.864, 13.813], - [9.864, -6.212], - [3.219, -12.306], - [-11.372, -12.306], - [-12.878, -13.814], - [-11.372, -15.319], - [3.219, -15.319], - [12.878, -6.212], - [12.878, 13.813], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [188.571, 26.912], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 3, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -4.063], - [4.063, 0], - [0, 4.063], - [-4.062, 0], - ], - o: [ - [0, 4.063], - [-4.062, 0], - [0, -4.063], - [4.063, 0], - ], - v: [ - [7.357, 0], - [-0.001, 7.356], - [-7.357, 0], - [-0.001, -7.356], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [187.445, 166.588], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 3, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [7.25, -0.015], - [0, 0], - [-0.015, -7.251], - [0, 0], - [0, 0], - [-0.023, -11.081], - [0, 0], - [-11.079, 0.024], - [0, 0], - [0.024, 11.081], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [-7.25, 0.015], - [0, 0], - [0, 0], - [-11.078, 0.023], - [0, 0], - [0.023, 11.081], - [0, 0], - [11.078, -0.023], - [0, 0], - [0, 0], - [0, 0], - [-0.015, -7.252], - ], - v: [ - [78.931, -83.265], - [39.831, -83.183], - [26.676, -69.971], - [26.716, -51.256], - [-72.32, -51.048], - [-92.42, -30.859], - [-92.222, 63.16], - [-72.037, 83.264], - [72.319, 82.961], - [92.419, 62.772], - [92.226, -29.321], - [92.222, -31.247], - [92.14, -70.108], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.1450980392156863, 0.5058823529411764, 0.5764705882352941, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [113.597, 102.531], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 3, - cix: 2, - bm: 0, - ix: 4, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [88.216, -93.041], - [88.231, -93.041], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [2.359, -2.369], - [-0.007, -3.315], - [0, 0], - [0.424, -0.426], - [0.6, -0.002], - [0, 0], - [-0.023, -11.167], - [0, 0], - [-11.147, 0], - [0, 0], - [0, 0], - [0.022, 11.169], - [0, 0], - [6.865, 0], - ], - o: [ - [0, 0], - [-3.315, 0.008], - [-2.359, 2.369], - [0, 0], - [0.002, 0.599], - [-0.422, 0.423], - [0, 0], - [-11.167, 0.024], - [0, 0], - [0.023, 11.153], - [0, 0], - [0, 0], - [11.165, -0.022], - [0, 0], - [-0.014, -6.867], - [0, 0], - ], - v: [ - [88.22, -90.781], - [44.521, -90.689], - [35.722, -87.006], - [32.075, -78.191], - [32.119, -57.278], - [31.46, -55.679], - [29.864, -55.014], - [-80.821, -54.782], - [-101.031, -34.486], - [-100.81, 70.57], - [-80.557, 90.781], - [-80.515, 90.781], - [80.823, 90.441], - [101.032, 70.145], - [100.72, -78.335], - [88.248, -90.781], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0.03, 13.642], - [0, 0], - [-13.661, 0.03], - [0, 0], - [0, 0], - [-3.211, 3.223], - [-4.523, 0.011], - [0, 0], - [0, 0], - [-0.021, -9.359], - [0, 0], - [13.658, -0.028], - [0, 0], - ], - o: [ - [-13.635, 0], - [0, 0], - [-0.029, -13.658], - [0, 0], - [0, 0], - [-0.01, -4.521], - [3.21, -3.225], - [0, 0], - [0, 0], - [9.353, 0], - [0, 0], - [0.028, 13.66], - [0, 0], - [0, 0], - ], - v: [ - [-80.557, 95.3], - [-105.33, 70.579], - [-105.551, -34.477], - [-80.83, -59.301], - [27.595, -59.529], - [27.555, -78.183], - [32.52, -90.193], - [44.512, -95.209], - [88.212, -95.3], - [88.248, -95.3], - [105.24, -78.343], - [105.552, 70.136], - [80.832, 94.96], - [-80.507, 95.3], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.11372549019607843, 0.4470588235294118, 0.5137254901960784, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [105.83, 95.55], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 5", - np: 6, - cix: 2, - bm: 0, - ix: 5, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [8.103, -0.017], - [0, 0], - [-0.017, -8.103], - [0, 0], - [0, 0], - [-0.026, -12.382], - [0, 0], - [-12.382, 0.026], - [0, 0], - [0.026, 12.382], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [-8.103, 0.017], - [0, 0], - [0, 0], - [-12.382, 0.026], - [0, 0], - [0.026, 12.381], - [0, 0], - [12.382, -0.026], - [0, 0], - [0, 0], - [0, 0], - [-0.017, -8.102], - ], - v: [ - [88.216, -93.045], - [44.516, -92.952], - [29.815, -78.189], - [29.859, -57.278], - [-80.826, -57.045], - [-103.291, -34.485], - [-103.071, 70.571], - [-80.511, 93.036], - [80.826, 92.697], - [103.291, 70.137], - [103.075, -32.768], - [103.07, -34.92], - [102.979, -78.343], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.07450980392156863, 0.41568627450980394, 0.4823529411764706, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [105.83, 95.554], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 6", - np: 3, - cix: 2, - bm: 0, - ix: 6, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [8.282, 0], - [0, 0], - [0, 0], - [2.844, -2.858], - [-0.009, -4], - [0, 0], - [-2.857, -2.846], - [-3.989, 0], - [0, 0], - [0, 0], - [0.018, 8.297], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [-4, 0.009], - [-2.846, 2.857], - [0, 0], - [0.008, 4], - [2.85, 2.838], - [0, 0], - [0, 0], - [8.296, -0.018], - [0, 0], - [-0.018, -8.284], - ], - v: [ - [86.5, -73.716], - [86.468, -73.716], - [-86.788, -73.353], - [-97.403, -68.909], - [-101.802, -58.275], - [-101.556, 58.7], - [-97.113, 69.317], - [-86.511, 73.716], - [-86.479, 73.716], - [86.777, 73.351], - [101.792, 58.273], - [101.547, -58.702], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [3.419, 3.404], - [0.011, 4.805], - [0, 0], - [-3.413, 3.426], - [-4.805, 0.01], - [0, 0], - [0, 0], - [-0.021, -9.945], - [0, 0], - [9.959, -0.021], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [-4.791, 0], - [-3.427, -3.414], - [0, 0], - [-0.011, -4.805], - [3.412, -3.428], - [0, 0], - [0, 0], - [9.941, 0], - [0, 0], - [0.02, 9.958], - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-86.511, 76.729], - [-99.239, 71.452], - [-104.57, 58.706], - [-104.815, -58.269], - [-99.538, -71.035], - [-86.794, -76.366], - [86.462, -76.729], - [86.5, -76.729], - [104.56, -58.708], - [104.806, 58.267], - [86.783, 76.364], - [86.78, 74.857], - [86.783, 76.364], - [-86.473, 76.729], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.11372549019607843, 0.4470588235294118, 0.5137254901960784, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [105.851, 105.877], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 7", - np: 5, - cix: 2, - bm: 0, - ix: 7, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [9.104, -0.019], - [0, 0], - [0.019, 9.104], - [0, 0], - [-9.104, 0.019], - [0, 0], - [-0.02, -9.104], - [0, 0], - ], - o: [ - [0, 0], - [-9.104, 0.019], - [0, 0], - [-0.019, -9.105], - [0, 0], - [9.104, -0.019], - [0, 0], - [0.019, 9.104], - ], - v: [ - [86.786, 74.858], - [-86.47, 75.223], - [-103.057, 58.704], - [-103.303, -58.271], - [-86.785, -74.858], - [86.471, -75.223], - [103.058, -58.704], - [103.303, 58.271], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [105.846, 105.876], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 8", - np: 3, - cix: 2, - bm: 0, - ix: 8, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 6, - ty: 4, - nm: "Layer 11 Outlines 2", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 139, - s: [-360], - }, - { t: 259, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 139, - s: [321.137, 729.512, 0], - to: [-73, -418.667, 0], - ti: [-13, -487.333, 0], - }, - { t: 259, s: [747.137, 725.512, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [63.201, 77.748, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 139, - s: [71.076, 71.076, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 199.201, - s: [100, 100, 100], - }, - { t: 259, s: [67.078, 67.078, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.733, 0], - [0.078, 0.012], - [0, 0], - [-0.125, 0.824], - [-0.839, -0.126], - [0, 0], - [0.125, -0.824], - ], - o: [ - [-0.075, 0], - [0, 0], - [-0.822, -0.123], - [0.124, -0.823], - [0, 0], - [0.823, 0.124], - [-0.111, 0.746], - ], - v: [ - [20.603, 4.685], - [20.374, 4.668], - [-20.828, -1.582], - [-22.09, -3.297], - [-20.374, -4.56], - [20.827, 1.69], - [22.09, 3.405], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [40.775, 117.451], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.733, 0], - [0.076, 0.012], - [0, 0], - [-0.125, 0.824], - [-0.826, -0.127], - [0, 0], - [0.125, -0.824], - ], - o: [ - [-0.075, 0], - [0, 0], - [-0.823, -0.124], - [0.125, -0.822], - [0, 0], - [0.823, 0.124], - [-0.113, 0.746], - ], - v: [ - [36.637, 7.119], - [36.408, 7.101], - [-36.861, -4.014], - [-38.124, -5.73], - [-36.408, -6.992], - [36.861, 4.123], - [38.124, 5.839], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [60.589, 94.971], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 3, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.733, 0], - [0.076, 0.012], - [0, 0], - [-0.125, 0.823], - [-0.825, -0.128], - [0, 0], - [0.125, -0.824], - ], - o: [ - [-0.075, 0], - [0, 0], - [-0.823, -0.124], - [0.126, -0.823], - [0, 0], - [0.823, 0.124], - [-0.113, 0.746], - ], - v: [ - [20.872, 4.728], - [20.644, 4.71], - [-21.096, -1.622], - [-22.359, -3.337], - [-20.643, -4.6], - [21.097, 1.732], - [22.359, 3.448], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [48.38, 69.133], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 3, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.733, 0], - [0.076, 0.012], - [0, 0], - [-0.125, 0.824], - [-0.828, -0.13], - [0, 0], - [0.125, -0.824], - ], - o: [ - [-0.075, 0], - [0, 0], - [-0.822, -0.124], - [0.125, -0.822], - [0, 0], - [0.823, 0.124], - [-0.113, 0.746], - ], - v: [ - [18.319, 4.342], - [18.091, 4.324], - [-18.544, -1.234], - [-19.806, -2.95], - [-18.091, -4.212], - [18.544, 1.346], - [19.806, 3.062], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [49.608, 43.833], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 3, - cix: 2, - bm: 0, - ix: 4, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.733, 0], - [0.076, 0.012], - [0, 0], - [-0.125, 0.824], - [-0.826, -0.128], - [0, 0], - [0.125, -0.824], - ], - o: [ - [-0.075, 0], - [0, 0], - [-0.822, -0.124], - [0.125, -0.822], - [0, 0], - [0.823, 0.124], - [-0.113, 0.746], - ], - v: [ - [10.727, 3.189], - [10.498, 3.171], - [-10.952, -0.083], - [-12.214, -1.799], - [-10.499, -3.061], - [10.951, 0.193], - [12.214, 1.909], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [93.835, 50.543], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 5", - np: 3, - cix: 2, - bm: 0, - ix: 5, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.733, 0], - [0.076, 0.012], - [0, 0], - [-0.125, 0.824], - [-0.821, -0.131], - [0, 0], - [0.126, -0.824], - ], - o: [ - [-0.075, 0], - [0, 0], - [-0.823, -0.124], - [0.125, -0.822], - [0, 0], - [0.823, 0.124], - [-0.113, 0.746], - ], - v: [ - [9.341, 2.98], - [9.113, 2.962], - [-9.566, 0.129], - [-10.829, -1.587], - [-9.113, -2.849], - [9.566, -0.016], - [10.828, 1.7], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [46.729, 23.157], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 6", - np: 3, - cix: 2, - bm: 0, - ix: 6, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-58.264, 58.268], - [38.378, 72.932], - [58.265, -58.149], - [-38.378, -72.812], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [0.886, 0], - [0.212, 0.033], - [0, 0], - [0.662, 0.901], - [-0.169, 1.107], - [0, 0], - [-0.901, 0.662], - [-1.103, -0.166], - [0, 0], - [-0.663, -0.901], - [0.166, -1.105], - [0, 0], - [0.9, -0.662], - ], - o: [ - [-0.211, 0], - [0, 0], - [-1.105, -0.167], - [-0.663, -0.901], - [0, 0], - [0.168, -1.105], - [0.899, -0.662], - [0, 0], - [1.105, 0.168], - [0.663, 0.9], - [0, 0], - [-0.167, 1.105], - [-0.727, 0.535], - ], - v: [ - [38.668, 77.497], - [38.032, 77.45], - [-59.273, 62.687], - [-62.016, 61.031], - [-62.782, 57.919], - [-42.797, -73.82], - [-41.141, -76.562], - [-38.033, -77.332], - [59.274, -62.568], - [62.016, -60.912], - [62.785, -57.804], - [42.796, 73.941], - [41.141, 76.682], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [63.201, 77.748], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 7", - np: 5, - cix: 2, - bm: 0, - ix: 7, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [1.051, 0.159], - [0, 0], - [-0.16, 1.05], - [0, 0], - [-1.051, -0.16], - [0, 0], - [0.159, -1.051], - [0, 0], - ], - o: [ - [0, 0], - [-1.051, -0.16], - [0, 0], - [0.159, -1.051], - [0, 0], - [1.051, 0.16], - [0, 0], - [-0.159, 1.051], - ], - v: [ - [38.371, 75.156], - [-58.935, 60.393], - [-60.549, 58.202], - [-40.561, -73.541], - [-38.37, -75.155], - [58.936, -60.392], - [60.55, -58.201], - [40.562, 73.542], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.226999993418, 0.681999954523, 0.834999952129, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [63.201, 77.807], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 8", - np: 3, - cix: 2, - bm: 0, - ix: 8, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 139, - op: 439, - st: 139, - bm: 0, - }, - { - ddd: 0, - ind: 7, - ty: 4, - nm: "Layer 11 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 31, - s: [-360], - }, - { t: 151, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 31, - s: [321.137, 729.512, 0], - to: [-73, -418.667, 0], - ti: [-13, -487.333, 0], - }, - { t: 151, s: [747.137, 725.512, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [63.201, 77.748, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 31, - s: [71.076, 71.076, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 91.201, - s: [100, 100, 100], - }, - { t: 151, s: [67.078, 67.078, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.733, 0], - [0.078, 0.012], - [0, 0], - [-0.125, 0.824], - [-0.839, -0.126], - [0, 0], - [0.125, -0.824], - ], - o: [ - [-0.075, 0], - [0, 0], - [-0.822, -0.123], - [0.124, -0.823], - [0, 0], - [0.823, 0.124], - [-0.111, 0.746], - ], - v: [ - [20.603, 4.685], - [20.374, 4.668], - [-20.828, -1.582], - [-22.09, -3.297], - [-20.374, -4.56], - [20.827, 1.69], - [22.09, 3.405], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [40.775, 117.451], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.733, 0], - [0.076, 0.012], - [0, 0], - [-0.125, 0.824], - [-0.826, -0.127], - [0, 0], - [0.125, -0.824], - ], - o: [ - [-0.075, 0], - [0, 0], - [-0.823, -0.124], - [0.125, -0.822], - [0, 0], - [0.823, 0.124], - [-0.113, 0.746], - ], - v: [ - [36.637, 7.119], - [36.408, 7.101], - [-36.861, -4.014], - [-38.124, -5.73], - [-36.408, -6.992], - [36.861, 4.123], - [38.124, 5.839], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [60.589, 94.971], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 3, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.733, 0], - [0.076, 0.012], - [0, 0], - [-0.125, 0.823], - [-0.825, -0.128], - [0, 0], - [0.125, -0.824], - ], - o: [ - [-0.075, 0], - [0, 0], - [-0.823, -0.124], - [0.126, -0.823], - [0, 0], - [0.823, 0.124], - [-0.113, 0.746], - ], - v: [ - [20.872, 4.728], - [20.644, 4.71], - [-21.096, -1.622], - [-22.359, -3.337], - [-20.643, -4.6], - [21.097, 1.732], - [22.359, 3.448], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [48.38, 69.133], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 3, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.733, 0], - [0.076, 0.012], - [0, 0], - [-0.125, 0.824], - [-0.828, -0.13], - [0, 0], - [0.125, -0.824], - ], - o: [ - [-0.075, 0], - [0, 0], - [-0.822, -0.124], - [0.125, -0.822], - [0, 0], - [0.823, 0.124], - [-0.113, 0.746], - ], - v: [ - [18.319, 4.342], - [18.091, 4.324], - [-18.544, -1.234], - [-19.806, -2.95], - [-18.091, -4.212], - [18.544, 1.346], - [19.806, 3.062], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [49.608, 43.833], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 3, - cix: 2, - bm: 0, - ix: 4, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.733, 0], - [0.076, 0.012], - [0, 0], - [-0.125, 0.824], - [-0.826, -0.128], - [0, 0], - [0.125, -0.824], - ], - o: [ - [-0.075, 0], - [0, 0], - [-0.822, -0.124], - [0.125, -0.822], - [0, 0], - [0.823, 0.124], - [-0.113, 0.746], - ], - v: [ - [10.727, 3.189], - [10.498, 3.171], - [-10.952, -0.083], - [-12.214, -1.799], - [-10.499, -3.061], - [10.951, 0.193], - [12.214, 1.909], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [93.835, 50.543], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 5", - np: 3, - cix: 2, - bm: 0, - ix: 5, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.733, 0], - [0.076, 0.012], - [0, 0], - [-0.125, 0.824], - [-0.821, -0.131], - [0, 0], - [0.126, -0.824], - ], - o: [ - [-0.075, 0], - [0, 0], - [-0.823, -0.124], - [0.125, -0.822], - [0, 0], - [0.823, 0.124], - [-0.113, 0.746], - ], - v: [ - [9.341, 2.98], - [9.113, 2.962], - [-9.566, 0.129], - [-10.829, -1.587], - [-9.113, -2.849], - [9.566, -0.016], - [10.828, 1.7], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [46.729, 23.157], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 6", - np: 3, - cix: 2, - bm: 0, - ix: 6, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-58.264, 58.268], - [38.378, 72.932], - [58.265, -58.149], - [-38.378, -72.812], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [0.886, 0], - [0.212, 0.033], - [0, 0], - [0.662, 0.901], - [-0.169, 1.107], - [0, 0], - [-0.901, 0.662], - [-1.103, -0.166], - [0, 0], - [-0.663, -0.901], - [0.166, -1.105], - [0, 0], - [0.9, -0.662], - ], - o: [ - [-0.211, 0], - [0, 0], - [-1.105, -0.167], - [-0.663, -0.901], - [0, 0], - [0.168, -1.105], - [0.899, -0.662], - [0, 0], - [1.105, 0.168], - [0.663, 0.9], - [0, 0], - [-0.167, 1.105], - [-0.727, 0.535], - ], - v: [ - [38.668, 77.497], - [38.032, 77.45], - [-59.273, 62.687], - [-62.016, 61.031], - [-62.782, 57.919], - [-42.797, -73.82], - [-41.141, -76.562], - [-38.033, -77.332], - [59.274, -62.568], - [62.016, -60.912], - [62.785, -57.804], - [42.796, 73.941], - [41.141, 76.682], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [63.201, 77.748], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 7", - np: 5, - cix: 2, - bm: 0, - ix: 7, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [1.051, 0.159], - [0, 0], - [-0.16, 1.05], - [0, 0], - [-1.051, -0.16], - [0, 0], - [0.159, -1.051], - [0, 0], - ], - o: [ - [0, 0], - [-1.051, -0.16], - [0, 0], - [0.159, -1.051], - [0, 0], - [1.051, 0.16], - [0, 0], - [-0.159, 1.051], - ], - v: [ - [38.371, 75.156], - [-58.935, 60.393], - [-60.549, 58.202], - [-40.561, -73.541], - [-38.37, -75.155], - [58.936, -60.392], - [60.55, -58.201], - [40.562, 73.542], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.226999993418, 0.681999954523, 0.834999952129, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [63.201, 77.807], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 8", - np: 3, - cix: 2, - bm: 0, - ix: 8, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 31, - op: 331, - st: 31, - bm: 0, - }, - { - ddd: 0, - ind: 8, - ty: 4, - nm: "Layer 12 Outlines 5", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 83, - s: [360], - }, - { t: 203, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 83, - s: [318.45, 739.698, 0], - to: [77, -535.667, 0], - ti: [45, -224.333, 0], - }, - { t: 203, s: [756.45, 729.698, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [75.522, 85.003, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 83, - s: [53.907, 53.907, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 143.201, - s: [100, 100, 100], - }, - { t: 203, s: [66.459, 66.459, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-1.238, -1.261], - [1.262, -1.237], - [1.238, 1.261], - [-1.262, 1.238], - ], - o: [ - [1.238, 1.261], - [-1.261, 1.238], - [-1.238, -1.262], - [1.261, -1.238], - ], - v: [ - [2.284, -2.241], - [2.241, 2.284], - [-2.284, 2.242], - [-2.241, -2.284], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [54.56, 25.871], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.48, 0], - [0.424, 0.168], - [0.378, 0.874], - [0, 0], - [-0.381, 0.166], - [-0.166, -0.381], - [0, 0], - [-0.51, -0.201], - [-0.502, 0.218], - [0, 0], - [0.349, 0.803], - [0, 0], - [0.831, -0.356], - [0, 0], - [-0.382, -0.882], - [0, 0], - [0.381, -0.166], - [0.166, 0.383], - [0, 0], - [-1.645, 0.712], - [0, 0], - [-0.69, -1.59], - [0, 0], - [1.566, -0.68], - [0, 0], - ], - o: [ - [-0.443, 0], - [-0.886, -0.35], - [0, 0], - [-0.165, -0.383], - [0.384, -0.166], - [0, 0], - [0.218, 0.504], - [0.515, 0.205], - [0, 0], - [0.804, -0.349], - [0, 0], - [-0.359, -0.829], - [0, 0], - [-0.883, 0.381], - [0, 0], - [0.166, 0.383], - [-0.378, 0.168], - [0, 0], - [-0.714, -1.648], - [0, 0], - [1.587, -0.686], - [0, 0], - [0.677, 1.565], - [0, 0], - [-0.453, 0.197], - ], - v: [ - [2.373, 9.217], - [1.062, 8.965], - [-0.898, 7.067], - [-2.884, 2.486], - [-2.493, 1.494], - [-1.501, 1.886], - [0.485, 6.469], - [1.615, 7.563], - [3.188, 7.538], - [3.523, 7.394], - [4.349, 5.305], - [-0.677, -6.295], - [-2.835, -7.148], - [-3.406, -6.899], - [-4.314, -4.606], - [-4.19, -4.322], - [-4.579, -3.33], - [-5.57, -3.719], - [-5.695, -4.005], - [-4.005, -8.282], - [-3.434, -8.531], - [0.706, -6.895], - [5.732, 4.706], - [4.122, 8.777], - [3.787, 8.921], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [33.101, 31.531], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 3, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [27.882, 14.726], - [27.897, 14.726], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [0.586, 0], - [0.195, -0.084], - [0, 0], - [0.149, -0.377], - [-0.16, -0.371], - [0, 0], - [-0.377, -0.149], - [-0.374, 0.158], - [0, 0], - [-0.149, 0.375], - [0.161, 0.371], - [0, 0], - ], - o: [ - [-0.2, 0], - [0, 0], - [-0.371, 0.161], - [-0.149, 0.375], - [0, 0], - [0.16, 0.371], - [0.374, 0.15], - [0, 0], - [0.371, -0.16], - [0.149, -0.376], - [0, 0], - [-0.248, -0.569], - ], - v: [ - [9.747, -28.637], - [9.147, -28.515], - [-27.283, -12.73], - [-28.088, -11.898], - [-28.071, -10.739], - [-11.136, 28.342], - [-10.305, 29.146], - [-9.147, 29.128], - [27.283, 13.343], - [28.088, 12.512], - [28.07, 11.355], - [11.138, -27.727], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [0.61, 0], - [0.539, 0.213], - [0.481, 1.109], - [0, 0], - [-0.444, 1.124], - [-1.109, 0.481], - [0, 0], - [-0.992, -2.292], - [0, 0], - [0.444, -1.124], - [1.109, -0.48], - [0, 0], - [0, 0], - ], - o: [ - [-0.564, 0], - [-1.125, -0.445], - [0, 0], - [-0.48, -1.109], - [0.444, -1.126], - [0, 0], - [2.29, -0.99], - [0, 0], - [0.479, 1.11], - [-0.444, 1.124], - [0, 0], - [0, 0], - [-0.577, 0.25], - ], - v: [ - [-9.747, 32.269], - [-11.413, 31.95], - [-13.902, 29.54], - [-30.835, -9.542], - [-30.891, -13.006], - [-28.481, -15.494], - [7.949, -31.278], - [13.902, -28.925], - [30.835, 10.157], - [30.891, 13.62], - [28.481, 16.109], - [28.481, 16.11], - [-7.949, 31.894], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [46.445, 46.724], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 6, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [1.53, -0.663], - [0, 0], - [0.663, 1.53], - [0, 0], - [-1.53, 0.663], - [0, 0], - [-0.664, -1.53], - [0, 0], - ], - o: [ - [0, 0], - [-1.53, 0.663], - [0, 0], - [-0.663, -1.531], - [0, 0], - [1.531, -0.663], - [0, 0], - [0.663, 1.53], - ], - v: [ - [27.882, 14.419], - [-8.549, 30.204], - [-12.52, 28.633], - [-29.452, -10.447], - [-27.882, -14.42], - [8.548, -30.204], - [12.52, -28.633], - [29.452, 10.449], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [46.446, 47.031], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 3, - cix: 2, - bm: 0, - ix: 4, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.19, 0], - [0.239, 0.584], - [-0.771, 0.314], - [0, 0], - [-0.315, -0.773], - [0.771, -0.315], - [0, 0], - ], - o: [ - [-0.593, 0], - [-0.315, -0.77], - [0, 0], - [0.764, -0.316], - [0.314, 0.769], - [0, 0], - [-0.185, 0.077], - ], - v: [ - [-21.127, 10.24], - [-22.522, 9.303], - [-21.696, 7.339], - [20.558, -9.924], - [22.523, -9.098], - [21.697, -7.134], - [-20.558, 10.128], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [71.61, 119.104], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 5", - np: 3, - cix: 2, - bm: 0, - ix: 5, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.19, 0], - [0.239, 0.584], - [-0.771, 0.314], - [0, 0], - [-0.315, -0.771], - [0.771, -0.315], - [0, 0], - ], - o: [ - [-0.593, 0], - [-0.315, -0.77], - [0, 0], - [0.764, -0.316], - [0.315, 0.769], - [0, 0], - [-0.185, 0.077], - ], - v: [ - [-8.345, 5.018], - [-9.74, 4.082], - [-8.914, 2.118], - [7.777, -4.702], - [9.741, -3.876], - [8.916, -1.913], - [-7.777, 4.906], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [53.443, 105.821], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 6", - np: 3, - cix: 2, - bm: 0, - ix: 6, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.19, 0], - [0.239, 0.584], - [-0.771, 0.315], - [0, 0], - [-0.315, -0.771], - [0.771, -0.315], - [0, 0], - ], - o: [ - [-0.593, 0], - [-0.315, -0.77], - [0, 0], - [0.768, -0.318], - [0.315, 0.77], - [0, 0], - [-0.186, 0.077], - ], - v: [ - [-13.634, 7.179], - [-15.029, 6.242], - [-14.203, 4.278], - [13.065, -6.861], - [15.029, -6.036], - [14.204, -4.072], - [-13.065, 7.067], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [100.067, 86.774], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 7", - np: 3, - cix: 2, - bm: 0, - ix: 7, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.19, 0], - [0.239, 0.584], - [-0.771, 0.314], - [0, 0], - [-0.315, -0.773], - [0.771, -0.315], - [0, 0], - ], - o: [ - [-0.593, 0], - [-0.315, -0.77], - [0, 0], - [0.764, -0.317], - [0.315, 0.769], - [0, 0], - [-0.185, 0.077], - ], - v: [ - [-34.301, 15.622], - [-35.696, 14.686], - [-34.87, 12.722], - [33.732, -15.305], - [35.696, -14.479], - [34.871, -12.516], - [-33.732, 15.51], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [72.916, 79.347], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 8", - np: 3, - cix: 2, - bm: 0, - ix: 8, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.19, 0], - [0.239, 0.584], - [-0.771, 0.315], - [0, 0], - [-0.316, -0.77], - [0.771, -0.315], - [0, 0], - ], - o: [ - [-0.593, 0], - [-0.315, -0.77], - [0, 0], - [0.762, -0.316], - [0.315, 0.77], - [0, 0], - [-0.185, 0.077], - ], - v: [ - [-7.833, 4.809], - [-9.229, 3.873], - [-8.402, 1.909], - [7.265, -4.493], - [9.229, -3.669], - [8.404, -1.703], - [-7.265, 4.697], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [89.856, 45.21], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 9", - np: 3, - cix: 2, - bm: 0, - ix: 9, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [70.399, 43.036], - [70.396, 43.036], - [70.399, 43.035], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [71.255, 45.127], - [71.269, 45.127], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-70.538, -42.605], - [-20.398, 80.128], - [70.092, 43.161], - [19.95, -79.572], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 3, - ty: "sh", - ix: 4, - ks: { - a: 0, - k: { - i: [ - [0.536, 0], - [0.521, 0.219], - [0.422, 1.035], - [0, 0], - [-0.433, 1.031], - [-1.035, 0.422], - [0, 0], - [-0.872, -2.134], - [0, 0], - [2.134, -0.874], - [0, 0], - [0, 0], - ], - o: [ - [-0.548, 0], - [-1.032, -0.433], - [0, 0], - [-0.424, -1.033], - [0.432, -1.031], - [0, 0], - [2.142, -0.87], - [0, 0], - [0.871, 2.135], - [0, 0.002], - [0, 0], - [-0.51, 0.209], - ], - v: [ - [-20.583, 84.753], - [-22.202, 84.423], - [-24.456, 82.148], - [-74.848, -41.206], - [-74.833, -44.409], - [-72.557, -46.663], - [18.553, -83.883], - [24.007, -81.592], - [74.402, 41.762], - [72.111, 47.217], - [72.11, 47.219], - [-19.001, 84.439], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 4", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [75.522, 85.003], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 10", - np: 7, - cix: 2, - bm: 0, - ix: 10, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.984, -0.402], - [0, 0], - [0.402, 0.984], - [0, 0], - [-0.983, 0.402], - [0, 0], - [-0.402, -0.984], - [0, 0], - ], - o: [ - [0, 0], - [-0.984, 0.402], - [0, 0], - [-0.402, -0.984], - [0, 0], - [0.984, -0.402], - [0, 0], - [0.402, 0.984], - ], - v: [ - [71.479, 44.848], - [-19.631, 82.068], - [-22.141, 81.016], - [-72.533, -42.339], - [-71.48, -44.849], - [19.631, -82.069], - [22.14, -81.014], - [72.533, 42.34], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [75.299, 85.281], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 11", - np: 3, - cix: 2, - bm: 0, - ix: 11, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 83, - op: 383, - st: 83, - bm: 0, - }, - { - ddd: 0, - ind: 9, - ty: 4, - nm: "Layer 12 Outlines 2", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [360], - }, - { t: 120, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [318.45, 739.698, 0], - to: [77, -535.667, 0], - ti: [45, -224.333, 0], - }, - { t: 120, s: [756.45, 729.698, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [75.522, 85.003, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [53.907, 53.907, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 60.201, - s: [100, 100, 100], - }, - { t: 120, s: [66.459, 66.459, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-1.238, -1.261], - [1.262, -1.237], - [1.238, 1.261], - [-1.262, 1.238], - ], - o: [ - [1.238, 1.261], - [-1.261, 1.238], - [-1.238, -1.262], - [1.261, -1.238], - ], - v: [ - [2.284, -2.241], - [2.241, 2.284], - [-2.284, 2.242], - [-2.241, -2.284], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [54.56, 25.871], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.48, 0], - [0.424, 0.168], - [0.378, 0.874], - [0, 0], - [-0.381, 0.166], - [-0.166, -0.381], - [0, 0], - [-0.51, -0.201], - [-0.502, 0.218], - [0, 0], - [0.349, 0.803], - [0, 0], - [0.831, -0.356], - [0, 0], - [-0.382, -0.882], - [0, 0], - [0.381, -0.166], - [0.166, 0.383], - [0, 0], - [-1.645, 0.712], - [0, 0], - [-0.69, -1.59], - [0, 0], - [1.566, -0.68], - [0, 0], - ], - o: [ - [-0.443, 0], - [-0.886, -0.35], - [0, 0], - [-0.165, -0.383], - [0.384, -0.166], - [0, 0], - [0.218, 0.504], - [0.515, 0.205], - [0, 0], - [0.804, -0.349], - [0, 0], - [-0.359, -0.829], - [0, 0], - [-0.883, 0.381], - [0, 0], - [0.166, 0.383], - [-0.378, 0.168], - [0, 0], - [-0.714, -1.648], - [0, 0], - [1.587, -0.686], - [0, 0], - [0.677, 1.565], - [0, 0], - [-0.453, 0.197], - ], - v: [ - [2.373, 9.217], - [1.062, 8.965], - [-0.898, 7.067], - [-2.884, 2.486], - [-2.493, 1.494], - [-1.501, 1.886], - [0.485, 6.469], - [1.615, 7.563], - [3.188, 7.538], - [3.523, 7.394], - [4.349, 5.305], - [-0.677, -6.295], - [-2.835, -7.148], - [-3.406, -6.899], - [-4.314, -4.606], - [-4.19, -4.322], - [-4.579, -3.33], - [-5.57, -3.719], - [-5.695, -4.005], - [-4.005, -8.282], - [-3.434, -8.531], - [0.706, -6.895], - [5.732, 4.706], - [4.122, 8.777], - [3.787, 8.921], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [33.101, 31.531], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 3, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [27.882, 14.726], - [27.897, 14.726], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [0.586, 0], - [0.195, -0.084], - [0, 0], - [0.149, -0.377], - [-0.16, -0.371], - [0, 0], - [-0.377, -0.149], - [-0.374, 0.158], - [0, 0], - [-0.149, 0.375], - [0.161, 0.371], - [0, 0], - ], - o: [ - [-0.2, 0], - [0, 0], - [-0.371, 0.161], - [-0.149, 0.375], - [0, 0], - [0.16, 0.371], - [0.374, 0.15], - [0, 0], - [0.371, -0.16], - [0.149, -0.376], - [0, 0], - [-0.248, -0.569], - ], - v: [ - [9.747, -28.637], - [9.147, -28.515], - [-27.283, -12.73], - [-28.088, -11.898], - [-28.071, -10.739], - [-11.136, 28.342], - [-10.305, 29.146], - [-9.147, 29.128], - [27.283, 13.343], - [28.088, 12.512], - [28.07, 11.355], - [11.138, -27.727], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [0.61, 0], - [0.539, 0.213], - [0.481, 1.109], - [0, 0], - [-0.444, 1.124], - [-1.109, 0.481], - [0, 0], - [-0.992, -2.292], - [0, 0], - [0.444, -1.124], - [1.109, -0.48], - [0, 0], - [0, 0], - ], - o: [ - [-0.564, 0], - [-1.125, -0.445], - [0, 0], - [-0.48, -1.109], - [0.444, -1.126], - [0, 0], - [2.29, -0.99], - [0, 0], - [0.479, 1.11], - [-0.444, 1.124], - [0, 0], - [0, 0], - [-0.577, 0.25], - ], - v: [ - [-9.747, 32.269], - [-11.413, 31.95], - [-13.902, 29.54], - [-30.835, -9.542], - [-30.891, -13.006], - [-28.481, -15.494], - [7.949, -31.278], - [13.902, -28.925], - [30.835, 10.157], - [30.891, 13.62], - [28.481, 16.109], - [28.481, 16.11], - [-7.949, 31.894], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [46.445, 46.724], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 6, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [1.53, -0.663], - [0, 0], - [0.663, 1.53], - [0, 0], - [-1.53, 0.663], - [0, 0], - [-0.664, -1.53], - [0, 0], - ], - o: [ - [0, 0], - [-1.53, 0.663], - [0, 0], - [-0.663, -1.531], - [0, 0], - [1.531, -0.663], - [0, 0], - [0.663, 1.53], - ], - v: [ - [27.882, 14.419], - [-8.549, 30.204], - [-12.52, 28.633], - [-29.452, -10.447], - [-27.882, -14.42], - [8.548, -30.204], - [12.52, -28.633], - [29.452, 10.449], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [46.446, 47.031], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 3, - cix: 2, - bm: 0, - ix: 4, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.19, 0], - [0.239, 0.584], - [-0.771, 0.314], - [0, 0], - [-0.315, -0.773], - [0.771, -0.315], - [0, 0], - ], - o: [ - [-0.593, 0], - [-0.315, -0.77], - [0, 0], - [0.764, -0.316], - [0.314, 0.769], - [0, 0], - [-0.185, 0.077], - ], - v: [ - [-21.127, 10.24], - [-22.522, 9.303], - [-21.696, 7.339], - [20.558, -9.924], - [22.523, -9.098], - [21.697, -7.134], - [-20.558, 10.128], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [71.61, 119.104], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 5", - np: 3, - cix: 2, - bm: 0, - ix: 5, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.19, 0], - [0.239, 0.584], - [-0.771, 0.314], - [0, 0], - [-0.315, -0.771], - [0.771, -0.315], - [0, 0], - ], - o: [ - [-0.593, 0], - [-0.315, -0.77], - [0, 0], - [0.764, -0.316], - [0.315, 0.769], - [0, 0], - [-0.185, 0.077], - ], - v: [ - [-8.345, 5.018], - [-9.74, 4.082], - [-8.914, 2.118], - [7.777, -4.702], - [9.741, -3.876], - [8.916, -1.913], - [-7.777, 4.906], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [53.443, 105.821], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 6", - np: 3, - cix: 2, - bm: 0, - ix: 6, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.19, 0], - [0.239, 0.584], - [-0.771, 0.315], - [0, 0], - [-0.315, -0.771], - [0.771, -0.315], - [0, 0], - ], - o: [ - [-0.593, 0], - [-0.315, -0.77], - [0, 0], - [0.768, -0.318], - [0.315, 0.77], - [0, 0], - [-0.186, 0.077], - ], - v: [ - [-13.634, 7.179], - [-15.029, 6.242], - [-14.203, 4.278], - [13.065, -6.861], - [15.029, -6.036], - [14.204, -4.072], - [-13.065, 7.067], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [100.067, 86.774], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 7", - np: 3, - cix: 2, - bm: 0, - ix: 7, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.19, 0], - [0.239, 0.584], - [-0.771, 0.314], - [0, 0], - [-0.315, -0.773], - [0.771, -0.315], - [0, 0], - ], - o: [ - [-0.593, 0], - [-0.315, -0.77], - [0, 0], - [0.764, -0.317], - [0.315, 0.769], - [0, 0], - [-0.185, 0.077], - ], - v: [ - [-34.301, 15.622], - [-35.696, 14.686], - [-34.87, 12.722], - [33.732, -15.305], - [35.696, -14.479], - [34.871, -12.516], - [-33.732, 15.51], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [72.916, 79.347], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 8", - np: 3, - cix: 2, - bm: 0, - ix: 8, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.19, 0], - [0.239, 0.584], - [-0.771, 0.315], - [0, 0], - [-0.316, -0.77], - [0.771, -0.315], - [0, 0], - ], - o: [ - [-0.593, 0], - [-0.315, -0.77], - [0, 0], - [0.762, -0.316], - [0.315, 0.77], - [0, 0], - [-0.185, 0.077], - ], - v: [ - [-7.833, 4.809], - [-9.229, 3.873], - [-8.402, 1.909], - [7.265, -4.493], - [9.229, -3.669], - [8.404, -1.703], - [-7.265, 4.697], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [89.856, 45.21], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 9", - np: 3, - cix: 2, - bm: 0, - ix: 9, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [70.399, 43.036], - [70.396, 43.036], - [70.399, 43.035], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [71.255, 45.127], - [71.269, 45.127], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-70.538, -42.605], - [-20.398, 80.128], - [70.092, 43.161], - [19.95, -79.572], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 3, - ty: "sh", - ix: 4, - ks: { - a: 0, - k: { - i: [ - [0.536, 0], - [0.521, 0.219], - [0.422, 1.035], - [0, 0], - [-0.433, 1.031], - [-1.035, 0.422], - [0, 0], - [-0.872, -2.134], - [0, 0], - [2.134, -0.874], - [0, 0], - [0, 0], - ], - o: [ - [-0.548, 0], - [-1.032, -0.433], - [0, 0], - [-0.424, -1.033], - [0.432, -1.031], - [0, 0], - [2.142, -0.87], - [0, 0], - [0.871, 2.135], - [0, 0.002], - [0, 0], - [-0.51, 0.209], - ], - v: [ - [-20.583, 84.753], - [-22.202, 84.423], - [-24.456, 82.148], - [-74.848, -41.206], - [-74.833, -44.409], - [-72.557, -46.663], - [18.553, -83.883], - [24.007, -81.592], - [74.402, 41.762], - [72.111, 47.217], - [72.11, 47.219], - [-19.001, 84.439], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 4", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [75.522, 85.003], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 10", - np: 7, - cix: 2, - bm: 0, - ix: 10, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.984, -0.402], - [0, 0], - [0.402, 0.984], - [0, 0], - [-0.983, 0.402], - [0, 0], - [-0.402, -0.984], - [0, 0], - ], - o: [ - [0, 0], - [-0.984, 0.402], - [0, 0], - [-0.402, -0.984], - [0, 0], - [0.984, -0.402], - [0, 0], - [0.402, 0.984], - ], - v: [ - [71.479, 44.848], - [-19.631, 82.068], - [-22.141, 81.016], - [-72.533, -42.339], - [-71.48, -44.849], - [19.631, -82.069], - [22.14, -81.014], - [72.533, 42.34], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [75.299, 85.281], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 11", - np: 3, - cix: 2, - bm: 0, - ix: 11, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 10, - ty: 3, - nm: "Layer 12 Outlines 7", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 162, - s: [0], - }, - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 201, - s: [-56], - }, - { t: 282, s: [53.642] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.833, y: 0.833 }, - o: { x: 0.167, y: 0.167 }, - t: 162, - s: [318.45, 739.698, 0], - to: [77, -535.667, 0], - ti: [45, -224.333, 0], - }, - { t: 282, s: [756.45, 729.698, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [75.522, 85.003, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.833, 0.833, 0.833], y: [0.833, 0.833, 0.833] }, - o: { x: [0.167, 0.167, 0.167], y: [0.167, 0.167, 0.167] }, - t: 162, - s: [53.907, 53.907, 100], - }, - { - i: { x: [0.833, 0.833, 0.833], y: [0.833, 0.833, 0.833] }, - o: { x: [0.167, 0.167, 0.167], y: [0.167, 0.167, 0.167] }, - t: 222.201, - s: [62.999, 62.999, 100], - }, - { t: 282, s: [66.459, 66.459, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 162, - op: 462, - st: 162, - bm: 0, - }, - { - ddd: 0, - ind: 11, - ty: 5, - nm: "tookaa.ir", - cl: "ir", - parent: 10, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [103.339, 87.764, 0], ix: 2 }, - a: { a: 0, k: [-1.961, -22.467, 0], ix: 1 }, - s: { a: 0, k: [102.643, 102.643, 100], ix: 6 }, - }, - ao: 0, - t: { - d: { - k: [ - { - s: { - s: 63, - f: "Nunito-Light", - t: "tookaa.ir", - j: 2, - tr: -25, - lh: 75.6, - ls: 0, - fc: [1, 0.706, 0.31], - }, - t: 0, - }, - ], - }, - p: {}, - m: { g: 1, a: { a: 0, k: [0, 0], ix: 2 } }, - a: [], - }, - ip: 162, - op: 462, - st: 162, - bm: 0, - }, - { - ddd: 0, - ind: 12, - ty: 3, - nm: "Layer 12 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 33, - s: [360], - }, - { t: 153, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 33, - s: [318.45, 739.698, 0], - to: [77, -535.667, 0], - ti: [45, -224.333, 0], - }, - { t: 153, s: [756.45, 729.698, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [75.522, 85.003, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 33, - s: [53.907, 53.907, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 93.201, - s: [100, 100, 100], - }, - { t: 153, s: [66.459, 66.459, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 33, - op: 333, - st: 33, - bm: 0, - }, - { - ddd: 0, - ind: 13, - ty: 4, - nm: "Layer 6 Outlines", - parent: 12, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [94.176, 72.558, 0], ix: 2 }, - a: { a: 0, k: [76.107, 85.049, 0], ix: 1 }, - s: { a: 0, k: [91.425, 91.425, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.197, 0], - [0.244, 0.574], - [-0.766, 0.325], - [0, 0], - [-0.327, -0.766], - [0.767, -0.325], - [0, 0], - ], - o: [ - [-0.586, 0], - [-0.326, -0.765], - [0, 0], - [0.761, -0.322], - [0.325, 0.765], - [0, 0], - [-0.191, 0.081], - ], - v: [ - [-21.008, 10.527], - [-22.395, 9.609], - [-21.597, 7.633], - [20.42, -10.205], - [22.396, -9.406], - [21.597, -7.43], - [-20.42, 10.408], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [73.109, 118.977], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.197, 0], - [0.244, 0.574], - [-0.766, 0.325], - [0, 0], - [-0.327, -0.766], - [0.766, -0.325], - [0, 0], - ], - o: [ - [-0.586, 0], - [-0.326, -0.765], - [0, 0], - [0.759, -0.321], - [0.325, 0.765], - [0, 0], - [-0.191, 0.081], - ], - v: [ - [-8.298, 5.13], - [-9.686, 4.213], - [-8.888, 2.237], - [7.71, -4.809], - [9.686, -4.01], - [8.887, -2.034], - [-7.711, 5.012], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [54.763, 105.943], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 3, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.197, 0], - [0.244, 0.574], - [-0.767, 0.325], - [0, 0], - [-0.327, -0.767], - [0.766, -0.325], - [0, 0], - ], - o: [ - [-0.586, 0], - [-0.326, -0.766], - [0, 0], - [0.759, -0.324], - [0.325, 0.766], - [0, 0], - [-0.191, 0.082], - ], - v: [ - [-13.557, 7.364], - [-14.944, 6.446], - [-14.145, 4.47], - [12.969, -7.04], - [14.945, -6.243], - [14.146, -4.267], - [-12.969, 7.243], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [101.122, 86.262], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 3, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.197, 0], - [0.244, 0.574], - [-0.766, 0.325], - [0, 0], - [-0.327, -0.766], - [0.766, -0.325], - [0, 0], - ], - o: [ - [-0.586, 0], - [-0.326, -0.766], - [0, 0], - [0.758, -0.323], - [0.325, 0.766], - [0, 0], - [-0.191, 0.082], - ], - v: [ - [-34.107, 16.088], - [-35.495, 15.17], - [-34.697, 13.194], - [33.52, -15.765], - [35.496, -14.967], - [34.697, -12.993], - [-33.52, 15.967], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [73.873, 79.206], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 3, - cix: 2, - bm: 0, - ix: 4, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.197, 0], - [0.244, 0.574], - [-0.767, 0.325], - [0, 0], - [-0.326, -0.767], - [0.767, -0.325], - [0, 0], - ], - o: [ - [-0.586, 0], - [-0.326, -0.766], - [0, 0], - [0.759, -0.323], - [0.325, 0.766], - [0, 0], - [-0.191, 0.082], - ], - v: [ - [-7.788, 4.915], - [-9.176, 3.997], - [-8.376, 2.022], - [7.201, -4.592], - [9.177, -3.794], - [8.378, -1.819], - [-7.201, 4.795], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [90.344, 44.84], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 5", - np: 3, - cix: 2, - bm: 0, - ix: 5, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0, 0], - ], - v: [ - [-70.665, -41.864], - [-18.856, 80.174], - [71.12, 41.975], - [19.311, -80.062], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [0.555, 0], - [0.507, 0.205], - [0.437, 1.029], - [0, 0], - [-2.123, 0.902], - [0, 0], - [-1.039, -0.418], - [-0.436, -1.029], - [0, 0], - [0.418, -1.036], - [1.03, -0.437], - [0, 0], - ], - o: [ - [-0.529, 0], - [-1.037, -0.419], - [0, 0], - [-0.9, -2.124], - [0, 0], - [1.027, -0.437], - [1.036, 0.42], - [0, 0], - [0.437, 1.029], - [-0.42, 1.037], - [0, 0], - [-0.525, 0.222], - ], - v: [ - [-19.035, 84.799], - [-20.601, 84.493], - [-22.885, 82.248], - [-74.958, -40.406], - [-72.742, -45.893], - [17.854, -84.354], - [21.057, -84.381], - [23.339, -82.135], - [75.412, 40.518], - [75.439, 43.72], - [73.193, 46.005], - [-17.399, 84.465], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [76.107, 85.049], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 6", - np: 5, - cix: 2, - bm: 0, - ix: 6, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.978, -0.415], - [0, 0], - [0.415, 0.978], - [0, 0], - [-0.978, 0.415], - [0, 0], - [-0.416, -0.978], - [0, 0], - ], - o: [ - [0, 0], - [-0.978, 0.415], - [0, 0], - [-0.416, -0.978], - [0, 0], - [0.979, -0.415], - [0, 0], - [0.416, 0.978], - ], - v: [ - [72.085, 43.869], - [-18.51, 82.329], - [-21.033, 81.31], - [-73.104, -41.346], - [-72.085, -43.869], - [18.509, -82.329], - [21.033, -81.31], - [73.103, 41.346], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [76.334, 85.106], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 7", - np: 3, - cix: 2, - bm: 0, - ix: 7, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 33, - op: 333, - st: 33, - bm: 0, - }, - { - ddd: 0, - ind: 14, - ty: 3, - nm: "Layer 12 Outlines 4", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 68, - s: [720], - }, - { t: 188, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 68, - s: [318.45, 739.698, 0], - to: [77, -535.667, 0], - ti: [45, -224.333, 0], - }, - { t: 188, s: [756.45, 729.698, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [75.522, 85.003, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 68, - s: [53.907, 53.907, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 128.201, - s: [68.999, 68.999, 100], - }, - { t: 188, s: [66.459, 66.459, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 68, - op: 368, - st: 68, - bm: 0, - }, - { - ddd: 0, - ind: 15, - ty: 4, - nm: "Layer 15 Outlines 2", - parent: 14, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [97.398, 86.2, 0], ix: 2 }, - a: { a: 0, k: [84.806, 97.839, 0], ix: 1 }, - s: { a: 0, k: [103.714, 103.714, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.01, 0], - [0.015, -0.045], - [0, 0], - [-0.054, -0.018], - [0, 0], - [0, 0], - [-0.017, 0.054], - [0, 0], - [0.054, 0.018], - [0, 0], - ], - o: [ - [-0.051, 0], - [0, 0], - [-0.019, 0.054], - [0, 0], - [0, 0], - [0.051, 0.017], - [0, 0], - [0.019, -0.055], - [0, 0], - [-0.011, -0.002], - ], - v: [ - [-29.016, -92.914], - [-29.141, -92.833], - [-79.878, 55.763], - [-79.803, 55.917], - [28.987, 93.062], - [28.989, 93.062], - [29.14, 92.987], - [79.877, -55.61], - [79.801, -55.764], - [-28.986, -92.909], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [1.93, 0], - [0.494, 0.169], - [0, 0], - [0.548, 1.113], - [-0.4, 1.173], - [0, 0], - [-1.114, 0.546], - [-1.175, -0.402], - [0, 0], - [-0.547, -1.112], - [0.402, -1.173], - [0, 0], - ], - o: [ - [-0.496, 0], - [0, 0], - [-1.173, -0.4], - [-0.546, -1.113], - [0, 0], - [0.401, -1.173], - [1.112, -0.546], - [0, 0], - [1.174, 0.401], - [0.546, 1.114], - [0, 0], - [-0.659, 1.925], - ], - v: [ - [29.023, 97.589], - [27.528, 97.34], - [-81.262, 60.195], - [-83.93, 57.849], - [-84.156, 54.302], - [-33.419, -94.294], - [-31.071, -96.961], - [-27.526, -97.186], - [81.262, -60.042], - [83.929, -57.695], - [84.154, -54.149], - [33.419, 94.448], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [84.806, 97.839], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 5, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [1.245, 0.425], - [0, 0], - [-0.425, 1.245], - [0, 0], - [-1.244, -0.425], - [0, 0], - [0.425, -1.245], - [0, 0], - ], - o: [ - [0, 0], - [-1.245, -0.425], - [0, 0], - [0.425, -1.245], - [0, 0], - [1.245, 0.425], - [0, 0], - [-0.425, 1.244], - ], - v: [ - [28.258, 95.124], - [-80.532, 57.979], - [-82.016, 54.956], - [-31.281, -93.641], - [-28.257, -95.125], - [80.532, -57.98], - [82.016, -54.957], - [31.28, 93.641], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [0.372549019608, 0.607843137255, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [84.806, 97.915], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 3, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 68, - op: 368, - st: 68, - bm: 0, - }, - { - ddd: 0, - ind: 16, - ty: 3, - nm: "Layer 12 Outlines 6", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 13, - s: [360], - }, - { t: 133, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 13, - s: [318.45, 739.698, 0], - to: [77, -535.667, 0], - ti: [45, -224.333, 0], - }, - { t: 133, s: [756.45, 729.698, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [75.522, 85.003, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 13, - s: [53.907, 53.907, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 73.201, - s: [100, 100, 100], - }, - { t: 133, s: [66.459, 66.459, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 13, - op: 313, - st: 13, - bm: 0, - }, - { - ddd: 0, - ind: 17, - ty: 4, - nm: "Layer 15 Outlines 3", - parent: 16, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [97.398, 86.2, 0], ix: 2 }, - a: { a: 0, k: [84.806, 97.839, 0], ix: 1 }, - s: { a: 0, k: [103.714, 103.714, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.01, 0], - [0.015, -0.045], - [0, 0], - [-0.054, -0.018], - [0, 0], - [0, 0], - [-0.017, 0.054], - [0, 0], - [0.054, 0.018], - [0, 0], - ], - o: [ - [-0.051, 0], - [0, 0], - [-0.019, 0.054], - [0, 0], - [0, 0], - [0.051, 0.017], - [0, 0], - [0.019, -0.055], - [0, 0], - [-0.011, -0.002], - ], - v: [ - [-29.016, -92.914], - [-29.141, -92.833], - [-79.878, 55.763], - [-79.803, 55.917], - [28.987, 93.062], - [28.989, 93.062], - [29.14, 92.987], - [79.877, -55.61], - [79.801, -55.764], - [-28.986, -92.909], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [1.93, 0], - [0.494, 0.169], - [0, 0], - [0.548, 1.113], - [-0.4, 1.173], - [0, 0], - [-1.114, 0.546], - [-1.175, -0.402], - [0, 0], - [-0.547, -1.112], - [0.402, -1.173], - [0, 0], - ], - o: [ - [-0.496, 0], - [0, 0], - [-1.173, -0.4], - [-0.546, -1.113], - [0, 0], - [0.401, -1.173], - [1.112, -0.546], - [0, 0], - [1.174, 0.401], - [0.546, 1.114], - [0, 0], - [-0.659, 1.925], - ], - v: [ - [29.023, 97.589], - [27.528, 97.34], - [-81.262, 60.195], - [-83.93, 57.849], - [-84.156, 54.302], - [-33.419, -94.294], - [-31.071, -96.961], - [-27.526, -97.186], - [81.262, -60.042], - [83.929, -57.695], - [84.154, -54.149], - [33.419, 94.448], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [84.806, 97.839], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 5, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [1.245, 0.425], - [0, 0], - [-0.425, 1.245], - [0, 0], - [-1.244, -0.425], - [0, 0], - [0.425, -1.245], - [0, 0], - ], - o: [ - [0, 0], - [-1.245, -0.425], - [0, 0], - [0.425, -1.245], - [0, 0], - [1.245, 0.425], - [0, 0], - [-0.425, 1.244], - ], - v: [ - [28.258, 95.124], - [-80.532, 57.979], - [-82.016, 54.956], - [-31.281, -93.641], - [-28.257, -95.125], - [80.532, -57.98], - [82.016, -54.957], - [31.28, 93.641], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [84.806, 97.915], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 3, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 13, - op: 313, - st: 13, - bm: 0, - }, - { - ddd: 0, - ind: 18, - ty: 3, - nm: "Layer 12 Outlines 3", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 97, - s: [360], - }, - { t: 217, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 97, - s: [318.45, 739.698, 0], - to: [77, -535.667, 0], - ti: [45, -224.333, 0], - }, - { t: 217, s: [756.45, 729.698, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [75.522, 85.003, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 97, - s: [53.907, 53.907, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 157.201, - s: [100, 100, 100], - }, - { t: 217, s: [66.459, 66.459, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 97, - op: 397, - st: 97, - bm: 0, - }, - { - ddd: 0, - ind: 19, - ty: 4, - nm: "Layer 15 Outlines", - parent: 18, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [97.398, 86.2, 0], ix: 2 }, - a: { a: 0, k: [84.806, 97.839, 0], ix: 1 }, - s: { a: 0, k: [103.714, 103.714, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.01, 0], - [0.015, -0.045], - [0, 0], - [-0.054, -0.018], - [0, 0], - [0, 0], - [-0.017, 0.054], - [0, 0], - [0.054, 0.018], - [0, 0], - ], - o: [ - [-0.051, 0], - [0, 0], - [-0.019, 0.054], - [0, 0], - [0, 0], - [0.051, 0.017], - [0, 0], - [0.019, -0.055], - [0, 0], - [-0.011, -0.002], - ], - v: [ - [-29.016, -92.914], - [-29.141, -92.833], - [-79.878, 55.763], - [-79.803, 55.917], - [28.987, 93.062], - [28.989, 93.062], - [29.14, 92.987], - [79.877, -55.61], - [79.801, -55.764], - [-28.986, -92.909], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [1.93, 0], - [0.494, 0.169], - [0, 0], - [0.548, 1.113], - [-0.4, 1.173], - [0, 0], - [-1.114, 0.546], - [-1.175, -0.402], - [0, 0], - [-0.547, -1.112], - [0.402, -1.173], - [0, 0], - ], - o: [ - [-0.496, 0], - [0, 0], - [-1.173, -0.4], - [-0.546, -1.113], - [0, 0], - [0.401, -1.173], - [1.112, -0.546], - [0, 0], - [1.174, 0.401], - [0.546, 1.114], - [0, 0], - [-0.659, 1.925], - ], - v: [ - [29.023, 97.589], - [27.528, 97.34], - [-81.262, 60.195], - [-83.93, 57.849], - [-84.156, 54.302], - [-33.419, -94.294], - [-31.071, -96.961], - [-27.526, -97.186], - [81.262, -60.042], - [83.929, -57.695], - [84.154, -54.149], - [33.419, 94.448], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [84.806, 97.839], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 5, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [1.245, 0.425], - [0, 0], - [-0.425, 1.245], - [0, 0], - [-1.244, -0.425], - [0, 0], - [0.425, -1.245], - [0, 0], - ], - o: [ - [0, 0], - [-1.245, -0.425], - [0, 0], - [0.425, -1.245], - [0, 0], - [1.245, 0.425], - [0, 0], - [-0.425, 1.244], - ], - v: [ - [28.258, 95.124], - [-80.532, 57.979], - [-82.016, 54.956], - [-31.281, -93.641], - [-28.257, -95.125], - [80.532, -57.98], - [82.016, -54.957], - [31.28, 93.641], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [84.806, 97.915], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 3, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 97, - op: 397, - st: 97, - bm: 0, - }, - { - ddd: 0, - ind: 20, - ty: 4, - nm: "Layer 5 Outlines", - parent: 5, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [105.839, 87.289, 0], ix: 2 }, - a: { a: 0, k: [105.823, 77.72, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [12.382, -0.026], - [0, 0], - [0.026, 12.382], - [0, 0], - [-12.382, 0.026], - [0, 0], - [-0.026, -12.382], - [0, 0], - ], - o: [ - [0, 0], - [-12.382, 0.026], - [0, 0], - [-0.026, -12.382], - [0, 0], - [12.381, -0.026], - [0, 0], - [0.026, 12.381], - ], - v: [ - [80.826, 74.871], - [-80.511, 75.21], - [-103.071, 52.745], - [-103.291, -52.312], - [-80.826, -74.871], - [80.511, -75.21], - [103.07, -52.745], - [103.291, 52.312], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [105.83, 77.72], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [11.149, 0], - [0, 0], - [0, 0], - [-0.024, -11.167], - [0, 0], - [-11.147, 0], - [0, 0], - [0, 0], - [-3.83, 3.844], - [0.012, 5.385], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - [-11.167, 0.024], - [0, 0], - [0.023, 11.152], - [0, 0], - [0, 0], - [5.385, -0.012], - [3.829, -3.846], - [0, 0], - [-0.022, -11.152], - ], - v: [ - [80.564, -72.951], - [80.523, -72.951], - [-80.814, -72.613], - [-101.023, -52.317], - [-100.804, 52.741], - [-80.552, 72.949], - [-80.508, 72.949], - [80.829, 72.611], - [95.118, 66.63], - [101.038, 52.316], - [100.817, -52.742], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - ], - o: [ - [0, 0], - [0, 0], - ], - v: [ - [80.833, 74.872], - [80.848, 74.872], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0.029, 13.643], - [0, 0], - [-13.661, 0.029], - [0, 0], - [0, 0], - [-0.028, -13.642], - [0, 0], - [4.681, -4.701], - [6.592, -0.014], - [0, 0], - ], - o: [ - [-13.636, 0.001], - [0, 0], - [-0.03, -13.659], - [0, 0], - [0, 0], - [13.639, 0], - [0, 0], - [0.015, 6.591], - [-4.682, 4.701], - [0, 0], - [0, 0], - ], - v: [ - [-80.552, 77.469], - [-105.324, 52.749], - [-105.543, -52.308], - [-80.823, -77.132], - [80.514, -77.471], - [80.564, -77.471], - [105.337, -52.749], - [105.558, 52.308], - [98.321, 69.818], - [80.838, 77.13], - [-80.499, 77.469], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [105.823, 77.721], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 6, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [12.382, -0.026], - [0, 0], - [0.026, 12.382], - [0, 0], - [-12.382, 0.026], - [0, 0], - [-0.026, -12.382], - [0, 0], - ], - o: [ - [0, 0], - [-12.382, 0.026], - [0, 0], - [-0.026, -12.382], - [0, 0], - [12.381, -0.026], - [0, 0], - [0.026, 12.381], - ], - v: [ - [80.826, 74.871], - [-80.511, 75.21], - [-103.071, 52.745], - [-103.291, -52.312], - [-80.826, -74.871], - [80.511, -75.21], - [103.07, -52.745], - [103.291, 52.312], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.238999998803, 0.522000002394, 0.991999966491, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [105.83, 77.721], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 3, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 21, - ty: 4, - nm: "Layer 18 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 0, - s: [-1080], - }, - { t: 299, s: [0] }, - ], - ix: 10, - }, - p: { a: 0, k: [600.604, 632.19, 0], ix: 2 }, - a: { a: 0, k: [81.813, 80.779, 0], ix: 1 }, - s: { a: 0, k: [102.092, 102.092, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [5.953, 0], - [4.966, -1.898], - [4.768, -10.515], - [-3.977, -10.766], - [-10.384, -4.711], - [-9.843, 21.698], - [21.442, 9.727], - ], - o: [ - [-5.142, 0], - [-10.721, 4.1], - [-4.772, 10.514], - [3.974, 10.761], - [21.447, 9.733], - [9.844, -21.7], - [-5.572, -2.529], - ], - v: [ - [0.4, -42.968], - [-14.866, -40.124], - [-38.887, -17.461], - [-40.119, 15.541], - [-17.853, 39.535], - [38.889, 17.825], - [17.854, -39.171], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [17.499, 0], - [6.047, 2.743], - [4.255, 11.522], - [-5.099, 11.24], - [-11.467, 4.384], - [-11.122, -5.042], - [10.53, -23.214], - ], - o: [ - [-6.259, 0], - [-11.125, -5.047], - [-4.254, -11.517], - [5.101, -11.242], - [11.471, -4.387], - [22.957, 10.415], - [-7.757, 17.097], - ], - v: [ - [-0.449, 46.321], - [-19.097, 42.28], - [-42.945, 16.586], - [-41.633, -18.705], - [-15.941, -42.937], - [19.098, -41.916], - [41.634, 19.07], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [-2.27, -1.03], - [-2.339, 0.896], - [1.801, 4.875], - [0, 0], - [0, 0], - [-4.92, 7.167], - [0, 0], - [0, 0], - [-2.161, 4.753], - [4.692, 2.127], - [0, 0], - [0, 0], - [1.522, 8.538], - [0, 0], - [0, 0], - [1.801, 4.874], - [2.27, 1.03], - [2.344, -0.894], - [0, 0], - [0, 0], - [7.065, 4.888], - [0, 0], - [0, 0], - [0.872, 2.36], - [2.27, 1.028], - [2.158, -4.755], - [0, 0], - [0, 0], - [8.482, -1.607], - [0, 0], - [0, 0], - [2.272, 1.03], - [2.344, -0.896], - [-1.802, -4.876], - [0, 0], - [0, 0], - [4.918, -7.167], - [0, 0], - [0, 0], - [2.346, -0.897], - [1.046, -2.307], - [-4.692, -2.129], - [0, 0], - [0, 0], - [-1.521, -8.538], - [0, 0], - [0, 0], - [-1.802, -4.875], - [-2.27, -1.03], - [-2.34, 0.894], - [0, 0], - [0, 0], - [-7.068, -4.891], - [0, 0], - [0, 0], - [-4.692, -2.13], - [-2.343, 0.897], - [-1.046, 2.307], - [0, 0], - [0, 0], - [-8.48, 1.604], - ], - o: [ - [0, 0], - [0.868, 2.354], - [2.27, 1.033], - [4.854, -1.857], - [0, 0], - [0, 0], - [7.424, -4.477], - [0, 0], - [0, 0], - [4.689, 2.132], - [2.157, -4.755], - [0, 0], - [0, 0], - [2.153, -8.419], - [0, 0], - [0, 0], - [4.854, -1.857], - [-0.868, -2.354], - [-2.269, -1.031], - [0, 0], - [0, 0], - [-4.379, -7.442], - [0, 0], - [0, 0], - [1.048, -2.307], - [-0.87, -2.354], - [-4.692, -2.133], - [0, 0], - [0, 0], - [-8.334, -2.096], - [0, 0], - [0, 0], - [-0.869, -2.354], - [-2.267, -1.029], - [-4.855, 1.857], - [0, 0], - [0, 0], - [-7.427, 4.477], - [0, 0], - [0, 0], - [-2.272, -1.032], - [-2.349, 0.899], - [-2.157, 4.755], - [0, 0], - [0, 0], - [-2.154, 8.419], - [0, 0], - [0, 0], - [-4.855, 1.856], - [0.868, 2.354], - [2.273, 1.03], - [0, 0], - [0, 0], - [4.374, 7.439], - [0, 0], - [0, 0], - [-2.158, 4.755], - [2.274, 1.03], - [2.349, -0.899], - [0, 0], - [0, 0], - [8.332, 2.095], - [0, 0], - ], - v: [ - [11.723, 59.076], - [16.287, 71.435], - [21.155, 76.683], - [28.31, 76.892], - [33.848, 64.683], - [29.294, 52.35], - [30.361, 51.707], - [48.964, 34.16], - [49.677, 33.119], - [61.604, 38.527], - [74.027, 33.765], - [69.428, 21.281], - [57.503, 15.87], - [57.817, 14.646], - [58.768, -10.909], - [58.549, -12.136], - [70.828, -16.831], - [76.366, -29.038], - [71.498, -34.286], - [64.343, -34.493], - [52.037, -29.787], - [51.39, -30.886], - [34.145, -49.468], - [33.111, -50.183], - [38.575, -62.228], - [38.846, -69.466], - [33.978, -74.712], - [21.554, -69.95], - [16.091, -57.904], - [14.871, -58.212], - [-10.468, -58.95], - [-11.722, -58.714], - [-16.286, -71.072], - [-21.156, -76.32], - [-28.309, -76.528], - [-33.847, -64.319], - [-29.293, -51.987], - [-30.36, -51.344], - [-48.963, -33.796], - [-49.676, -32.754], - [-61.602, -38.164], - [-68.759, -38.372], - [-74.024, -33.402], - [-69.428, -20.915], - [-57.502, -15.507], - [-57.815, -14.283], - [-58.767, 11.272], - [-58.548, 12.499], - [-70.827, 17.194], - [-76.365, 29.402], - [-71.498, 34.65], - [-64.343, 34.858], - [-52.036, 30.151], - [-51.389, 31.25], - [-34.144, 49.831], - [-33.11, 50.546], - [-38.574, 62.593], - [-33.978, 75.078], - [-26.821, 75.284], - [-21.556, 70.314], - [-16.09, 58.269], - [-14.87, 58.576], - [10.469, 59.313], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 3, - ty: "sh", - ix: 4, - ks: { - a: 0, - k: { - i: [ - [1.489, 0], - [1.617, 0.734], - [1.151, 3.114], - [0, 0], - [7.956, 1.83], - [0, 0], - [3.096, -1.185], - [3.01, 1.365], - [-2.843, 6.268], - [0, 0], - [4.296, 6.98], - [0, 0], - [3.011, 1.366], - [1.151, 3.115], - [-6.388, 2.442], - [0, 0], - [-1.892, 8.041], - [0, 0], - [-2.842, 6.27], - [-3.096, 1.184], - [-3.01, -1.365], - [0, 0], - [-6.978, 4.392], - [0, 0], - [-6.388, 2.444], - [-3.007, -1.365], - [-1.152, -3.116], - [0, 0], - [-7.96, -1.834], - [0, 0], - [-6.201, -2.817], - [-1.152, -3.115], - [1.375, -3.033], - [0, 0], - [-4.299, -6.982], - [0, 0], - [-3.01, -1.365], - [-1.15, -3.114], - [6.389, -2.441], - [0, 0], - [1.891, -8.04], - [0, 0], - [2.842, -6.267], - [6.204, 2.819], - [0, 0], - [6.975, -4.392], - [0, 0], - [6.387, -2.442], - ], - o: [ - [-1.725, 0], - [-3.009, -1.365], - [0, 0], - [-8.085, 1.362], - [0, 0], - [-1.377, 3.033], - [-3.098, 1.184], - [-6.205, -2.816], - [0, 0], - [-6.622, -4.782], - [0, 0], - [-3.103, 1.187], - [-3.009, -1.365], - [-2.37, -6.418], - [0, 0], - [-1.29, -8.143], - [0, 0], - [-6.204, -2.816], - [1.377, -3.033], - [3.098, -1.185], - [0, 0], - [4.806, -6.719], - [0, 0], - [-2.37, -6.418], - [3.105, -1.187], - [3.01, 1.364], - [0, 0], - [8.08, -1.364], - [0, 0], - [2.844, -6.268], - [3.009, 1.364], - [1.147, 3.11], - [0, 0], - [6.619, 4.78], - [0, 0], - [3.103, -1.187], - [3.011, 1.365], - [2.369, 6.417], - [0, 0], - [1.29, 8.145], - [0, 0], - [6.206, 2.815], - [-2.846, 6.269], - [0, 0], - [-4.807, 6.719], - [0, 0], - [2.368, 6.416], - [-1.436, 0.55], - ], - v: [ - [24.969, 80.529], - [19.909, 79.427], - [13.459, 72.48], - [9.774, 62.499], - [-14.38, 61.794], - [-18.81, 71.559], - [-25.746, 78.099], - [-35.222, 77.822], - [-41.319, 61.348], - [-36.888, 51.582], - [-53.328, 33.872], - [-63.266, 37.671], - [-72.743, 37.394], - [-79.193, 30.447], - [-71.904, 14.381], - [-61.941, 10.57], - [-61.036, -13.801], - [-70.673, -18.171], - [-76.77, -34.647], - [-69.834, -41.186], - [-60.358, -40.91], - [-50.721, -36.537], - [-32.979, -53.27], - [-36.675, -63.274], - [-29.386, -79.342], - [-19.911, -79.064], - [-13.458, -72.117], - [-9.772, -62.136], - [14.382, -61.43], - [18.811, -71.194], - [35.222, -77.456], - [41.674, -70.51], - [41.321, -60.984], - [36.889, -51.219], - [53.329, -33.508], - [63.266, -37.307], - [72.742, -37.03], - [79.194, -30.083], - [71.905, -14.018], - [61.942, -10.207], - [61.037, 14.164], - [70.672, 18.537], - [76.771, 35.009], - [60.359, 41.271], - [50.722, 36.902], - [32.98, 53.633], - [36.676, 63.639], - [29.387, 79.705], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 4", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [81.813, 80.779], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 7, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 22, - ty: 4, - nm: "Layer 19 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 0, - s: [1080], - }, - { t: 299, s: [0] }, - ], - ix: 10, - }, - p: { a: 0, k: [524.181, 745.808, 0], ix: 2 }, - a: { a: 0, k: [68.121, 68.168, 0], ix: 1 }, - s: { a: 0, k: [102.092, 102.092, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [13.547, 0], - [4.88, -2.231], - [-8.139, -17.801], - [-18.013, 8.234], - [-3.382, 8.922], - [3.942, 8.62], - ], - o: [ - [-5.032, 0], - [-18.016, 8.237], - [8.14, 17.802], - [8.73, -3.992], - [3.38, -8.917], - [-5.935, -12.979], - ], - v: [ - [0.269, -34.893], - [-14.76, -31.605], - [-32.671, 15.617], - [14.761, 32.962], - [33.543, 12.936], - [32.672, -14.259], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [5.451, 0], - [6.44, 14.085], - [-19.525, 8.928], - [-8.828, -19.311], - [3.666, -9.676], - [9.456, -4.322], - ], - o: [ - [-14.691, 0], - [-8.83, -19.312], - [19.53, -8.929], - [4.278, 9.358], - [-3.665, 9.668], - [-5.284, 2.416], - ], - v: [ - [-0.265, 39.262], - [-35.411, 16.87], - [-16.014, -34.345], - [35.412, -15.512], - [36.361, 14.004], - [16.014, 35.701], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [-6.206, -3.626], - [0, 0], - [0, 0], - [-0.841, -1.838], - [-1.91, -0.699], - [-1.494, 3.94], - [0, 0], - [0, 0], - [-7.011, 1.814], - [0, 0], - [0, 0], - [-1.911, -0.698], - [-1.87, 0.853], - [-0.724, 1.909], - [0.84, 1.837], - [0, 0], - [0, 0], - [-3.712, 6.195], - [0, 0], - [0, 0], - [-1.492, 3.94], - [0.838, 1.838], - [1.911, 0.699], - [0, 0], - [0, 0], - [1.765, 6.936], - [0, 0], - [0, 0], - [-0.724, 1.908], - [0.84, 1.837], - [1.911, 0.698], - [1.871, -0.855], - [0, 0], - [0, 0], - [6.207, 3.628], - [0, 0], - [0, 0], - [0.84, 1.837], - [1.912, 0.699], - [1.492, -3.943], - [0, 0], - [0, 0], - [7.008, -1.813], - [0, 0], - [0, 0], - [3.851, -1.764], - [0.723, -1.909], - [-0.84, -1.837], - [0, 0], - [0, 0], - [3.711, -6.196], - [0, 0], - [0, 0], - [1.492, -3.944], - [-0.842, -1.837], - [-1.909, -0.699], - [0, 0], - [0, 0], - [-1.766, -6.935], - [0, 0], - [0, 0], - [0.724, -1.909], - [-0.84, -1.837], - [-3.85, 1.757], - ], - o: [ - [0, 0], - [4.09, 5.873], - [0, 0], - [0, 0], - [-0.723, 1.902], - [0.84, 1.836], - [3.956, 1.451], - [0, 0], - [0, 0], - [7.112, 1.247], - [0, 0], - [0, 0], - [0.84, 1.838], - [1.916, 0.702], - [1.869, -0.855], - [0.721, -1.903], - [0, 0], - [0, 0], - [5.957, -4.113], - [0, 0], - [0, 0], - [3.956, 1.452], - [0.723, -1.903], - [-0.84, -1.838], - [0, 0], - [0, 0], - [1.317, -7.067], - [0, 0], - [0, 0], - [1.87, -0.855], - [0.721, -1.903], - [-0.84, -1.838], - [-1.914, -0.702], - [0, 0], - [0, 0], - [-4.09, -5.872], - [0, 0], - [0, 0], - [0.721, -1.902], - [-0.84, -1.838], - [-3.956, -1.452], - [0, 0], - [0, 0], - [-7.112, -1.251], - [0, 0], - [0, 0], - [-1.737, -3.797], - [-1.87, 0.855], - [-0.721, 1.902], - [0, 0], - [0, 0], - [-5.959, 4.114], - [0, 0], - [0, 0], - [-3.959, -1.451], - [-0.722, 1.903], - [0.84, 1.837], - [0, 0], - [0, 0], - [-1.318, 7.067], - [0, 0], - [0, 0], - [-1.869, 0.854], - [-0.721, 1.903], - [1.738, 3.8], - [0, 0], - ], - v: [ - [-41.989, 28.208], - [-41.271, 29.241], - [-25.753, 43.555], - [-24.654, 44.199], - [-28.634, 54.706], - [-28.449, 60.507], - [-24.185, 64.438], - [-14.294, 59.917], - [-10.323, 49.437], - [-9.096, 49.652], - [12.188, 48.797], - [13.41, 48.479], - [18.054, 58.635], - [22.319, 62.568], - [28.189, 62.333], - [32.209, 58.047], - [32.025, 52.248], - [27.382, 42.092], - [28.42, 41.374], - [42.992, 25.838], - [43.632, 24.768], - [54.156, 28.62], - [64.044, 24.099], - [63.862, 18.299], - [59.595, 14.365], - [49.045, 10.504], - [49.277, 9.251], - [48.602, -11.852], - [48.291, -13.072], - [58.545, -17.759], - [62.566, -22.043], - [62.38, -27.843], - [58.115, -31.777], - [52.245, -31.54], - [41.99, -26.85], - [41.272, -27.883], - [25.753, -42.2], - [24.652, -42.843], - [28.635, -53.35], - [28.451, -59.147], - [24.184, -63.082], - [14.296, -58.559], - [10.322, -48.08], - [9.095, -48.295], - [-12.187, -47.44], - [-13.409, -47.124], - [-18.053, -57.279], - [-28.188, -60.975], - [-32.209, -56.69], - [-32.024, -50.891], - [-27.381, -40.736], - [-28.419, -40.018], - [-42.991, -24.481], - [-43.631, -23.412], - [-54.155, -27.262], - [-64.045, -22.742], - [-63.859, -16.94], - [-59.596, -13.008], - [-49.045, -9.146], - [-49.278, -7.893], - [-48.602, 13.208], - [-48.292, 14.428], - [-58.545, 19.116], - [-62.565, 23.4], - [-62.381, 29.2], - [-52.245, 32.896], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 3, - ty: "sh", - ix: 4, - ks: { - a: 0, - k: { - i: [ - [4.345, 0], - [1.207, 0.441], - [1.177, 2.575], - [-1.008, 2.663], - [0, 0], - [3.975, 5.43], - [0, 0], - [2.427, 5.311], - [-1.009, 2.662], - [-2.593, 1.186], - [0, 0], - [-1.078, 6.668], - [0, 0], - [1.177, 2.575], - [-1.007, 2.663], - [-5.503, -2.012], - [0, 0], - [-5.513, 3.999], - [0, 0], - [-1.008, 2.661], - [-2.595, 1.186], - [-2.429, -5.312], - [0, 0], - [-6.719, -1.02], - [0, 0], - [-5.501, -2.006], - [-1.177, -2.575], - [1.008, -2.662], - [0, 0], - [-3.976, -5.428], - [0, 0], - [-2.669, -0.977], - [-1.177, -2.574], - [1.008, -2.662], - [2.595, -1.185], - [0, 0], - [1.079, -6.667], - [0, 0], - [-1.177, -2.576], - [1.009, -2.66], - [5.504, 2.006], - [0, 0], - [5.513, -3.999], - [0, 0], - [1.01, -2.662], - [2.594, -1.186], - [2.665, 0.975], - [1.177, 2.575], - [0, 0], - [6.72, 1.018], - [0, 0], - ], - o: [ - [-1.22, 0], - [-2.672, -0.979], - [-1.178, -2.576], - [0, 0], - [-5.749, -3.545], - [0, 0], - [-5.36, 2.454], - [-1.179, -2.575], - [1.006, -2.656], - [0, 0], - [-1.505, -6.559], - [0, 0], - [-2.672, -0.978], - [-1.179, -2.576], - [2.078, -5.477], - [0, 0], - [3.624, -5.748], - [0, 0], - [-1.178, -2.576], - [1.006, -2.655], - [5.358, -2.456], - [0, 0], - [6.629, -1.552], - [0, 0], - [2.074, -5.481], - [2.674, 0.978], - [1.178, 2.576], - [0, 0], - [5.749, 3.547], - [0, 0], - [2.594, -1.189], - [2.672, 0.979], - [1.178, 2.576], - [-1.006, 2.654], - [0, 0], - [1.505, 6.561], - [0, 0], - [2.673, 0.98], - [1.177, 2.576], - [-2.075, 5.477], - [0, 0], - [-3.625, 5.748], - [0, 0], - [1.179, 2.575], - [-1.006, 2.656], - [-2.598, 1.187], - [-2.672, -0.979], - [0, 0], - [-6.63, 1.555], - [0, 0], - [-1.623, 4.277], - ], - v: [ - [-21.559, 67.919], - [-25.221, 67.269], - [-31.19, 61.76], - [-31.453, 53.637], - [-28.369, 45.499], - [-43.01, 31.988], - [-50.992, 35.636], - [-65.12, 30.452], - [-65.382, 22.333], - [-59.799, 16.376], - [-51.819, 12.727], - [-52.46, -7.188], - [-60.631, -10.178], - [-66.6, -15.686], - [-66.864, -23.809], - [-53.119, -30.093], - [-44.921, -27.093], - [-31.165, -41.768], - [-34.764, -49.637], - [-35.027, -57.758], - [-29.442, -63.714], - [-15.313, -58.532], - [-11.713, -50.66], - [8.383, -51.464], - [11.479, -59.627], - [25.22, -65.912], - [31.191, -60.401], - [31.454, -52.281], - [28.369, -44.143], - [43.011, -30.631], - [50.991, -34.28], - [59.151, -34.607], - [65.12, -29.097], - [65.383, -20.975], - [59.798, -15.02], - [51.818, -11.371], - [52.459, 8.544], - [60.631, 11.534], - [66.601, 17.047], - [66.862, 25.167], - [53.12, 31.451], - [44.922, 28.449], - [31.166, 43.124], - [34.764, 50.995], - [35.026, 59.115], - [29.443, 65.072], - [21.283, 65.399], - [15.314, 59.889], - [11.714, 52.016], - [-8.384, 52.822], - [-11.476, 60.985], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 4", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [68.121, 68.169], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 7, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 23, - ty: 4, - nm: "Layer 20 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 0, - s: [1080], - }, - { t: 299, s: [0] }, - ], - ix: 10, - }, - p: { a: 0, k: [476.665, 634.427, 0], ix: 2 }, - a: { a: 0, k: [56.471, 56.458, 0], ix: 1 }, - s: { a: 0, k: [102.092, 102.092, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [7.225, 0], - [0.153, -0.003], - [5.21, -5.32], - [-10.847, -10.624], - [-7.408, 0.077], - [-5.211, 5.321], - [0, 0], - [0.034, 7.402], - [5.252, 5.143], - ], - o: [ - [-0.152, 0], - [-7.402, 0.12], - [-10.754, 10.977], - [5.25, 5.145], - [7.4, -0.119], - [0, 0], - [5.211, -5.319], - [-0.033, -7.397], - [-5.143, -5.039], - ], - v: [ - [0.345, -27.706], - [-0.111, -27.701], - [-19.67, -19.266], - [-19.502, 19.907], - [0.11, 27.702], - [19.667, 19.266], - [19.669, 19.266], - [27.697, -0.462], - [19.5, -19.908], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [0.17, 0], - [5.713, 5.594], - [-11.915, 12.165], - [-8.2, 0.133], - [-5.83, -5.71], - [-0.039, -8.207], - [5.771, -5.891], - [8.2, -0.131], - ], - o: [ - [-8.018, 0], - [-12.032, -11.788], - [5.77, -5.889], - [8.259, -0.159], - [5.831, 5.713], - [0.038, 8.202], - [-5.769, 5.891], - [-0.168, 0.003], - ], - v: [ - [-0.35, 30.718], - [-21.612, 22.061], - [-21.824, -21.377], - [-0.16, -30.714], - [21.609, -22.062], - [30.711, -0.477], - [21.82, 21.376], - [0.157, 30.714], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 2, - ty: "sh", - ix: 3, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [0, 0], - [-5.523, -0.901], - [0, 0], - [0, 0], - [-1.069, -1.048], - [-1.474, 0], - [-0.031, 0], - [0.015, 3.131], - [0, 0], - [0, 0], - [-4.588, 3.275], - [0, 0], - [0, 0], - [-1.517, 0.056], - [-1.068, 1.09], - [2.214, 2.17], - [0, 0], - [0, 0], - [-0.966, 5.539], - [0, 0], - [0, 0], - [0.015, 3.132], - [1.07, 1.049], - [1.474, 0], - [0.031, 0], - [0, 0], - [0, 0], - [3.22, 4.546], - [0, 0], - [0, 0], - [2.214, 2.168], - [1.533, -0.097], - [1.068, -1.09], - [0, 0], - [0, 0], - [0, 0], - [5.522, 0.902], - [0, 0], - [0, 0], - [1.069, 1.049], - [1.475, 0], - [0.031, 0], - [-0.015, -3.131], - [0, 0], - [0, 0], - [4.586, -3.276], - [0, 0], - [0, 0], - [1.515, -0.031], - [1.068, -1.09], - [-0.007, -1.517], - [-1.07, -1.047], - [0, 0], - [0, 0], - [0.965, -5.537], - [0, 0], - [0, 0], - [-0.015, -3.131], - [-1.07, -1.047], - [-1.528, -0.006], - [0, 0], - [0, 0], - [-3.217, -4.543], - [0, 0], - [0, 0], - [-0.007, -1.516], - [-1.07, -1.048], - [-1.536, 0.051], - [-1.07, 1.092], - ], - o: [ - [0, 0], - [4.609, 3.125], - [0, 0], - [0, 0], - [0.007, 1.509], - [1.048, 1.027], - [0.032, 0], - [3.131, -0.05], - [0, 0], - [0, 0], - [5.516, -1.08], - [0, 0], - [0, 0], - [1.071, 1.049], - [1.516, -0.024], - [2.201, -2.247], - [0, 0], - [0, 0], - [3.178, -4.651], - [0, 0], - [0, 0], - [3.132, -0.05], - [-0.007, -1.51], - [-1.047, -1.025], - [-0.032, 0], - [0, 0], - [0, 0], - [-1.015, -5.501], - [0, 0], - [0, 0], - [2.201, -2.247], - [-1.069, -1.05], - [-1.516, 0.024], - [0, 0], - [0, 0], - [0, 0], - [-4.609, -3.123], - [0, 0], - [0, 0], - [-0.007, -1.51], - [-1.048, -1.026], - [-0.032, 0], - [-3.131, 0.05], - [0, 0], - [0, 0], - [-5.516, 1.08], - [0, 0], - [0, 0], - [-1.069, -1.048], - [-1.516, 0.025], - [-1.069, 1.092], - [0.006, 1.51], - [0, 0], - [0, 0], - [-3.179, 4.652], - [0, 0], - [0, 0], - [-3.13, 0.052], - [0.007, 1.509], - [1.068, 1.049], - [0, 0], - [0, 0], - [1.017, 5.502], - [0, 0], - [0, 0], - [-1.069, 1.09], - [0.006, 1.509], - [1.069, 1.05], - [1.516, -0.024], - [0, 0], - ], - v: [ - [-23.054, 31.567], - [-22.013, 32.273], - [-6.744, 38.339], - [-5.486, 38.545], - [-5.444, 47.639], - [-3.775, 51.604], - [0.133, 53.193], - [0.227, 53.192], - [5.88, 47.423], - [5.837, 38.359], - [7.06, 38.119], - [22.285, 31.555], - [23.311, 30.821], - [29.766, 37.143], - [33.766, 38.731], - [37.773, 37.002], - [37.749, 28.993], - [31.295, 22.673], - [32.008, 21.63], - [38.255, 6.273], - [38.47, 5.045], - [47.532, 4.899], - [53.184, -0.87], - [51.514, -4.839], - [47.608, -6.428], - [47.514, -6.426], - [38.423, -6.279], - [38.192, -7.533], - [31.81, -22.674], - [31.083, -23.701], - [37.464, -30.215], - [37.44, -38.223], - [33.44, -39.812], - [29.434, -38.083], - [29.434, -38.081], - [23.051, -31.568], - [22.01, -32.273], - [6.742, -38.339], - [5.484, -38.546], - [5.441, -47.637], - [3.772, -51.605], - [-0.135, -53.193], - [-0.229, -53.193], - [-5.881, -47.421], - [-5.84, -38.36], - [-7.063, -38.119], - [-22.288, -31.555], - [-23.315, -30.821], - [-29.771, -37.144], - [-33.769, -38.731], - [-37.776, -37.003], - [-39.422, -32.96], - [-37.752, -28.994], - [-31.296, -22.671], - [-32.01, -21.628], - [-38.257, -6.271], - [-38.472, -5.046], - [-47.535, -4.9], - [-53.187, 0.872], - [-51.517, 4.837], - [-47.516, 6.426], - [-38.427, 6.281], - [-38.195, 7.535], - [-31.813, 22.674], - [-31.086, 23.7], - [-37.467, 30.215], - [-39.113, 34.257], - [-37.443, 38.222], - [-33.443, 39.811], - [-29.435, 38.083], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 3", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 3, - ty: "sh", - ix: 4, - ks: { - a: 0, - k: { - i: [ - [0.047, 0], - [1.617, 1.583], - [0.011, 2.319], - [0, 0], - [4.342, 2.755], - [0, 0], - [2.313, -0.037], - [1.65, 1.617], - [0.01, 2.321], - [-1.625, 1.661], - [0, 0], - [1.091, 5.045], - [0, 0], - [1.651, 1.615], - [0.01, 2.318], - [-4.773, 0.078], - [0, 0], - [-2.811, 4.382], - [0, 0], - [0.01, 2.322], - [-1.627, 1.661], - [-2.314, 0.038], - [-1.649, -1.616], - [0, 0], - [-5.067, 1.147], - [0, 0], - [-4.774, 0.077], - [-1.649, -1.616], - [-0.011, -2.32], - [0, 0], - [-4.342, -2.754], - [0, 0], - [0, 0], - [-2.314, 0.037], - [-1.652, -1.617], - [3.361, -3.434], - [0, 0], - [-1.089, -5.044], - [0, 0], - [-1.648, -1.616], - [-0.011, -2.32], - [4.775, -0.077], - [0, 0], - [2.809, -4.381], - [0, 0], - [3.364, -3.432], - [2.314, -0.037], - [1.65, 1.619], - [0, 0], - [5.066, -1.146], - [0, 0], - [4.775, -0.076], - ], - o: [ - [-2.269, 0], - [-1.65, -1.617], - [0, 0], - [-5.069, -0.986], - [0, 0], - [-1.628, 1.661], - [-2.39, 0.076], - [-1.649, -1.615], - [-0.011, -2.313], - [0, 0], - [-2.843, -4.283], - [0, 0], - [-2.282, -0.009], - [-1.65, -1.617], - [-0.021, -4.775], - [0, 0], - [1.041, -5.088], - [0, 0], - [-1.65, -1.617], - [-0.011, -2.314], - [1.626, -1.661], - [2.379, -0.009], - [0, 0], - [4.322, -2.901], - [0, 0], - [-0.02, -4.776], - [2.341, -0.002], - [1.651, 1.615], - [0, 0], - [5.067, 0.986], - [0, 0], - [0, 0], - [1.627, -1.662], - [2.328, -0.073], - [3.4, 3.333], - [0, 0], - [2.844, 4.286], - [0, 0], - [2.362, 0.019], - [1.65, 1.615], - [0.023, 4.774], - [0, 0], - [-1.043, 5.089], - [0, 0], - [3.402, 3.334], - [-1.626, 1.661], - [-2.307, 0.059], - [0, 0], - [-4.324, 2.9], - [0, 0], - [0.021, 4.776], - [-0.047, 0], - ], - v: [ - [0.133, 56.208], - [-5.884, 53.755], - [-8.458, 47.652], - [-8.487, 41.089], - [-22.65, 35.459], - [-27.283, 40.191], - [-33.394, 42.824], - [-39.552, 40.374], - [-42.126, 34.27], - [-39.621, 28.107], - [-34.986, 23.376], - [-40.907, 9.335], - [-47.468, 9.439], - [-53.627, 6.99], - [-56.2, 0.887], - [-47.583, -7.913], - [-40.993, -8.019], - [-35.196, -22.273], - [-39.86, -26.84], - [-42.435, -32.947], - [-39.928, -39.111], - [-33.818, -41.744], - [-27.661, -39.295], - [-22.998, -34.727], - [-8.865, -40.818], - [-8.895, -47.408], - [-0.276, -56.206], - [5.88, -53.756], - [8.455, -47.652], - [8.486, -41.089], - [22.647, -35.46], - [27.28, -40.191], - [27.28, -40.189], - [33.391, -42.825], - [39.55, -40.377], - [39.618, -28.107], - [34.983, -23.376], - [40.904, -9.334], - [47.466, -9.439], - [53.623, -6.99], - [56.198, -0.886], - [47.579, 7.912], - [40.992, 8.018], - [35.195, 22.273], - [39.857, 26.84], - [39.925, 39.11], - [33.815, 41.744], - [27.658, 39.294], - [22.995, 34.727], - [8.862, 40.818], - [8.893, 47.407], - [0.274, 56.205], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 4", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [56.471, 56.458], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 7, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 24, - ty: 4, - nm: "Layer 21 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [-16.5] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [17.383] }, - t: 150, - s: [0], - }, - { t: 299, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 0.854 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [937.859, 643.802, 0], - to: [-3.706, -0.549, 0], - ti: [10.259, 1.52, 0], - }, - { - i: { x: 0.667, y: 0.888 }, - o: { x: 0.333, y: 0.112 }, - t: 69, - s: [942.084, 696.28, 0], - to: [-14.655, -2.171, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 0.875 }, - o: { x: 0.333, y: 0.125 }, - t: 150, - s: [883.859, 635.802, 0], - to: [0, 0, 0], - ti: [-14.739, -2.184, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0.11 }, - t: 231, - s: [924.375, 574.323, 0], - to: [10.153, 1.504, 0], - ti: [-3.671, -0.544, 0], - }, - { t: 299, s: [937.859, 643.802, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [8.854, 8.854, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [0.028, 0.028, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [100, 100, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [-0.966, -0.966, 0] }, - t: 150, - s: [136, 136, 100], - }, - { t: 299, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -4.752], - [4.752, 0], - [0, 4.752], - [-4.752, 0], - ], - o: [ - [0, 4.752], - [-4.752, 0], - [0, -4.752], - [4.752, 0], - ], - v: [ - [8.604, 0], - [0, 8.604], - [-8.604, 0], - [0, -8.604], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [8.854, 8.854], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 25, - ty: 4, - nm: "Layer 22 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [-16.5] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [17.383] }, - t: 150, - s: [0], - }, - { t: 299, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 0.835 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [868.658, 585.792, 0], - to: [2.333, -3.157, 0], - ti: [-6.459, 8.739, 0], - }, - { - i: { x: 0.667, y: 0.834 }, - o: { x: 0.333, y: 0.166 }, - t: 69, - s: [847.628, 543.538, 0], - to: [9.227, -12.484, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 0.847 }, - o: { x: 0.333, y: 0.153 }, - t: 150, - s: [902.658, 539.792, 0], - to: [0, 0, 0], - ti: [9.28, -12.555, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0.091 }, - t: 231, - s: [861.444, 499.786, 0], - to: [-6.393, 8.649, 0], - ti: [2.311, -3.127, 0], - }, - { t: 299, s: [868.658, 585.792, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [4.922, 4.921, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [0.028, 0.028, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [100, 100, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [-0.966, -0.966, 0] }, - t: 150, - s: [136, 136, 100], - }, - { t: 299, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -2.58], - [2.58, 0], - [0, 2.58], - [-2.58, 0], - ], - o: [ - [0, 2.58], - [-2.58, 0], - [0, -2.58], - [2.58, 0], - ], - v: [ - [4.672, 0], - [0, 4.671], - [-4.672, 0], - [0, -4.671], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [4.921, 4.921], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 26, - ty: 4, - nm: "Layer 23 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [-16.5] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [17.383] }, - t: 150, - s: [0], - }, - { t: 299, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 0.875 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [838.774, 417.517, 0], - to: [0, 3.432, 0], - ti: [0, -9.499, 0], - }, - { - i: { x: 0.667, y: 0.801 }, - o: { x: 0.333, y: 0.199 }, - t: 69, - s: [882.774, 463.532, 0], - to: [0, 13.569, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 0.888 }, - o: { x: 0.333, y: 0.112 }, - t: 150, - s: [838.774, 467.517, 0], - to: [0, 0, 0], - ti: [0, 13.647, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0.1 }, - t: 231, - s: [762.774, 435.262, 0], - to: [0, -9.401, 0], - ti: [0, 3.399, 0], - }, - { t: 299, s: [838.774, 417.517, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [4.921, 4.922, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [0.028, 0.028, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [100, 100, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [-0.966, -0.966, 0] }, - t: 150, - s: [136, 136, 100], - }, - { t: 299, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -2.58], - [2.58, 0], - [0, 2.58], - [-2.58, 0], - ], - o: [ - [0, 2.58], - [-2.58, 0], - [0, -2.58], - [2.58, 0], - ], - v: [ - [4.672, -0.001], - [0, 4.672], - [-4.672, -0.001], - [0, -4.672], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.238999998803, 0.522000002394, 0.991999966491, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [4.921, 4.922], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 27, - ty: 4, - nm: "Layer 24 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [0.682] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [-0.316] }, - t: 150, - s: [55], - }, - { t: 299, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 0.778 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [743.514, 409.106, 0], - to: [2.058, -1.921, 0], - ti: [-5.697, 5.317, 0], - }, - { - i: { x: 0.667, y: 0.821 }, - o: { x: 0.333, y: 0.179 }, - t: 69, - s: [768.716, 432.784, 0], - to: [8.143, -7.6, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 0.9 }, - o: { x: 0.333, y: 0.1 }, - t: 150, - s: [773.514, 381.106, 0], - to: [0, 0, 0], - ti: [8.19, -7.644, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0.1 }, - t: 231, - s: [682.554, 360.935, 0], - to: [-5.638, 5.262, 0], - ti: [2.039, -1.903, 0], - }, - { t: 299, s: [743.514, 409.106, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [31.219, 26.944, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [0.028, 0.028, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [100, 100, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [-0.966, -0.966, 0] }, - t: 150, - s: [136, 136, 100], - }, - { t: 299, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.154, 0], - [0.631, 0.491], - [0, 0], - [-0.765, 0.985], - [-0.985, -0.765], - [0, 0], - [0, 0], - [-0.992, -0.761], - [0.759, -0.99], - [0, 0], - [0.949, -0.122], - ], - o: [ - [-0.787, 0], - [0, 0], - [-0.986, -0.766], - [0.763, -0.986], - [0, 0], - [0, 0], - [0.76, -0.989], - [0.99, 0.76], - [0, 0], - [-0.582, 0.758], - [-0.154, 0.019], - ], - v: [ - [-3.118, 11.866], - [-5.295, 11.116], - [-13.438, 4.797], - [-13.836, 1.626], - [-10.667, 1.225], - [-3.284, 6.957], - [10.255, -10.689], - [13.424, -11.105], - [13.843, -7.936], - [-0.281, 10.472], - [-2.656, 11.837], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [32.535, 24.45], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.82, 0], - [0.06, -0.006], - [0, 0], - [-0.1, -0.894], - [0, 0], - [-0.34, -0.272], - [-0.429, 0.046], - [0, 0], - [0, 0], - [0.1, 0.894], - [0, 0], - ], - o: [ - [-0.06, 0], - [0, 0], - [-0.895, 0.1], - [0, 0], - [0.047, 0.432], - [0.34, 0.272], - [0, 0], - [0, 0], - [0.893, -0.099], - [0, 0], - [-0.093, -0.832], - ], - v: [ - [20.511, -21.836], - [20.329, -21.826], - [-24.662, -16.826], - [-26.103, -15.025], - [-22.129, 20.723], - [-21.528, 21.816], - [-20.329, 22.163], - [24.663, 17.163], - [24.663, 17.163], - [26.103, 15.363], - [22.131, -20.384], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [0.229, 0], - [1.102, 0.881], - [0.181, 1.634], - [0, 0], - [-3.371, 0.373], - [0, 0], - [-0.378, -3.368], - [0, 0], - [3.37, -0.374], - [0, 0], - ], - o: [ - [-1.389, 0], - [-1.283, -1.026], - [0, 0], - [-0.374, -3.372], - [0, 0], - [3.381, -0.377], - [0, 0], - [0.373, 3.372], - [0, 0], - [-0.233, 0.026], - ], - v: [ - [-20.522, 26.694], - [-24.351, 25.345], - [-26.624, 21.221], - [-30.595, -14.525], - [-25.16, -21.316], - [19.829, -26.318], - [26.624, -20.886], - [30.597, 14.863], - [25.161, 21.655], - [-19.829, 26.655], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [31.219, 26.945], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 5, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [2.136, -0.237], - [0, 0], - [0.237, 2.135], - [0, 0], - [-2.135, 0.237], - [0, 0], - [-0.238, -2.135], - [0, 0], - ], - o: [ - [0, 0], - [-2.135, 0.237], - [0, 0], - [-0.237, -2.136], - [0, 0], - [2.136, -0.237], - [0, 0], - [0.238, 2.136], - ], - v: [ - [24.912, 19.24], - [-20.08, 24.24], - [-24.376, 20.803], - [-28.35, -14.944], - [-24.913, -19.241], - [20.079, -24.241], - [24.376, -20.803], - [28.348, 14.943], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.226999993418, 0.681999954523, 0.834999952129, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [31.22, 27.114], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 3, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 28, - ty: 4, - nm: "Layer 25 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [-16.5] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [17.383] }, - t: 150, - s: [0], - }, - { t: 299, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 0.871 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [664.045, 366.181, 0], - to: [-5.489, -4.528, 0], - ti: [15.194, 12.535, 0], - }, - { - i: { x: 0.667, y: 0.918 }, - o: { x: 0.333, y: 0.082 }, - t: 69, - s: [696.834, 319.132, 0], - to: [-21.714, -17.914, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 0.889 }, - o: { x: 0.333, y: 0.111 }, - t: 150, - s: [584.045, 300.181, 0], - to: [0, 0, 0], - ti: [-21.839, -18.017, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0.094 }, - t: 231, - s: [583.266, 381.488, 0], - to: [15.037, 12.405, 0], - ti: [-5.437, -4.485, 0], - }, - { t: 299, s: [664.045, 366.181, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [10.425, 10.425, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [0.028, 0.028, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [100, 100, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [-0.966, -0.966, 0] }, - t: 150, - s: [136, 136, 100], - }, - { t: 299, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -5.62], - [5.62, 0], - [0, 5.62], - [-5.62, 0], - ], - o: [ - [0, 5.62], - [-5.62, 0], - [0, -5.62], - [5.62, 0], - ], - v: [ - [10.175, 0], - [0, 10.175], - [-10.175, 0], - [0, -10.175], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [10.425, 10.425], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 29, - ty: 4, - nm: "Layer 26 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [-16.5] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [17.383] }, - t: 150, - s: [0], - }, - { t: 299, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 0.901 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [549.243, 291.294, 0], - to: [-4.255, 2.882, 0], - ti: [11.779, -7.979, 0], - }, - { - i: { x: 0.667, y: 0.895 }, - o: { x: 0.333, y: 0.105 }, - t: 69, - s: [483.945, 245.786, 0], - to: [-16.826, 11.398, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 0.86 }, - o: { x: 0.333, y: 0.14 }, - t: 150, - s: [487.243, 333.294, 0], - to: [0, 0, 0], - ti: [-16.922, 11.463, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0.132 }, - t: 231, - s: [550.28, 349.559, 0], - to: [11.657, -7.897, 0], - ti: [-4.215, 2.855, 0], - }, - { t: 299, s: [549.243, 291.294, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [12.548, 12.548, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [0.028, 0.028, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [100, 100, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [-0.966, -0.966, 0] }, - t: 150, - s: [136, 136, 100], - }, - { t: 299, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -6.792], - [6.792, 0], - [0, 6.792], - [-6.791, 0], - ], - o: [ - [0, 6.792], - [-6.791, 0], - [0, -6.792], - [6.792, 0], - ], - v: [ - [12.298, 0], - [-0.001, 12.298], - [-12.298, 0], - [-0.001, -12.298], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.226999993418, 0.681999954523, 0.834999952129, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [12.547, 12.548], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 30, - ty: 4, - nm: "Layer 27 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [-16.5] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [17.383] }, - t: 150, - s: [0], - }, - { t: 299, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 0.873 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [394.833, 324.785, 0], - to: [2.333, -2.471, 0], - ti: [-6.459, 6.839, 0], - }, - { - i: { x: 0.667, y: 0.882 }, - o: { x: 0.333, y: 0.118 }, - t: 69, - s: [439.803, 366.934, 0], - to: [9.227, -9.77, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 0.847 }, - o: { x: 0.333, y: 0.153 }, - t: 150, - s: [428.833, 288.785, 0], - to: [0, 0, 0], - ti: [9.28, -9.826, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0.133 }, - t: 231, - s: [371.619, 271.128, 0], - to: [-6.393, 6.769, 0], - ti: [2.311, -2.447, 0], - }, - { t: 299, s: [394.833, 324.785, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [4.922, 4.921, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [0.028, 0.028, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [100, 100, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [-0.966, -0.966, 0] }, - t: 150, - s: [136, 136, 100], - }, - { t: 299, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -2.58], - [2.58, 0], - [0, 2.58], - [-2.58, 0], - ], - o: [ - [0, 2.58], - [-2.58, 0], - [0, -2.58], - [2.58, 0], - ], - v: [ - [4.672, 0], - [0, 4.671], - [-4.672, 0], - [0, -4.671], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.238999998803, 0.522000002394, 0.991999966491, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [4.922, 4.921], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 31, - ty: 4, - nm: "Layer 28 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1.365] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0.362] }, - t: 150, - s: [-48], - }, - { t: 299, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 0.902 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [371.861, 398.399, 0], - to: [-3.981, -1.784, 0], - ti: [11.019, 4.94, 0], - }, - { - i: { x: 0.667, y: 0.846 }, - o: { x: 0.333, y: 0.154 }, - t: 69, - s: [342.324, 322.951, 0], - to: [-15.74, -7.056, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 0.815 }, - o: { x: 0.333, y: 0.185 }, - t: 150, - s: [313.861, 372.399, 0], - to: [0, 0, 0], - ti: [-15.83, -7.096, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0.083 }, - t: 231, - s: [276.637, 397.091, 0], - to: [10.905, 4.888, 0], - ti: [-3.943, -1.768, 0], - }, - { t: 299, s: [371.861, 398.399, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [33.193, 29.435, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [0.028, 0.028, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [100, 100, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [-0.966, -0.966, 0] }, - t: 150, - s: [136, 136, 100], - }, - { t: 299, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0.677, 0], - [0.255, 0.055], - [0.515, 0.806], - [0, 0], - [-1.052, 0.67], - [-0.672, -1.054], - [0, 0], - [0, 0], - [-0.678, -1.051], - [1.049, -0.676], - [0, 0], - ], - o: [ - [-0.255, 0], - [-0.934, -0.204], - [0, 0], - [-0.669, -1.052], - [1.051, -0.668], - [0, 0], - [0, 0], - [1.045, -0.678], - [0.677, 1.049], - [0, 0], - [-0.581, 0.376], - ], - v: [ - [-6.779, 8.809], - [-7.546, 8.727], - [-9.792, 7.162], - [-15.329, -1.538], - [-14.636, -4.658], - [-11.515, -3.965], - [-6.498, 3.921], - [12.197, -8.132], - [15.321, -7.457], - [14.646, -4.332], - [-4.856, 8.24], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [36.391, 29.202], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [-0.206, 0.874], - [0, 0], - [0.876, 0.208], - [0, 0], - [0.207, -0.875], - [0, 0], - [-0.874, -0.208], - [0, 0], - ], - o: [ - [0.884, 0.208], - [0, 0], - [0.208, -0.875], - [0, 0], - [-0.872, -0.214], - [0, 0], - [-0.207, 0.876], - [0, 0], - [0, 0], - ], - v: [ - [17.492, 24.619], - [19.455, 23.41], - [27.764, -11.585], - [26.553, -13.549], - [-17.492, -24.004], - [-19.456, -22.793], - [-27.763, 12.199], - [-26.554, 14.163], - [17.493, 24.619], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [2.785, 0], - [0.476, 0.112], - [0, 0], - [0, 0], - [-0.782, 3.3], - [0, 0], - [-3.293, -0.782], - [0, 0], - [0.781, -3.3], - [0, 0], - ], - o: [ - [-0.468, 0], - [0, 0], - [0, 0], - [-3.298, -0.782], - [0, 0], - [0.784, -3.298], - [0, 0], - [3.299, 0.783], - [0, 0], - [-0.669, 2.823], - ], - v: [ - [17.869, 29.184], - [16.45, 29.017], - [16.449, 29.017], - [-27.597, 18.561], - [-32.161, 11.157], - [-23.852, -23.838], - [-16.449, -28.402], - [27.598, -17.947], - [32.162, -10.541], - [23.852, 24.454], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 2", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 1, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 2", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.136999990426, 0.219999994016, 0.388000009574, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [33.193, 29.435], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 5, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [2.091, 0.496], - [0, 0], - [-0.496, 2.091], - [0, 0], - [-2.091, -0.497], - [0, 0], - [0.497, -2.091], - [0, 0], - ], - o: [ - [0, 0], - [-2.09, -0.496], - [0, 0], - [0.496, -2.091], - [0, 0], - [2.09, 0.496], - [0, 0], - [-0.496, 2.091], - ], - v: [ - [16.97, 26.511], - [-27.075, 16.055], - [-29.962, 11.371], - [-21.654, -23.623], - [-16.97, -26.51], - [27.075, -16.054], - [29.961, -11.37], - [21.654, 23.624], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [33.193, 29.742], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 3, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 32, - ty: 4, - nm: "Layer 29 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [-16.5] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [17.383] }, - t: 150, - s: [0], - }, - { t: 299, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 0.871 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [300.95, 458.458, 0], - to: [4.118, 0.137, 0], - ti: [-11.399, -0.38, 0], - }, - { - i: { x: 0.667, y: 0.801 }, - o: { x: 0.333, y: 0.199 }, - t: 69, - s: [345.367, 501.338, 0], - to: [16.283, 0.543, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 0.872 }, - o: { x: 0.333, y: 0.128 }, - t: 150, - s: [360.95, 460.458, 0], - to: [0, 0, 0], - ti: [16.376, 0.546, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0.096 }, - t: 231, - s: [347.043, 391.327, 0], - to: [-11.281, -0.376, 0], - ti: [4.079, 0.136, 0], - }, - { t: 299, s: [300.95, 458.458, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [4.921, 4.922, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [0.028, 0.028, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [100, 100, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [-0.966, -0.966, 0] }, - t: 150, - s: [136, 136, 100], - }, - { t: 299, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -2.58], - [2.58, 0], - [0, 2.58], - [-2.58, 0], - ], - o: [ - [0, 2.58], - [-2.58, 0], - [0, -2.58], - [2.58, 0], - ], - v: [ - [4.672, 0], - [0, 4.672], - [-4.672, 0], - [0, -4.672], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.238999998803, 0.522000002394, 0.991999966491, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [4.921, 4.922], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 33, - ty: 4, - nm: "Layer 30 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [-16.5] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [17.383] }, - t: 150, - s: [0], - }, - { t: 299, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 0.847 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [226.972, 461.222, 0], - to: [-4.284, 0.811, 0], - ti: [11.537, -2.183, 0], - }, - { - i: { x: 0.667, y: 0.867 }, - o: { x: 0.333, y: 0.133 }, - t: 69, - s: [212.913, 510.152, 0], - to: [-21.676, 4.101, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 0.845 }, - o: { x: 0.333, y: 0.155 }, - t: 150, - s: [152.972, 475.222, 0], - to: [0, 0, 0], - ti: [-21.832, 4.13, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0.1 }, - t: 231, - s: [159.758, 419.992, 0], - to: [11.19, -2.117, 0], - ti: [-4.179, 0.791, 0], - }, - { t: 299, s: [226.972, 461.222, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [12.548, 12.548, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [0.028, 0.028, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [100, 100, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [-0.966, -0.966, 0] }, - t: 150, - s: [136, 136, 100], - }, - { t: 299, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -6.792], - [6.792, 0], - [0, 6.792], - [-6.791, 0], - ], - o: [ - [0, 6.792], - [-6.791, 0], - [0, -6.792], - [6.792, 0], - ], - v: [ - [12.298, 0], - [-0.001, 12.298], - [-12.298, 0], - [-0.001, -12.298], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.226999993418, 0.681999954523, 0.834999952129, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [12.548, 12.548], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 34, - ty: 4, - nm: "Layer 8 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [-16.5] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [17.383] }, - t: 150, - s: [0], - }, - { t: 299, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 0.823 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [241.041, 545.566, 0], - to: [3.705, 0.347, 0], - ti: [-9.978, -0.935, 0], - }, - { - i: { x: 0.667, y: 0.839 }, - o: { x: 0.333, y: 0.161 }, - t: 69, - s: [259.578, 585.679, 0], - to: [18.747, 1.758, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 0.876 }, - o: { x: 0.333, y: 0.124 }, - t: 150, - s: [305.041, 551.566, 0], - to: [0, 0, 0], - ti: [18.882, 1.77, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0.127 }, - t: 231, - s: [264.847, 489.611, 0], - to: [-9.678, -0.907, 0], - ti: [3.615, 0.339, 0], - }, - { t: 299, s: [241.041, 545.566, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [4.922, 4.921, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [0.028, 0.028, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [100, 100, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [-0.966, -0.966, 0] }, - t: 150, - s: [136, 136, 100], - }, - { t: 299, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -2.58], - [2.58, 0], - [0, 2.58], - [-2.58, 0], - ], - o: [ - [0, 2.58], - [-2.58, 0], - [0, -2.58], - [2.58, 0], - ], - v: [ - [4.672, 0], - [0.001, 4.671], - [-4.672, 0], - [0.001, -4.671], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [4.922, 4.921], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 35, - ty: 4, - nm: "Layer 31 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [1008.503, 482.727, 0], - to: [-9.333, 2.667, 0], - ti: [-1, 10.667, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 60, - s: [952.503, 498.727, 0], - to: [1, -10.667, 0], - ti: [-9.333, 2.667, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 120, - s: [1014.503, 418.727, 0], - to: [9.333, -2.667, 0], - ti: [10.333, -13.333, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 180, - s: [1008.503, 482.727, 0], - to: [-10.333, 13.333, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 240, - s: [952.503, 498.727, 0], - to: [0, 0, 0], - ti: [-9.333, 2.667, 0], - }, - { t: 299, s: [1008.503, 482.727, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [46.217, 46.216, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -25.525], - [25.524, 0], - [0, 25.525], - [-25.525, 0], - ], - o: [ - [0, 25.525], - [-25.525, 0], - [0, -25.525], - [25.524, 0], - ], - v: [ - [46.216, 0], - [0, 46.216], - [-46.216, 0], - [0, -46.216], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.921568627451, 0.976470588235, 0.996078431373, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [46.216, 46.217], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 36, - ty: 4, - nm: "Layer 32 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [816.41, 282.466, 0], - to: [11.333, 0, 0], - ti: [-11, -7.333, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 60, - s: [884.41, 282.466, 0], - to: [11, 7.333, 0], - ti: [11.333, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 120, - s: [882.41, 326.466, 0], - to: [-11.333, 0, 0], - ti: [-0.333, 7.333, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 180, - s: [816.41, 282.466, 0], - to: [0.333, -7.333, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 240, - s: [884.41, 282.466, 0], - to: [0, 0, 0], - ti: [11.333, 0, 0], - }, - { t: 299, s: [816.41, 282.466, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [14.04, 14.04, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-5.483, -5.483], - [5.483, -5.483], - [5.483, 5.483], - [-5.483, 5.483], - ], - o: [ - [5.483, 5.483], - [-5.483, 5.483], - [-5.483, -5.483], - [5.483, -5.483], - ], - v: [ - [9.928, -9.927], - [9.928, 9.928], - [-9.927, 9.928], - [-9.927, -9.927], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.921568627451, 0.976470588235, 0.996078431373, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [14.039, 14.04], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 37, - ty: 4, - nm: "Layer 33 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [455.367, 239.317, 0], - to: [-14.667, -4.333, 0], - ti: [-14.667, 4.333, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 60, - s: [367.367, 213.317, 0], - to: [14.667, -4.333, 0], - ti: [-14.667, -4.333, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 120, - s: [543.367, 213.317, 0], - to: [14.667, 4.333, 0], - ti: [29.333, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 180, - s: [455.367, 239.317, 0], - to: [-29.333, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 240, - s: [367.367, 213.317, 0], - to: [0, 0, 0], - ti: [-14.667, -4.333, 0], - }, - { t: 299, s: [455.367, 239.317, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [20.465, 20.465, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -11.303], - [11.303, 0], - [0, 11.302], - [-11.303, 0], - ], - o: [ - [0, 11.302], - [-11.303, 0], - [0, -11.303], - [11.303, 0], - ], - v: [ - [20.465, 0], - [0, 20.465], - [-20.465, 0], - [0, -20.465], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.921568627451, 0.976470588235, 0.996078431373, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [20.465, 20.465], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 38, - ty: 4, - nm: "Layer 34 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [82.13, 571.278, 0], - to: [-2, -14, 0], - ti: [2.333, -10.333, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 60, - s: [70.13, 487.278, 0], - to: [-2.333, 10.333, 0], - ti: [-2, -14, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 120, - s: [68.13, 633.278, 0], - to: [2, 14, 0], - ti: [-0.333, 24.333, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 180, - s: [82.13, 571.278, 0], - to: [0.333, -24.333, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 240, - s: [70.13, 487.278, 0], - to: [0, 0, 0], - ti: [-2, -14, 0], - }, - { t: 299, s: [82.13, 571.278, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [46.216, 46.216, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -25.524], - [25.524, 0], - [0, 25.525], - [-25.525, 0], - ], - o: [ - [0, 25.525], - [-25.525, 0], - [0, -25.524], - [25.524, 0], - ], - v: [ - [46.216, 0], - [0, 46.216], - [-46.216, 0], - [0, -46.216], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.921568627451, 0.976470588235, 0.996078431373, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [46.216, 46.216], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 39, - ty: 4, - nm: "Shape Layer 6", - sr: 1, - ks: { - o: { a: 0, k: 50, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [540, 540, 0], ix: 2 }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { a: 0, k: [142.202, 142.202, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - d: 1, - ty: "el", - s: { a: 0, k: [394, 394], ix: 2 }, - p: { a: 0, k: [0, 0], ix: 3 }, - nm: "Ellipse Path 1", - mn: "ADBE Vector Shape - Ellipse", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.227450980392, 0.682352941176, 0.835294117647, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 2, ix: 5 }, - lc: 1, - lj: 1, - ml: 4, - bm: 0, - d: [ - { n: "d", nm: "dash", v: { a: 0, k: 31, ix: 1 } }, - { n: "o", nm: "offset", v: { a: 0, k: 0, ix: 7 } }, - ], - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [13, 27], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Ellipse 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "tm", - s: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 73, - s: [0], - }, - { t: 124, s: [60] }, - ], - ix: 1, - }, - e: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 56, - s: [0], - }, - { t: 107, s: [60] }, - ], - ix: 2, - }, - o: { a: 0, k: 260, ix: 3 }, - m: 1, - ix: 2, - nm: "Trim Paths 1", - mn: "ADBE Vector Filter - Trim", - hd: false, - }, - ], - ip: 56, - op: 356, - st: 56, - bm: 0, - }, - { - ddd: 0, - ind: 40, - ty: 4, - nm: "Shape Layer 3", - sr: 1, - ks: { - o: { a: 0, k: 50, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [540, 540, 0], ix: 2 }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { a: 0, k: [134.583, 134.583, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - d: 1, - ty: "el", - s: { a: 0, k: [394, 394], ix: 2 }, - p: { a: 0, k: [0, 0], ix: 3 }, - nm: "Ellipse Path 1", - mn: "ADBE Vector Shape - Ellipse", - hd: false, - }, - { - ty: "st", - c: { - a: 0, - k: [0.227450980392, 0.682352941176, 0.835294117647, 1], - ix: 3, - }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 2, ix: 5 }, - lc: 1, - lj: 1, - ml: 4, - bm: 0, - d: [ - { n: "d", nm: "dash", v: { a: 0, k: 31, ix: 1 } }, - { n: "o", nm: "offset", v: { a: 0, k: 0, ix: 7 } }, - ], - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [13, 27], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Ellipse 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "tm", - s: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 149, - s: [0], - }, - { t: 200, s: [60] }, - ], - ix: 1, - }, - e: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 132, - s: [0], - }, - { t: 183, s: [60] }, - ], - ix: 2, - }, - o: { a: 0, k: 260, ix: 3 }, - m: 1, - ix: 2, - nm: "Trim Paths 1", - mn: "ADBE Vector Filter - Trim", - hd: false, - }, - ], - ip: 132, - op: 432, - st: 132, - bm: 0, - }, - { - ddd: 0, - ind: 41, - ty: 4, - nm: "Shape Layer 5", - sr: 1, - ks: { - o: { a: 0, k: 50, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [540, 540, 0], ix: 2 }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { a: 0, k: [124.107, 124.107, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - d: 1, - ty: "el", - s: { a: 0, k: [394, 394], ix: 2 }, - p: { a: 0, k: [0, 0], ix: 3 }, - nm: "Ellipse Path 1", - mn: "ADBE Vector Shape - Ellipse", - hd: false, - }, - { - ty: "st", - c: { a: 0, k: [1, 0.725490196078, 0.352941176471, 1], ix: 3 }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 2, ix: 5 }, - lc: 1, - lj: 1, - ml: 4, - bm: 0, - d: [ - { n: "d", nm: "dash", v: { a: 0, k: 31, ix: 1 } }, - { n: "o", nm: "offset", v: { a: 0, k: 0, ix: 7 } }, - ], - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [13, 27], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Ellipse 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "tm", - s: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 123, - s: [0], - }, - { t: 174, s: [60] }, - ], - ix: 1, - }, - e: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 106, - s: [0], - }, - { t: 157, s: [60] }, - ], - ix: 2, - }, - o: { a: 0, k: 260, ix: 3 }, - m: 1, - ix: 2, - nm: "Trim Paths 1", - mn: "ADBE Vector Filter - Trim", - hd: false, - }, - ], - ip: 106, - op: 406, - st: 106, - bm: 0, - }, - { - ddd: 0, - ind: 42, - ty: 4, - nm: "Shape Layer 2", - sr: 1, - ks: { - o: { a: 0, k: 50, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [540, 540, 0], ix: 2 }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { a: 0, k: [124.107, 124.107, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - d: 1, - ty: "el", - s: { a: 0, k: [394, 394], ix: 2 }, - p: { a: 0, k: [0, 0], ix: 3 }, - nm: "Ellipse Path 1", - mn: "ADBE Vector Shape - Ellipse", - hd: false, - }, - { - ty: "st", - c: { a: 0, k: [1, 0.725490196078, 0.352941176471, 1], ix: 3 }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 2, ix: 5 }, - lc: 1, - lj: 1, - ml: 4, - bm: 0, - d: [ - { n: "d", nm: "dash", v: { a: 0, k: 31, ix: 1 } }, - { n: "o", nm: "offset", v: { a: 0, k: 0, ix: 7 } }, - ], - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [13, 27], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Ellipse 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "tm", - s: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 99, - s: [0], - }, - { t: 150, s: [60] }, - ], - ix: 1, - }, - e: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 82, - s: [0], - }, - { t: 133, s: [60] }, - ], - ix: 2, - }, - o: { a: 0, k: 260, ix: 3 }, - m: 1, - ix: 2, - nm: "Trim Paths 1", - mn: "ADBE Vector Filter - Trim", - hd: false, - }, - ], - ip: 82, - op: 382, - st: 82, - bm: 0, - }, - { - ddd: 0, - ind: 43, - ty: 4, - nm: "Shape Layer 4", - sr: 1, - ks: { - o: { a: 0, k: 50, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [540, 540, 0], ix: 2 }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - d: 1, - ty: "el", - s: { a: 0, k: [394, 394], ix: 2 }, - p: { a: 0, k: [0, 0], ix: 3 }, - nm: "Ellipse Path 1", - mn: "ADBE Vector Shape - Ellipse", - hd: false, - }, - { - ty: "st", - c: { a: 0, k: [0.372549019608, 0.607843137255, 1, 1], ix: 3 }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 4, ix: 5 }, - lc: 1, - lj: 1, - ml: 4, - bm: 0, - d: [ - { n: "d", nm: "dash", v: { a: 0, k: 31, ix: 1 } }, - { n: "o", nm: "offset", v: { a: 0, k: 0, ix: 7 } }, - ], - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [13, 27], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Ellipse 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "tm", - s: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 173, - s: [0], - }, - { t: 224, s: [60] }, - ], - ix: 1, - }, - e: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 156, - s: [0], - }, - { t: 207, s: [60] }, - ], - ix: 2, - }, - o: { a: 0, k: 260, ix: 3 }, - m: 1, - ix: 2, - nm: "Trim Paths 1", - mn: "ADBE Vector Filter - Trim", - hd: false, - }, - ], - ip: 156, - op: 456, - st: 156, - bm: 0, - }, - { - ddd: 0, - ind: 44, - ty: 4, - nm: "Shape Layer 1", - sr: 1, - ks: { - o: { a: 0, k: 50, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [540, 540, 0], ix: 2 }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - d: 1, - ty: "el", - s: { a: 0, k: [394, 394], ix: 2 }, - p: { a: 0, k: [0, 0], ix: 3 }, - nm: "Ellipse Path 1", - mn: "ADBE Vector Shape - Ellipse", - hd: false, - }, - { - ty: "st", - c: { a: 0, k: [0.372549019608, 0.607843137255, 1, 1], ix: 3 }, - o: { a: 0, k: 100, ix: 4 }, - w: { a: 0, k: 4, ix: 5 }, - lc: 1, - lj: 1, - ml: 4, - bm: 0, - d: [ - { n: "d", nm: "dash", v: { a: 0, k: 31, ix: 1 } }, - { n: "o", nm: "offset", v: { a: 0, k: 0, ix: 7 } }, - ], - nm: "Stroke 1", - mn: "ADBE Vector Graphic - Stroke", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [13, 27], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Ellipse 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "tm", - s: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 49, - s: [0], - }, - { t: 100, s: [60] }, - ], - ix: 1, - }, - e: { - a: 1, - k: [ - { - i: { x: [0.833], y: [0.833] }, - o: { x: [0.167], y: [0.167] }, - t: 32, - s: [0], - }, - { t: 83, s: [60] }, - ], - ix: 2, - }, - o: { a: 0, k: 260, ix: 3 }, - m: 1, - ix: 2, - nm: "Trim Paths 1", - mn: "ADBE Vector Filter - Trim", - hd: false, - }, - ], - ip: 32, - op: 332, - st: 32, - bm: 0, - }, - { - ddd: 0, - ind: 45, - ty: 4, - nm: "Layer 3 Outlines", - sr: 1, - ks: { - o: { a: 0, k: 30, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [550.755, 536.45, 0], ix: 2 }, - a: { a: 0, k: [422.409, 297.133, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [8.522, -27.406], - [0.467, -5.252], - [7.26, -25.502], - [10.256, -29.976], - [-18.403, -43.162], - [-17.694, -13.37], - [-33.611, 2.615], - [-50.295, -5.906], - [-7.124, -9.475], - [-7.62, -10.534], - [-2.128, -2.571], - [0, 0], - [-2.482, 3.957], - [1.237, 25.378], - [-4.947, 26.228], - [-17.972, 26.819], - [-2.357, 36.035], - [-0.024, 0.409], - [59.157, 19.455], - [0.004, 0.002], - [33.486, 4.732], - [22.439, 0.057], - [4.892, -0.143], - [60.904, -31.971], - ], - o: [ - [-1.608, 5.171], - [-2.289, 25.751], - [-8.691, 30.532], - [-15.154, 44.294], - [8.87, 20.801], - [27.277, 20.609], - [50.024, -3.89], - [13.001, 1.526], - [8.085, 10.753], - [1.962, 2.713], - [0, 0], - [2.856, -3.705], - [13.053, -20.798], - [-1.3, -26.693], - [6.209, -32.916], - [19.848, -29.619], - [0.026, -0.408], - [3.685, -62.165], - [0, 0], - [-33.686, -11.078], - [-22.672, -3.204], - [-4.906, -0.012], - [-64.974, 1.909], - [-25.412, 13.34], - ], - v: [ - [-305.121, -150.5], - [-308.119, -134.858], - [-308.983, -57.069], - [-353.089, 26.308], - [-349.112, 163.397], - [-309.592, 216.9], - [-212.964, 239.415], - [-59.86, 219.775], - [-30.965, 238.18], - [-9.296, 272.889], - [-3.153, 280.812], - [259.838, 280.812], - [267.865, 269.32], - [287.266, 199.061], - [280.227, 119.627], - [329.21, 29.896], - [363.431, -71.08], - [363.507, -72.306], - [268.824, -210.624], - [142.951, -252.022], - [42.103, -275.858], - [-25.592, -280.812], - [-40.288, -280.599], - [-229.81, -230.992], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [0.603921568627, 0.909803921569, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [399.698, 313.453], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [53.973, -4.086], - [9.858, -0.335], - [-33.686, -11.079], - [0, 0], - [3.685, -62.165], - [0.026, -0.409], - [19.848, -29.619], - [6.209, -32.915], - [-1.3, -26.693], - [13.052, -20.799], - [-13.614, 7.846], - [-12.042, 39.03], - [7.214, 31.845], - [-3.883, 34.067], - [-0.527, 2.842], - [1.749, 20.939], - [8.518, 13.396], - [49.454, 18.845], - [5.001, 1.638], - ], - o: [ - [-11.567, 0.875], - [33.486, 4.732], - [0.004, 0.001], - [59.157, 19.456], - [-0.024, 0.409], - [-2.357, 36.035], - [-17.972, 26.819], - [-4.947, 26.229], - [1.237, 25.378], - [15.222, -4.194], - [38.79, -22.353], - [9.623, -31.192], - [-7.406, -32.695], - [0.326, -2.863], - [3.84, -20.723], - [-1.322, -15.82], - [-28.278, -44.475], - [-4.938, -1.882], - [-51.841, -16.983], - ], - v: [ - [-145.703, -273.095], - [-177.729, -271.294], - [-76.881, -247.458], - [48.992, -206.061], - [143.675, -67.742], - [143.599, -66.516], - [109.378, 34.46], - [60.395, 124.19], - [67.434, 203.625], - [48.034, 273.884], - [91.486, 255.946], - [169.468, 158.261], - [173.099, 66.055], - [157.073, -33.667], - [158.375, -42.222], - [168.648, -104.13], - [151.842, -148.19], - [28.49, -242.618], - [13.576, -247.901], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [0.603921568627, 0.909803921569, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [619.53, 308.89], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 3, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-26.834, -15.538], - [-40.576, 0.337], - [-35.43, 8.609], - [-17.33, 3.325], - [12.994, 1.544], - [50.042, -3.519], - [27.176, 20.105], - [8.769, 20.199], - [-15.368, 42.841], - [-8.839, 29.539], - [-2.413, 24.939], - [-1.633, 5.002], - [-25.476, 12.798], - [-64.983, 1.524], - [61.92, 13.155], - [43.397, -62.791], - [3.354, -6.966], - [-6.958, -33.711], - [9.038, -42.191], - [2.854, -25.44], - [-7.778, -17.308], - ], - o: [ - [35.189, 20.375], - [36.52, -0.303], - [17.312, -4.206], - [-7.078, -9.217], - [-50.266, -5.973], - [-33.624, 2.365], - [-17.629, -13.042], - [-18.194, -41.911], - [10.401, -28.993], - [7.383, -24.673], - [0.492, -5.086], - [8.655, -26.512], - [61.058, -30.673], - [-36.939, -6.18], - [-73.548, -15.625], - [-4.426, 6.404], - [-15.011, 31.17], - [8.181, 39.631], - [-5.505, 25.698], - [-2.23, 19.884], - [12.657, 28.163], - ], - v: [ - [-93.587, 253.945], - [23.512, 281.768], - [131.947, 266.505], - [183.711, 254.082], - [154.906, 236.104], - [1.708, 254.369], - [-94.809, 232.071], - [-134.07, 180.035], - [-137.383, 47.189], - [-92.874, -33.375], - [-91.635, -108.741], - [-88.561, -123.881], - [-12.861, -201.494], - [176.899, -248.611], - [43.08, -279.055], - [-156.493, -177.912], - [-168.167, -157.818], - [-180.454, -56.935], - [-156.025, 55.429], - [-165.848, 130.391], - [-156.628, 186.591], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [0.603921568627, 0.909803921569, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [183.711, 299.385], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 3", - np: 3, - cix: 2, - bm: 0, - ix: 3, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-22.672, -3.204], - [-11.567, 0.876], - [-51.841, -16.982], - [-4.938, -1.882], - [31.326, 10.854], - [54.611, -33.829], - ], - o: [ - [9.858, -0.335], - [53.973, -4.085], - [5.001, 1.638], - [-22.325, -24.557], - [-61.999, -21.483], - [22.438, 0.057], - ], - v: [ - [-69.262, 4.46], - [-37.236, 2.659], - [122.043, 27.853], - [136.957, 33.136], - [54.839, -21.381], - [-136.957, -0.494], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [0.603921568627, 0.909803921569, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [511.063, 33.136], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 4", - np: 3, - cix: 2, - bm: 0, - ix: 4, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [1.963, 2.713], - [8.084, 10.753], - [17.292, -4.431], - [36.517, -0.501], - [35.29, 20.847], - [12.797, 29.001], - [-24.44, -31.53], - [0, 0], - ], - o: [ - [-7.62, -10.533], - [-17.313, 3.521], - [-35.385, 9.066], - [-40.574, 0.556], - [-26.912, -15.897], - [3.572, 39.998], - [0, 0], - [-2.129, -2.57], - ], - v: [ - [178.098, 47.343], - [156.43, 12.635], - [104.728, 25.724], - [-3.628, 42.035], - [-120.866, 13.923], - [-184.242, -55.266], - [-141.726, 55.266], - [184.242, 55.266], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [0.603921568627, 0.909803921569, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [212.303, 539], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 5", - np: 3, - cix: 2, - bm: 0, - ix: 5, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-7.406, -32.695], - [9.623, -31.192], - [38.79, -22.353], - [15.222, -4.194], - [2.856, -3.704], - [0, 0], - [-2.98, 51.307], - [1.564, 13.805], - [35.602, 40.438], - [0.326, -2.863], - ], - o: [ - [7.214, 31.845], - [-12.042, 39.03], - [-13.615, 7.846], - [-2.483, 3.956], - [0, 0], - [33.042, -39.327], - [0.805, -13.878], - [-6.062, -53.502], - [-0.527, 2.842], - [-3.883, 34.067], - ], - v: [ - [40.452, -55.522], - [36.821, 36.684], - [-41.161, 134.369], - [-84.614, 152.307], - [-92.642, 163.798], - [37.273, 163.798], - [92.225, 22.742], - [91.106, -18.884], - [25.728, -163.798], - [24.425, -155.243], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "mm", - mm: 4, - nm: "Merge Paths 1", - mn: "ADBE Vector Filter - Merge", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [0.603921568627, 0.909803921569, 1, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [752.177, 430.467], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 6", - np: 3, - cix: 2, - bm: 0, - ix: 6, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 300, - st: 0, - bm: 0, - }, - ], - markers: [], - chars: [ - { - ch: "t", - size: 63, - style: "Light", - w: 32.9, - data: { - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-1.267, 0.233], - [-0.734, 0.267], - [-0.234, 0.5], - [0, 0.534], - [1.2, 0], - [0.866, -0.3], - [1.333, 0], - [1.666, 2.134], - [0, 4.067], - [0, 0], - [0, 0], - [0, 1.667], - [1.866, 0], - [0, 0], - [0, 0], - [2, 0], - [0, -2.066], - [0, 0], - [0, 0], - [0, -1.6], - [-1.934, 0], - [0, 0], - [0, 0], - [-2.7, -2.933], - [-5.4, 0], - ], - o: [ - [1.266, -0.234], - [0.6, -0.2], - [0.233, -0.5], - [0, -1.666], - [-0.667, 0], - [-0.867, 0.3], - [-3.867, 0], - [-1.667, -2.133], - [0, 0], - [0, 0], - [1.866, 0], - [0, -1.6], - [0, 0], - [0, 0], - [0, -2.066], - [-2.067, 0], - [0, 0], - [0, 0], - [-1.934, 0], - [0, 1.667], - [0, 0], - [0, 0], - [0, 5.467], - [2.7, 2.934], - [1.066, 0], - ], - v: [ - [29.8, 0.45], - [32.8, -0.3], - [34.05, -1.35], - [34.4, -2.9], - [32.6, -5.4], - [30.3, -4.95], - [27, -4.5], - [18.7, -7.7], - [16.2, -17], - [16.2, -43.6], - [29.7, -43.6], - [32.5, -46.1], - [29.7, -48.5], - [16.2, -48.5], - [16.2, -61], - [13.2, -64.1], - [10.1, -61], - [10.1, -48.5], - [2.7, -48.5], - [-0.2, -46.1], - [2.7, -43.6], - [10.1, -43.6], - [10.1, -16.2], - [14.15, -3.6], - [26.3, 0.8], - ], - c: true, - }, - ix: 2, - }, - nm: "t", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - ], - nm: "t", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - }, - fFamily: "Nunito", - }, - { - ch: "o", - size: 63, - style: "Light", - w: 54.7, - data: { - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-3.334, 2.034], - [-1.834, 3.767], - [0, 5.134], - [1.833, 3.767], - [3.333, 2.067], - [4.6, 0], - [3.333, -2.066], - [1.833, -3.766], - [0, -5.066], - [-1.834, -3.766], - [-3.334, -2.033], - [-4.534, 0], - ], - o: [ - [3.333, -2.033], - [1.833, -3.766], - [0, -5.066], - [-1.834, -3.766], - [-3.334, -2.066], - [-4.534, 0], - [-3.334, 2.067], - [-1.834, 3.767], - [0, 5.134], - [1.833, 3.767], - [3.333, 2.034], - [4.6, 0], - ], - v: [ - [39.2, -2.25], - [46.95, -10.95], - [49.7, -24.3], - [46.95, -37.55], - [39.2, -46.3], - [27.3, -49.4], - [15.5, -46.3], - [7.75, -37.55], - [5, -24.3], - [7.75, -10.95], - [15.5, -2.25], - [27.3, 0.8], - ], - c: true, - }, - ix: 2, - }, - nm: "o", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [2.9, 3.5], - [0, 6.334], - [-2.9, 3.467], - [-4.934, 0], - [-2.934, -3.466], - [0, -6.333], - [2.933, -3.5], - [4.933, 0], - ], - o: [ - [-2.9, -3.5], - [0, -6.333], - [2.9, -3.466], - [4.933, 0], - [2.933, 3.467], - [0, 6.334], - [-2.934, 3.5], - [-4.934, 0], - ], - v: [ - [15.55, -9.55], - [11.2, -24.3], - [15.55, -39], - [27.3, -44.2], - [39.1, -39], - [43.5, -24.3], - [39.1, -9.55], - [27.3, -4.3], - ], - c: true, - }, - ix: 2, - }, - nm: "o", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - ], - nm: "o", - np: 5, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - }, - fFamily: "Nunito", - }, - { - ch: "k", - size: 63, - style: "Light", - w: 48.4, - data: { - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 2.067], - [0, 0], - [0, 0], - [0, 0], - [-0.6, -0.366], - [-0.867, 0], - [-0.434, 1], - [1.133, 1.067], - [0, 0], - [0, 0], - [0.4, 0.967], - [1.2, 0], - [0.6, -0.4], - [0.733, -0.666], - [0, 0], - [0, 0], - [0, 0], - [2, 0], - [0, -2.066], - [0, 0], - [-2.067, 0], - ], - o: [ - [0, 0], - [0, 0], - [0, 0], - [0.866, 0.8], - [0.6, 0.366], - [1.133, 0], - [0.433, -1], - [0, 0], - [0, 0], - [1, -1], - [-0.4, -0.966], - [-0.867, 0], - [-0.6, 0.4], - [0, 0], - [0, 0], - [0, 0], - [0, -2.066], - [-2.067, 0], - [0, 0], - [0, 2.067], - [2, 0], - ], - v: [ - [14.1, -2.5], - [14.1, -23.3], - [14.3, -23.3], - [38.8, -1.7], - [41, 0.05], - [43.2, 0.6], - [45.55, -0.9], - [44.5, -4], - [20.8, -25.1], - [42.4, -44.8], - [43.3, -47.75], - [40.9, -49.2], - [38.7, -48.6], - [36.7, -47], - [14.3, -26.5], - [14.1, -26.5], - [14.1, -68], - [11.1, -71.1], - [8, -68], - [8, -2.5], - [11.1, 0.6], - ], - c: true, - }, - ix: 2, - }, - nm: "k", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - ], - nm: "k", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - }, - fFamily: "Nunito", - }, - { - ch: "a", - size: 63, - style: "Light", - w: 52.2, - data: { - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-2.7, 1.667], - [-1.334, 3], - [0, 0], - [-2, 0], - [0, 2.067], - [0, 0], - [2.833, 3], - [5.866, 0], - [2.933, -0.766], - [2.733, -1.533], - [0.033, -1.033], - [-0.7, -0.633], - [-1.2, 0.667], - [-2.4, 0.667], - [-2.534, 0], - [-1.8, -2.033], - [0, -4.466], - [0, 0], - [0, 0], - [4.266, -0.866], - [1.8, -2.033], - [0, -3.6], - [-1.5, -2.2], - [-2.567, -1.266], - [-3.267, 0], - ], - o: [ - [2.7, -1.666], - [0, 0], - [0, 2.067], - [1.866, 0], - [0, 0], - [0, -6.2], - [-2.834, -3], - [-2.734, 0], - [-2.934, 0.767], - [-1.067, 0.534], - [-0.034, 1.034], - [0.7, 0.634], - [2.6, -1.466], - [2.4, -0.666], - [3.933, 0], - [1.8, 2.034], - [0, 0], - [0, 0], - [-7.467, 0], - [-4.267, 0.867], - [-1.8, 2.034], - [0, 2.734], - [1.5, 2.2], - [2.566, 1.266], - [3.6, 0], - ], - v: [ - [32.45, -1.7], - [38.5, -8.7], - [38.5, -2.5], - [41.5, 0.6], - [44.3, -2.5], - [44.3, -31.1], - [40.05, -44.9], - [27, -49.4], - [18.5, -48.25], - [10, -44.8], - [8.35, -42.45], - [9.35, -39.95], - [12.2, -40], - [19.7, -43.2], - [27.1, -44.2], - [35.7, -41.15], - [38.4, -31.4], - [38.4, -27.8], - [35.3, -27.8], - [17.7, -26.5], - [8.6, -22.15], - [5.9, -13.7], - [8.15, -6.3], - [14.25, -1.1], - [23, 0.8], - ], - c: true, - }, - ix: 2, - }, - nm: "a", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [2.066, 1.867], - [0, 3], - [-1.334, 1.334], - [-3.367, 0.534], - [-6, 0], - [0, 0], - [0, 0], - [1.266, -2.4], - [2.166, -1.366], - [2.866, 0], - ], - o: [ - [-2.067, -1.866], - [0, -2.333], - [1.333, -1.333], - [3.366, -0.533], - [0, 0], - [0, 0], - [0, 3.067], - [-1.267, 2.4], - [-2.167, 1.367], - [-3.534, 0], - ], - v: [ - [15.4, -6.9], - [12.3, -14.2], - [14.3, -19.7], - [21.35, -22.5], - [35.4, -23.3], - [38.4, -23.3], - [38.4, -20], - [36.5, -11.8], - [31.35, -6.15], - [23.8, -4.1], - ], - c: true, - }, - ix: 2, - }, - nm: "a", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - ], - nm: "a", - np: 5, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - }, - fFamily: "Nunito", - }, - { - ch: ".", - size: 63, - style: "Light", - w: 21.9, - data: { - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [-0.834, 0.867], - [0, 1.334], - [0.833, 0.867], - [1.4, 0], - [0.866, -0.866], - [0, -1.333], - [-0.867, -0.866], - [-1.334, 0], - ], - o: [ - [0.833, -0.866], - [0, -1.333], - [-0.834, -0.866], - [-1.334, 0], - [-0.867, 0.867], - [0, 1.334], - [0.866, 0.867], - [1.4, 0], - ], - v: [ - [14.35, -1], - [15.6, -4.3], - [14.35, -7.6], - [11, -8.9], - [7.7, -7.6], - [6.4, -4.3], - [7.7, -1], - [11, 0.3], - ], - c: true, - }, - ix: 2, - }, - nm: ".", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - ], - nm: ".", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - }, - fFamily: "Nunito", - }, - { - ch: "i", - size: 63, - style: "Light", - w: 22.2, - data: { - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 2.8], - [2.933, 0], - [0, -2.733], - [-2.934, 0], - ], - o: [ - [0, -2.733], - [-2.934, 0], - [0, 2.8], - [2.933, 0], - ], - v: [ - [15.5, -65.2], - [11.1, -69.3], - [6.7, -65.2], - [11.1, -61], - ], - c: true, - }, - ix: 2, - }, - nm: "i", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ind: 1, - ty: "sh", - ix: 2, - ks: { - a: 0, - k: { - i: [ - [0, 2.2], - [0, 0], - [2, 0], - [0, -2.133], - [0, 0], - [-2.067, 0], - ], - o: [ - [0, 0], - [0, -2.133], - [-2.067, 0], - [0, 0], - [0, 2.2], - [2, 0], - ], - v: [ - [14.1, -2.9], - [14.1, -45.7], - [11.1, -48.9], - [8, -45.7], - [8, -2.9], - [11.1, 0.4], - ], - c: true, - }, - ix: 2, - }, - nm: "i", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - ], - nm: "i", - np: 5, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - }, - fFamily: "Nunito", - }, - { - ch: "r", - size: 63, - style: "Light", - w: 34.2, - data: { - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 2.067], - [0, 0], - [-2.6, 2.7], - [-4.734, 0.4], - [0, 0], - [0.066, 1.867], - [0.533, 0.4], - [0.8, -0.066], - [2.9, -1.666], - [1.466, -3.133], - [0, 0], - [1.933, 0], - [0, -2.133], - [0, 0], - [-2.067, 0], - ], - o: [ - [0, 0], - [0, -4.533], - [2.6, -2.7], - [0, 0], - [2, -0.2], - [0, -0.866], - [-0.534, -0.4], - [-3.8, 0.067], - [-2.9, 1.667], - [0, 0], - [0, -2.133], - [-2.067, 0], - [0, 0], - [0, 2.067], - [2.066, 0], - ], - v: [ - [14.2, -2.5], - [14.2, -28.4], - [18.1, -39.25], - [29.1, -43.9], - [30.5, -44], - [33.4, -47.1], - [32.6, -49], - [30.6, -49.5], - [20.55, -46.9], - [14, -39.7], - [14, -46], - [11.1, -49.2], - [8, -46], - [8, -2.5], - [11.1, 0.6], - ], - c: true, - }, - ix: 2, - }, - nm: "r", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - ], - nm: "r", - np: 3, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - }, - fFamily: "Nunito", - }, - ], -}; - -export const column3Lottie = { - v: "5.5.7", - meta: { g: "LottieFiles AE 0.1.20", a: "", k: "", d: "", tc: "" }, - fr: 25, - ip: 0, - op: 303, - w: 1920, - h: 1080, - nm: "Comp 1", - ddd: 0, - assets: [ - { - id: "image_0", - w: 444, - h: 2, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbwAAAAECAYAAAD1XopzAAAAbElEQVRYR+3VsQ2AMAxE0btMwAhp6FEqxmE0RslkmBVSOZHyXVu682tsMQgggAACCGwg4LPdj6W6wa2cOCAQ8lEU18AqKwgsLRBSX7og5VIFyqfXqYmEIYAAAgggMEmAhzcJnlgEEEAAgVyBHzNPBrUtpF+yAAAAAElFTkSuQmCC", - e: 1, - }, - { - id: "image_1", - w: 14, - h: 21, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAVCAYAAAB2Wd+JAAAAqElEQVQ4T2NkIAOoGVsGMJKhj0HNyKJhVCOOkBtKgWNsuYGseFQ3sjgwABpBCfbXX/YDDy4c+EBsugU7VcHAQYCN6UcBw38GBab/DA03Lpx4QMgAFD9qGFgo/GNkaABpImQA1sAhxgC8oQoy4D8Tw4L//xke/P/PNOH2hWMXYF4gKjo0TCwc/v+DeIGRiaHhxpkTB4jSCLMF2QCwIYRCEF0eZMC/fwwOAEloS/S2pYWQAAAAAElFTkSuQmCC", - e: 1, - }, - { - id: "image_2", - w: 79, - h: 79, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE8AAABPCAYAAACqNJiGAAALL0lEQVR4Xu1ceVhTVxZ/IEIgAbGLgEr1U7E4o5U6ZXAcV6xaFRXcwBE1IsgeQDYBsQKFIqChURGrIhWrWLRGAam4UVFMcSGKC4pOEdeOG0i0NEKd76S+fAm8Le+9sBjyF3zv3nPP/d2z3nvP1UO6frQR0KPdk6WONnaj7MaOdpjw9Onz4Ra93re8XVNji0e6r1VvaV19Q515D7OfJJJySZVUUsMSG7TItDl4c935YwyNDP2fPKsbbcLhcEfYfWLex8oKsR08COltZYX0sbLEnci5ixWKb+cuSpHau/fkldeuyzkczn1TLvfYuYuV26qlZVJaKNDs1CbgAWB/vG76msc1GTjk48GWE8eNQexHfEqTZfVuDQ0y5PipUkRSfl5+4VKlrKeZWVlV1c3AtpBKrYI3fb5bmAmHK7Du09uCv9DN0HawDSuAERERFxYheeJDjc/r6n7T1zcIKD6wt0Bbg2oFPABNJmuMcnGa+t4i13mIqSlPW/zj0r3/8BGyIXOr/PK1aw+1BSKr4E12cXXqYcrL+PfIf1q3F2gt0QQQE9OEr2tqax/cu3N/PJvqzAp4/e3Gm4/+zPYgx9j4X2vXxHZnS9Jg4kQORBNxBmfzVapQbmTI2SPek83XpC9eW8bggTNoav7zUHiQvzlbTgBlNmPbDsTPcykb81TSSBaKkFNlZ++wIYWMwFuw1Gv1G0QvdlNasgFb0qaKVExCEpIYG80qeH+FOhVI5OoEuUG37h4lRQe+pzsAbfDmL/EsHuVgP4ltyVCdCN9XgGRvFtGdG2E/CHEW+wQ0m/G48Xt2bI2nMwgt8Ga788vd5rjYO0+fSujtmNorbYIHjAOAiWlCefmFiiOniwtmagqgxuDxfQNvTZv8+UAi4ICJnNw8pEEmY2SzwD6tDBFoOie19lU3qxGy+HLllwnyq1U3zhw58IOjJoNpBB4ViWtps+B/unaLqcMAm+k4dgwCGQ3ZDwCsqKzcd7JAvJCsLfqdMnhg4+Y6z5hEJnEtB4YJ0AWQSagC44L314Rfv9DI1y9lsq+o2kBK4IFXdbD/LI6uc4CJQPJPtz9VSUDb0QEOtYHuy/3kXGPO5/t2ZZeSjUsKHsRxH1lbH0uOizUkI0b0HWyg47gxrAW9eGPRBQ6lBzbSJyS88cHjV1Y10pI6ojmRgrfQ0/exaG3iB9qI45gsBl5fiOGYBuvHfy5FUtI33D5ZKB5EGzzvoNCfFi+YP4UpM9oASds0QYJv3f5v2oHdO8PxxsKVPN+gsE96WXxYHhMWYqRtRjsifYgBZ7i5E6ovLnjzFi+rzRSmWncWddXGAsDeYE5u3pn8vbtGY9HHBI/vI3CbNmXiHk3cvDaY7wg0F3r5NlZeujoEaysLEzzPgODajPUp1h2B+fbmARxQsnADpvS1Ao9I6sALwY9KxN7ek9Z0fKI0Dk/6WoHnHxZ5TZiUMARvcEjWnZ2mahS5azqRtmwPKSAIRWJsFG4OjGf71MADDztw4IBygY8nrocFL8T3EyCL3OZ1agDfqqNCi6hkPtPn/UdWfeeJtWrgrAZeQGjE7lBBwAKyraTODiBIkrigCElcHU054wEJPVpyMrzwh9w0VDPUwAteGXM7Jf7LAVTUBgBMThchcNBDtuVDhV5btqGyTdWSH9ik8FsRcaVof+6wVuClbdzYr6dZzxpQx64fNgKOTrPlp4sLlCZNKXmCyGhRiJ9PIJnK6jKwsDl7ouSMO3ruoQQvJHq1ZO2aVQ66DA7Z3MErb9n+XYE4d+cMaKsET7hx8y3/5csGkhHQ5e9g5109vO4cO7i/vxp423d+/6bL3pGLxvjpzo1lRw8bK8ELjY71nD3Taasubj2Rw6XeYrF3QJO04rIN5LoKtY1PSg32914m1OUdFKogQryXmbVjQtV5SYkCvBXRsQeS18Q6UyWgy+0AvMprVSu2bxQKFeBt2pqV67XE3VWXQaE6d4XHzcr5Di4LKcDbnbcve+6smUuoEtDldpATp36zuQs8OkJACB6aNOMR1iSZpsNce/SB+K2qulptaFMeDzNnbwWerto8SPYPFhYRrpf9CDu1o8wutWUg3q3ACwyPKlmXGDeOAU2d6drK2/J9AsXfitbN0hkEGEwU4rwzZ3/xzsvJ+laZYTjPnCbsbJuaDDCg3RW2pXbn7VPJMKJWTZvkOKHwXTwVo40STscFHt6yC1d+VZxlKLek0kQZjUQHP2wz0VnpfTHHrf5E/o/myl0V+CPu69SaqNCgfp11Um3BN4Q2gojoG/l7dykqM5WSt9RPINmSnta1k0ywCooEIv/wpt1ZWwLUwFsWGJIc5O0Z2eU08NGDa2fi/OJP0dJUpeRBCdSS+VMf6eqVMipqP3bqrFeS40VctK3auS3ZVQusAeicgVJhtKO1geA4Y9sOtQs/auDB8aOry6xAKtvxkEwHRkR3ynsrdK7egsqeO39JeeyoZvPgH1Bd9zmTa1dHhpkSrTxImyAiBhGlJHa62wIwLzD8ACDV+hAQlNmLPJ79fFj8viourW5JufK9pMlxscPxDr/f3hhCRClQHoD/HkBHU7uW/GgCINzkzy86qtgAJQSP6KYUpCZQErUyWNAu1dtsLwhVALFuSLVSW5Q5iPnSEtY4qJ6mAXBQiPKune2SAQjfN2/fceRkgfiLlouHea0W6yY8k1ImtiWGbXoAENjxlkWCZDficW/Dk9k+tifQ3vSwhAO2n0pKz7aydZhxnuoEwPM6jhp+PzM91aS9J9Ye44MkeglWyH45cQQ38iAsnwqJilk1dMjfEt41O0dlMVwW8ptfNzU7E73LQlp7BuobExY8nGnOC3bF1maQVuNCtuwymbqSqi3aANR3nMPQmvVJ8T3o3mUBFQCGIDbU5g8W6AFcf2XwIgYEz1FxiU9OFR36kIxXUskDAlA2at6z5/GMdWu7kxFs+R29/N1WQTUai1LNHlT5RctFnz1+hlnxQylUwQIICpatLC1jNK27BYmDA2Q6dpNODgq8o9XlmgTzsMjLg0JlesibaVQKlXGDZDzpAgD79u0TR3VV3+68IvtzsjQVWEV7Jm8MoGlkdoaINBsC4BZ4+vwue/kyrKy4MIMqs5TUVpUY7LwY6HfzpiKBIAFQ/EdllwaLYSbgAT20UIWouocucBpLHjpBKioMUrdWKGLkJAQR0Yz6A78ATs7ePEwnAjYuLjlN9vRpnQ+dl300ljwUwGUBISEvGl4kZa5P5WB5YQDPjMcjVRkiFdHmozSwuZmQsq6xt0WvyVRtHG2HgTVJ8ML1DbLDa6LCeXRVsz3AA3OwT5z/273/yWzJHmEg4o+25KnGgSOG9i+2GzbU3t/Tg5GktWSUDbVtGYokrfumqf5F/cGi/XvnUnUMeO0Yg6eqxrV378azKYVMHQbKG2r3fswvfMLhGC9l6ylM1sADRiEbGT9yWPbL319NiQ1fwWGa0rEBHoQsW7NzZFwT3n62Hh1EF4VV8FCitnYj+9t8PGgXh2P0j2Df5Ry69pBukIy+YIuCJr1eE8zEtmldbbEGABBHjrRPv//w4US3OS48bb/oA6EHhCXlF6TP+lha7Cm7eGOVNkDTquRhATlvkcfy5jd/euohekOGD/s7D25k2drYMHIwIGHlFyuQE6dKkQvSy/VcE5Mrf8hfJ7Nl08gcilbUlmxQeNX2g/d6uDfIXtl109e3+Mi6r8GA/v14f12ixn6B6EWDDLlRfUtBurRMInteX9/MNTF51E3fQHL1+s30tn6dm3aGQQaOpt/B0XAMGu2mT5406PavdzEfgDExNpIZGhqdlpwvf9TYxJFqUx2p8t8ukkeVuY7e7v/e7DWbjecu0QAAAABJRU5ErkJggg==", - e: 1, - }, - { - id: "image_3", - w: 81, - h: 81, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFEAAABRCAYAAACqj0o2AAAE8klEQVR4Xu2dXXLbNhDH/4DzHvcEcU9Q3aDOCaq8N6pygspK32O/J4xygipM32ufIPINnBMkOkGid5vILAlZlPiBT0oUCc54xjMCIPDHXexygV0xHPgSk/EZTu4HEHwAgVMwDDSmtADED/CTO9zjjs3mPzT6NNaENTZyxcApNP4wBNg5APp76mEOSzAsgOQaD08W+4a6F4g5cGMAv3mAphriBhDXLPo0VzX08XmjEMU/43MkyQTAHz4mazHGCsAMCZ+z2fybRX+tLo1AlPAuAfyuNYt9NGL4iAd+2QRMrxAztU1IhdoDb/sBrSVz5nPd9AZRTEckeW/2IVQevmMJzsfs7XzhYSw4QxST8UBK3z4Mho973owh8AEiVXEnF8kJopi+HANs5slN8QtIf7QvSPjQZa20higuRjMw/K0/11a3XIHzoa16W0EUr0dzCPzVaixWkxOvbHxLI4hiMj4FT2gxPr71TxuqOUgziNPRXbcBrkmbgdSG2F0VrhJRfZBaEDtmRHQVe4WEn7PZnLSv9lJClG7Mv6qBOvo5gTxT+ZG1EKUjTYbER7jqWDnfsiimkF3lVQ+xN4ZE+XyvWBTTa23pVQnxyN6FlRScGyT816q3mlKIMhrz1fmLuzVApVqXQ5yOaB1sazjrgI+m3O0pQJQB1c8HnGmbv3rJovhsd4JFiEEKFQ+xKI1bEIMUailBQRq3IU5H1wfcVNK6g1Y0YskL9u4/YpVejxCDRTZ6PFuWegNx+nICsPdGQ/W5cc5vzEHsS5jL15MXFyz6RFsjmToHVbYC+4VFcXpuKIMYVNmKIhL+C0V4JMRgla0oSiu9hkj7rn0Od1kxhMAH9j6esLAe2vGTvVJXh4nXfw4h+P9OQ/W4M4tixkLc0FECyF/s6SaUI7lcd86fkySG2KEL0gDRhd5j36sgie4cA0R3hkghBkfbjWSQRDd+ae8AMUD0QMB9CHERrLMrReknHlPqhOst+++fQQx7Ky5kswBEln8XTjzYkUz3oCmeSIfZv9uN0fteNyyKh+vINmVgPus9EnMA6bnFDGJn81LMqRj1IKPydr6QEEN02whe1njFoviU/lnvO4d10ZQiw0f2LqZKArmzOOEwkyHGzRG7/Fkcyhjta6qFIcCNKm9JYmpgQlhMD2ZOlcsghldAHYw7mQTbhzyzGg4ha6AeZCGLoHhmO/iM9Qilb5hvVISYSSMlBYazOUWcpbksVXksYW0sk8eKrKqqjCpyvkkaw/v0BmZlfl91bl8IkeVlcYmED6pSduuzTLtVcUTHeSlvU2JMag1L/sN+FM5Qsq1N0y0422XDyUOgfbXWadBVhVlZviB9Hezn+kiVm6gGhLIElhbE7L06LWnVlwCFVu2HtYRqQ+wRSO0qJFYQewDSGKCWYSk1Nt2oVrd7a9pr4G5HI3XecX+obmJXyr3cIOFjHSNSJlTWEFPVzvasKe/3mOtFKP1ALy6OapAjTePwVhLVSRJ31LvtRXnz071Cwr0V5/UGcT1D6U9SKK2NEaBbufZ5rbntHWJLYd6C80vbcqeq5awxiI8ws9xB2uTed9X3FRiumypQrh3FUT0Bk8/39PsDGTghFja1YU3u5yAQCyG2k/tzesGXPx1i6yItAVCE6Q6cL5pSVxXcxtVZNYFHtacNsifISkglSUW9QvkbLHT+xVO1dt351bX7Ce56/7RLCC+NAAAAAElFTkSuQmCC", - e: 1, - }, - { - id: "image_4", - w: 34, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAFCAYAAAAg7j5MAAAATklEQVQoU2P89evXBAYGBgOGAQT///+fwPjr168DDAwM9gPoDgZGRkZHkENAIZI/kA5hZWUVZPz582cDIyNj/QA65CEbG5sC4wA6AMVqAG1DFH/VB/4kAAAAAElFTkSuQmCC", - e: 1, - }, - { - id: "image_5", - w: 38, - h: 11, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAALCAYAAAATD/9GAAAAwUlEQVQ4T83TsQ2CQBgF4PcrsWYFN2ADKcRWLbmYiAF7NxA30M7EI6E67aQ0XKFO4AquYGvBmYPICvxvgi8v71Eg4j1AHhhFK+nTRCSFAaaMXB+tpGthqQG2jGDPprEwnhmiKxcYAbtSyZQCsfYA82IDM2ZenrOCLCgQieEC61fO8HY5vv+wB4ARB5xWsjY1sDDJQVgygNXDb2F8nmkOWmWbFjZeJD5VuHffGK20OuUtzI8id/B1ammX6VVObodvDT9K4UEMbGGsJwAAAABJRU5ErkJggg==", - e: 1, - }, - { - id: "image_6", - w: 38, - h: 35, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAjCAYAAAD48HgdAAABtElEQVRYR82XsU3DQBSG/+eGlDABUBAowVCYijABYYOwAUxA2AAmIGwQJsA0+ApyOF1yacIGoQSJO2Qrti4250QC+c6FJUuW/Om9//O9R00/mALYhEOX4Ixo1w9CBZw4xPUhOFunph90AVy7AkbA85izFu34QYeAe1fAANwIzrq0dxS0pMSTM2BE52IQ9SkBavqBcgXMk9gexWyagTljZmJkUqT05oqZWfBzMFfMVKC7CY8uczBXzFTAxYSzXg7mipmeh9PRKwtzMFfMzIJfBLNt5lBwtp/9tlIrnTBT4UG8sU4JzLaZBLoa8+i2BGbbTD34CxmzbeaXbGxM43BWqphlM98FZ1v6eZ2Hfw5mx0yiRzGI2kYwi2dmOoNVVczKNFsM/kL4kwdbZmYzmLFilsxMl4/ioLoQfhtm6jOYsWKWzCwFv5QxK2fmfPlYpZW1mqmkdzCJX+KlYHWbqc9glRmr00xT8H/NWJ1m6svH0lbWaaa+fKwGdnjch1JnxZf/+9kUfGMr68hZVb6MYDWcm8Mv2Wjpg+FKrcxeSir3LantQeXby1/aqYhmpBB+yrVeFVTyjR/kBdckkqkB9gAAAABJRU5ErkJggg==", - e: 1, - }, - { - id: "image_7", - w: 54, - h: 58, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADYAAAA6CAYAAAD7h6qmAAAEkElEQVRoQ92aTW8bVRSG33NJ2wTRxnxHoqhGSkJ2uG4FDpsaqRJLDGsShh9QZAxICDZmg1hQ14gfgOOwpu0vwGyIhcDMBjVNkHBEQBFShRMQ6od9LzrjGSsTz9gz9tieyV0md6793Pec9557xoSIDpXVEphCDE3oVCw1jmJQVLgMEJIaCGkALxz53jsgmaWrX9+w/h56MJVb0QDKOsA4aKLepcJ6kf8RWjATKA/gnK+okuI5KpbqoQNT772ZgRK86/6AOvRt1UIDprJaHEKWAFzypVD35E+oUM6HAkzlVrIAcdjNDgnFj08eTGW1mKnSawEAWUtMFsywbyHZnvvm0g+N/3DQlLj8xCP9+aU4T8WSPpFQVO9raUgDqmfo/XH3AUq7DbwUm/EGBexQoRyfiN2bNv5Vv63/sn7HmPLW2UdxZkr0m24Lw7GDeYG69e89MJR2NoYXYw97BeJ5+5AibpVXYwtFL1AMxLl0Jf64H5VMePU2Fdb5uDDGWMDMnPrWbfs5lz7c3DPCzpNBdC/0HRXKXEN2xsjBTPeruBnFN3sHuL63j8+W5vDM9Ak/oWfNtYXgWBQzzymGOlqNG5/PKp2eeggfzz85CFD7GSFeoc9L/Bm2MVLFVG6VLb3r8OXQe+eXP/H0qbZC/zRbRm4ddj9W7425M30MxJ5XYwlFN7Ng1/vgFudTDOdmTvh1vsPf3agw3KQeiWJmQasfzSvOp7Xdv7GeeHYA17M5wxpdLWu94nc0YA4hyFbOIfjR/FMjhxqJ3TtZO5sED3a+oQahr1Ijc0WVW61bhS0bwqe//mXkERvBUEPhC7pW5haBpxFoKB42DIZa0X83Dt2hoeDufmMxD0utSUMFmmNmr+J6gFD73G473FLzFIPmpMBCUeVWKwdNeSmg8NuBFBm+MPqBCfyA5nPrQDZ/CwjqJqTQnLq7fiADUYybMSv67rXX52aHMYp9QOWthqcfCKe5gYBdefXynQuzM4+xAw40CGtoieywKgUaiovnU6Wl0yfnb16Mc6fFsYp3gd2Bwg1ujnLndqAN6fHQUIotJFMaEWW2ftrI8Ge0a8RWGiBuqNgufiDUoVAHSR2tKX5DEjhMIIotXUylpUTxvpxO1/VK12ucoBXwu95Aii0lUnEpULkvpxNhhBrogI4n0rGT4m5FSaFt698PfM74VcDvfN+KsVkQkX67tmG8hwrr8AVmmIVCeuvnas9LXhhgPYMtJF5OCCGL9+R0Jqx55dsVo5JXvsEWkstFAdTDnle+wPi8UhL527Wq/cANQyINU3ksJlO6kMhs6tWRVgpB71NP81hMpvIEakQpBK0NcgWzXDBqIdgX7PlkqkISWtRCsCcYG0ZLUma7tuG53RV0jgy7nmMosmGEtWr3CtwFxmUTP7xdq3beDnpdLEzzusA4t6JqGK4H9HFRq+s+dlzUsoEdJ7VsYHyBjMI9y6tBGebBVQYJmdmqVV1ffXpdMCzz2mDJ5eIDeSofhQuk143rgEW5ynCCpcULyxlBqrH5Y7XrtxJedyeM84ivJscptzpFMDc/o1rB94qU/wFKf9xK8MSEOAAAAABJRU5ErkJggg==", - e: 1, - }, - { - id: "image_8", - w: 24, - h: 102, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAABmCAYAAADRX1FJAAAFjElEQVRoQ9WaT2gcVRzHf++p1GpJt1ghqMUVzJ+CkM221U0PGkFvQlOPYjYjeLKI240HwYPxIHiw64Lg1elGPWoKelIwXrqrbTcb6SF/pCa0StFKk1YrSPJGfrM7szNv3t/ZVPTdksy8z/v9+/7eexMChsMrORmg2w4QkvNf8bwWsDtcUnU3VFMQk/m9kpMDyuYBYC/3/CYQ5pBTH8/J5tECFJN356T0afKeiwtIDCWg7RbWAoCHNZZuAqNZkbvUgHJxBgDeMnEjEDhNTtUc/lkdAAPI+13OY/QRUnXXog9IAV550gEgHxmtvvvQ26RSQ6vDoQAUMTOOWQLWSaWWNQXYuSeYlXOT0AJv+sUJ8OjnlqvvPO69RCqzbvCuGHCyWAUCr6UCcNkkBpSLmPsjqQAAsTgkAJ3iup5y8vZrjO4Lii4JMPD/jS0GfXdS+Roi0pEEGFTv9xu34PHMPSojw3oQAVC0nlK9rQVEAi0CaPP/g7Xf4dXsfao1fEsqtXF8IAYwDbABYJNUapkk4HVnHBj7RpdBp69ch+P9e5WBJpWav/i4BeXJEgB5XwfAGOBQBprRUVJ1WxzATP+NAJ1U5QHaDMKV/ysALLZn9u8JvYk/4+gWoHeSVGarvAXaFA0s+G7jr1iqvrF0Fd4d7o+Gzy82HuDpAox/x9ViJgW1gC776tqf8Oaj9+8MAGeJ1sJk67K/+gfvvksO8EpOFij7ycSCKABX/9nVG7x78JG4izzDIgsWEFggWT1WmL+NCWNgC3jnx9/g2f33ylaP6/D1KDUAV45D4PvAyN4Ax86vw8E9u0S+3xnAk/VL8MWRrErwerPguXNrPkAxegNgDGZzB+Tzm2TR19f+iOlNdDYtIFEHgkLDXEdBw2DywxqAE3jlYkyLUHNQxD587IHbAwgkAS2ISjP+Pq0FeHiIHZfQCpzszOH4KSotQNjRMBaolM/394WuSgsQHjpEVmgBhB3H461x0+et0ALETV9+LuOteOXiL8LsCn0oBGh6QmDFE5ndvkwrt48igKgWRAWGE/NNP1Eooo1XB6A83eDKL936G3ZRorRAuHX0AdNFFzyYUsnkyz9cgZG+3SkBBvvTL3+96VuhioHcgvbVzYLKAtxJaGIQHgRlp0zlDg+zCTNJsbsWH0CCVXtl9TWCFqA6QrUzSX0RogV0mg3OJXaRZpenBaiOsRE3SesBZQI3utxetJsXqoN4FyA/TmmEbpFUau2bSZmL/Dgo3KQGtA8eWkBHNoQNCHd1fIcL/WNyXxRxk/BaTWFBmP9GFnSsSBSdFNDpYlEV0F/McpdT2HhOXPxZtKtL3Ncpgxy6iQu2VIckt79aC3gJlwDOkEptQiSQZoCIwmLDubm1DVMP7Qvmk14rG7koUtl+yiZkQhBYqyBHYuH3iTggXlSpXRRCpovu5MLlKf9cILkM5yFGMYhm1AuL66uf5g98Irpp79kCnGDkyNHlxXNnh0ST7QhgKF+YX242/Ps4k2HlouFcIcsIzKwsNBIfImQwO8DhwjhjML7SbMS+EagssQIM5AsOBZJZbtZDvde5yQowmC/MUArzS+cbwi9OPQd5cLTgUg9mllqN2HeaHXORbQZZaRE+/P8GYA1sU1JabdZLusxJpabDKWrAKgZD+bESoV7LJkWtAFgDHqNzq62zuKU0HsaFliaD7CwYLbg2IheY+N+wYCB3NEcom7BRUSsLMEW3GWRXm43wG6VplI1clEZFrSxAFU0TYOMsuv2AQ2NzKxfqwr2nLhbaGPiNnoKTJoOMXOSLnEcyKxfq0v/+6KmjpdUg4yzqJcBGLkIL0vrfCDCQH6vadjHjjtZukzCeRiKMYuBr0BbdsG0yxhb06n9tDHAv2ot7tIDBQ2MTaQvMKAY6nTH5+z8LhDWUyuow+gAAAABJRU5ErkJggg==", - e: 1, - }, - { - id: "image_9", - w: 34, - h: 115, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAABzCAYAAAD9ldCQAAAGEUlEQVRoQ+2aTWwbRRTH34wDDShpXRFEoEUYiaRBQuA4Fay5YCQ4wIG6XDhAXHNFqnBTkJA4EA4gDtQ1QuLCAddB3KAuXBGEHoipWtdIVKROJVyVjwiKmpQIEmh20Ft7k7W9u/Ph/YjUztXz8dt5//nP27cmsEUaseNguWwUqJ4DgCwA3GPp8z0AlEGnBVIoLnn5DF0gLJeNA9WLAPCQy0LLAGya5GcKXsG0gbR2YpYDsbk2gWPkSAl3refWDnI4UwQGB6RmZfAeOVrCMPbUNkBYLhsDqv+kNBvR95MjH5eVxrYGbYIcyhSAwMuKky2DTmO9CHgTZCrT6DghskxvknxpWnaQ2d8A4YXl6jUdtvdR3hrLJF+K8jo5/d4EOfxCGhg97tQJQU4t/Q1PDA1w1mEvkvwMHn3p1gSZyuCWvuE2+tjPV+DA7p28BU6QfCnN62T3uwmCit/nAQiATneqiNYEQRN7jAeyf3jHhlYwVA9Hb7UZohYeE6TGc9MfV9bgl9X/DJ2gZjBUB2O3dYMouq0JwkTi+taFP+D1+243hPvd0j/2IAAXSb4UE5nP2kcJ5P3Gn/BI9BaH0ADq5F5SKKIvCTcpEATAk/Pa/KKxM7v6b7JfSMHypUAwJKY+ZuJ3uz2ttMtKgeDKqJP5lVXggEj7iQmC2dYOkYAiCDYMjUv7huRLKZH5zD7CPmIOOHjuN3hyaACeuWPQdR2SL9mmoU6DpEG+vLxi6OTZ4e0+gEjkIgjx9oXf4Z2xYfedlzzCrR2ZzAGQo3Yz45HtdNCXfvgVPnjgLncQSh8n7xbx6hBqTZBXsinQ9a/tRny2eNVwUusOoGCzu6POPoITqYAYMFMZR5vvhBHSSQ8grhcfuulgX8Q4tkI6UQYRECxqA29fPDFcnSiDuOjE1A7uxGTtkqEXDJerTlRBWjrhOizmJRim5+7cAf0R6uwnPYEIvumhWL+6vAI6gLOf9ATSfAE/K3Lw8QjjsT6x11os2BypZPHWhdlUhps2mv2fPtWADx/cZesnHoBMZgHIRyK7goLFZnPvSKeL9oUawddPTKbxCrC5d9TSgM6nZ1Piu4LHuStJUsjkHXMGUa3gUcY89v6BbdbnUUsV7fTgdhFa+6NO/rq23v46Knl0cT7XLIoJ2D7qBI9yW1qg8NrJTedEQrTv9EWrn0ifGO6OGLbfLGmhtzgm1x06kc7ghUBaMOi4mG3ZwrTrhB1SKXtyQ2MKs1V/xfJFl6e36UQyVzXnFwZp7QxWpLEi1FVLaelESR/CoekyvGbuglWmjZoK6uSpocFPUqVPnxe5Hjr7SO1IF5BxW6+ngJB48dIV7fPF5S+Onzz5auAg1gXH4lpMj5BC/cyceg1N5QnsxowmtFq9WomrzNdTaDoXHB3XiozRwkLtW/QdqeYpyEhCy1Ig0fPVOenPJ56C9KITT0EwFqo68R5EUSeeg6jqxHMQVZ14DqKqE39AFHTiC4iKTnwBUdGJLyAtnTTq1YrwxwH/QCaSZbrOcvO1itDHAd9A9iSSOR3Y0kK1IvSNzzeQkfijcUL0XP1sReiTvW8gsn7iL4iETvwFSWjTQEitfmaO+78BX0HG9mqpdZ2kF6pz3H9T+AoioxPfQfYktNnz1Qr3I5LvICOJZCFCWXn+dMX1S4XvIKMTyTQwFq9XK65/6fAdJBZPRbfR1TIvPL6DiAo2GBCBRCkQEJELMBAQkQswEBDUCc9PAgVZ0/vTjdqs7X8cAwMZTWjTlMKsk7EFB8IxtsBA0NhujqwVnSpKgYHwjC1YkHGtSBlM22X2gYKgsTECDbuMLVAQzNh0HVJ2N3GgIG7Gdv2CYAnUTrAh7Ii9YAMHcRJs4CBOgr2+QVCw/7L+nDUlCGlHkjlCWc2aEoQCYifYUECMm3hcK1qLOOGBTCTL1tzkBgjmsEynZfNrV5g7YnyENHOT0ECM6jSFrJmbhAZinByLYEMFwSKOWV8LFcTqJeGC4NufDkXM6kMFQatHreCdEy6I5eSECoK7YQo2dBB0WPSSGyDmXym2zo5MJNN0ndVCDw0W+iJ9ejR0kObJ0bJbAgTr9f8DEAsw9iwi6TgAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_10", - w: 71, - h: 35, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEcAAAAjCAYAAADG1RdTAAAEMklEQVRoQ+2ZTWgTQRTH/zNJtdZW6yfiB+agVaHgUr9SEczBu8Gz1r2LuFYPogdz8qSwInp1RU8eNL148mAvNorWLQjWtmBFBRE/2irW2mRG3jQr6TaNu9ltIiQPloHNzpuZ37z35s0LQ0CRhh5DFLE5arIYZaY1GlB9Vbszr6NLQ29FJJuA5BqABABql3voPw7AhoQNJm2IiM1My/bQr+qflISjgPBcEmBJAIdDnO04GNKASLMrd9Ih6g1VVVE4ylUiIgUJguLFOoJMahwSFiQ3/zc3nANHdnelAFwMstoAfXvAuckuW48C6Ait6184My4kaFI7Q9NevqJeCK5X25IUHD9gPvyaBj1PxibV0l/9mMKO5sXqHT0ke1ubVPt07OdfPC3RCLJS4t3kNA6sXIplUY59rUuwobFBPUVF4iokTzHTGiufc/k9Z+Cc7jLBcKqYGlrww88/MJEV6tnYGFUwSi7KpYj63Xr/TYG8sGWN+tUBTC29J1gElYA5cPNqxsGEXo3AzfJW820+vjT5eXfWw6bQws8NfsTJ2CocWt08bw8CSJZGFkktjUmgqE9+/J68q1XMipg8czQJye97WKfvT+59nFAWc6N9vW/AjsWSDoJDkI6sW1ZRK2ILdTo5YG5rm5TLBBECRfrIvcnlDq9rudne1NS90LFoQeCECcYN1dG9eUnD1z3Llx7rutvzIAj4Un0p5mjg4kVYA1CMuTTyCdfbNwS2mFJzorhkvvmSHfn5u+f7VO7soJ0J/R43c1p1d1F+czAMQMfsdzi/Za060SogA9t6h1OQkhLX9FB/htrQxHeeU2rka6NflLUc37gitAmWUDQAwRNO3GnriBOYJOcwBp9lQsmw3RkyXQLLsiA6ik+8/AAKwBWQWWCc8bZr8ZjksASYPS0Wp0btR4GO/bl3q7N6AkLQLviCREc2uZIrgQufE8Mt5LhR6qTa1tFpADIpBDeG7cdll0fmLVmoQM2EDgbdy82cXIoSvQWUt2DC8Jopb9X2a4wLSwLmcH/GKmdenopdKlEET1aohOFeBxXLTAhV0vDlJjEt0bqI/TJJ4dCLDG2yL/EEp1BjASiqBm72NZq/jwcAaUJE0n6huIfZ2hHXOaBPicaknzjkG84sUCpHyiXAmAapSqdBYfUCMp0HEmre0rarM8mkNPwACgSnmCFIFdBzMYA5RXeCVkxmjlsmbOSiVIwvO3B6NUiKQ5wL0yug0OF4nWi1vnMC9W/RmPiXi9UcHNoUrxZUk3C8AqpZOA4gFpGpoed99C/LHKlpOApQR1wHmDbc32e46dQ8HAKiLq2M2UPP+2b9wViHkzeXtl2daZ6TRmFdqA4nD8e5ahReM+pwCgLN9t3xhBRMe93fp+5jdTiuKEzxhwtY5F51OC445F4NfCpFp1cdTpH8htwrl+VjdTglLnl/AJm74PIgmQN5AAAAAElFTkSuQmCC", - e: 1, - }, - { - id: "image_11", - w: 59, - h: 87, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADsAAABXCAYAAAC6Ez2SAAAGNUlEQVR4Xu2cTWwbRRSA30xCCSgtriCoaotqUJu6aiXcpAKbC64E50acibscAVV1Uw78HEiFQByIMSC4IRynFy7g3JFIJUQMKq4rKpEmlWpEgqIUFKeUkhZnBr21N2zs3fXO7mzs3WakVRN1ZjzfvLfvb8YhcA81YsbKU0oIuiEKvBoCTkJAu8pQhQrJZEt+3Z8mWP6akgDGUgBwwgJqEoDngXXlSSZb8Qv8Blg+khwFgLcFFr8CBPKwRkdJJlsWGNeWruuwfGQ4BUA+dLGKc8BoppMlrcLylBIGyq67ANWGrgBhChk7n5cwl/QparBnk1ngcFLi7JPAqNJpUiaq1aVsWSLo/1KmdIh8kJ3yYG5HU5K69f3WavQ3f9yChdV/4eTenU4+5BxJ59Dwtb0Ruxb4l1t34KvFm3Aq/DDs6KZiCycwDms01W61tg2LdDerDD4p/wlPhx6A5x7pFQMGuAyMJtoJLASr0aGEUa1RyoKtrcDEqX9FtX7v2hJ8emSPqFq3DdiWgTKTHqr1q1cW4M39j8Kh3vtFhNwW4JqfHUlykZU29n19ZhGeCj0IL+zaITLNpgNrsBjxWAX+LSHG55cBVfv9yK6Wfdc7EBgnYznF/gB3PesR1ItDwOnX7qYC1TX9WLmtqrWAe9o0P6xLBJKYtexzC4yw6J6EDBelxzcj0tJnPQoA+cItLI53YKlXgNGw1z64MZ+VIl09sIClniTp3JCMzTabowF2WJp0NeBXrvwOnx3ZbdM18ZdIeiLrFXBzWWYkiVnKs7I+EFVaANhTdW6GTSlRoOySLFhhCXvojgyri/xMMgMETnsBPHlsX2u3xOhRL6qYxrC1hB5Lpq5dkX7DBKz0BZLOJWRuNs5lXjc+KyfQaFww+uF3r92Aiehj1hL2wPeawtZjZtdhpJF0MNLC6gdaaYsmXbrWsDV1Rt/7kGyVshVLS5auJawqXQN1xncPH0zgtYbVC61FentaGyEAwGwJU0PT2pZky9wStgZsXGrF90/ffqj8o/6KG/FXdU39eU/PfSoQPpgGNrYTF3+Ft/b3Gf6f2pfRnbLCSHuwNXXGYONJUXXWtAD/xc3BbAjrV/jgRmABAIHPR/eqvzc3foakJzKin2vU3xasKt1asIHArt5fhENorTyL0Ie398A7c0tmFvoySeeimwpbs85yY2ecE6HxWbpThd5uCh8fNrDQjD4u4+DMtmS1nbVbZ3YiiZd/XoDn+7YblHfkqLIwrJXBcgKoH2NRwJPicx3BegmMhgxdUlOEJcEqO4b1EhgDjvnVquqS1puEAMMVrJfAw6Xf1BMHnW92XZhzDesVMEZnmPTr1Nn1eysF1iu31KDOKySdC7kxgtJgdYEH1pCEIy0zCL06k3TO1XpdDTZbYN0X4/UiV9EWzr9Bnbd1u6ovewJbl3IYutiojLsaWHTHduqJvs6EXY+4ajdx8DwHH8dlnuOF6zB2aPdHg59/iRrjqHkmWaPVqLkxowkggMVwIfDp5dt/vzGzOH9h+ruII1KrGpTTCe2OW78byVgCOISAQHNmw6EEhJeBdpXwLKh/MJ6nhGdmLhYc3cDZVMna3QizfpFoLMwo5GeLBUcpn69gcRMODMQzALw0VywIH5P4DjYcTYS20dUpJ9L1HSxKt38gNsoByqLS9SWsU+n6EtapdH0L60S6voV1Il1fw4pK19ewqnSPxrJASX72p+mWt9d9D4tRFaeQvVostDzP9T2sJl3OaWau9L3ld44CARs5FkuwNVBmLxUsrwYGArZumUt3WU+iXJoy/VJVYGAPDsRTDHjFKoQMDKwdNxQYWM1QUQ6jM6WC4VflggU7GB/iHBJzxWnDOlWgYFG6BwdiU2Y+N3CwaiWDkayRzw0ebPSZKFCuGKly4GCtVDmQsGaqHEhYDB85I9GrxekNV4oCCav63ME4pn0bruFvwbqt3HfC+AMDMYUQUtEn9YGVLCb1a5Sk9C4osLBarKzPcbdgO+Gdk7EGfG+7KJS1I85AS7Z+xKnMFgvqHxgINGzjext4WAwdNYsceFg83rzLejJYiAs8LMbJqM5opIIPqwYXWKopZAMPW8tv4ynMgLZgZTj0TpqjfzA+hAnBPSFZDC6wlvwf71H5doYXD8EAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_12", - w: 32, - h: 32, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAFlElEQVRYR61XS2xbRRS9z387/jtO+g0pqG1KJRoCiwRBa6QGugC13TUpEkakKzYVe1ArViAhWICEVEu4EphuSsMGlRpUUxBk0+JCVUpSkbZJmp+d2LHj2I7th84085j3/OwkiJEs+3ne3Dn33HPv3JFoE2N3T2947MZIVLukq7u3s0oG71jyl+QmzLFXpc0s2PN0b3T0t5EwX/P88ZOvOK2uW3+PJsNyzTD8vwPY3f1cNzfaP3iqOzM/80GL27tjtVzat7KcJ0l6hN9qd1CL23OfZEqQJCUmbv+RqBoopMeW1uGmDOzu6ft4287HLlpanO8R0SEsXph5SBa7nZweHxVyS2RztNDSYppq1Sp5W9vIYDRSamqy7PR53/9p+MK76zHcFEDfkeOfkNHwFjZjm89Os40tNht7zqTm2KYY5WKRFuemKbi9g4FgQ5ZukkTheOxcsrM75L2XTGQ2zED/wFCUJHodnsFgenqSXL5WZXMtABFEe8cucZ/s1N0711Yrla/1QqJiYM8zfcewsqNrf6ck00fcytJCmv10+wPsu1hYZtTPPhgnzWYsLJj3t29l78KBWq2aM5mtB8HEugw82XvwS08gOMhpr6yWaXF2hoI7OpS1YMPXtpXFnocgn10kg8FIDpeb5icfkKe1TcUWEd1ftVS6E9GoKgx1GugfOJUsruQPWKw2hXoYM5ktKvDwjAPA73KpyFjhWinksuRv38YAKUOm8xN/3jqD5zvJkXv4VgHoHzwVJpI/5wvgfTY1R4GtO3TFDBFiU76x+BJYEoEDJERaWilcXC4ahrggGQBUOKoZkp379kdJkg9wQ6LqQXFldZXcvoCi8mYAkBVYw7XAbUpE31yJRZjWFAaQInar/Lbb539HFBq8F0UGoxg8DSE4ZAgYgIcQn0i5nkix3lgz7bp84TN1CA6fHDotKj+fWaRsep7sTpdSYLRxwIYIk8PppvT0VJ3wtGHgWVHIZj5NzcxGUGUVDfC8F1PPZDarRaRBAAD48EwQp8FONjVPFruNAlu2KykJ4ZIs38rNz78KIf4LYHAowcstVzLCAfVzMZqtdqUW4J1mADCPkBXyS3oA78djkU6mARw4RlPN297xRMxisz+qHkS6RUYvBI0YWM9OPBZhzksQoMVYCgW37bwEb7nAGglIC0I8D/RyVWuHl3YFAF/UPzgkiwY2CgBCQ50A3cgalz+gqgtIZTEV+XuF/NLZ0RsjZ3Q1gPxF+UUh4Wmp591GQtWIobHbd9kR21CEqOdi/f+vALQMrNkRRNjTG5Yk6ZjT67X5Wre8zM9yIEd+c01sFgBOUGTPSj7HegTYwTOG2WxRqqHCwEsDbx6TJekS30g83fAfDJYKy3XFpplWILjUwwlyB4KKLqCZarX63c1r8SOqEITCYa+5bFrkAJrksIoMTjG8K+Ry5HC5lJOzkY3ZifGBYqFQHL3+67DCANIx4HeM2Fqce3k934gOtG0ZCo/T42UgtCyuIf8xHouEuBcKgL09fac9wba8JxA8h0nQN33vLms8VGe6RgzN6gDY4Y0qwEBTktn44vdfRFB12ahvSISSjLhDPHrnPTfQDIDIICpmNjWX+v3nH4KiD3UADr82FJJqdJUrNp/NqGo5DPFuCYb0APDYo0UT60hmduZEJr3wl3iBqQOAxtRitX3oa9vyODznlQ6n23I2Q3aXi7Xm6zHwcHyMvef2t3Ky34jHztVd61QAup7tDVVr1Ln9qa5hc8mcQHeEMIjKbnQWaO8MeIYDTD8ynY9/FVGudE1DwCdZWpbMiUqldADp1agk8xCITSoEhyxg2mmyua4IRXQAYSmbotmF9NFGAMCQdo6HTSI6eyUWYV1wo7Gh2/GhoydeMLuca/cttanU1KQjefXyt+K/uK7ztrvZ5pj7B8Gg8d8XF3ftAAAAAElFTkSuQmCC", - e: 1, - }, - { - id: "image_13", - w: 35, - h: 7, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAHCAYAAACC5PR5AAAAVElEQVQ4T2P8Xxg3gYGRwYBhoMF/hguM/4viDjAwMNgPtFsYGBgOjjoGRywMtpApSDBgYPoHSjf8A5huPjL8Y3JgBDngP8RBEwbMMf+YChgnLLgAAK5bH6GRVd9QAAAAAElFTkSuQmCC", - e: 1, - }, - { - id: "image_14", - w: 31, - h: 25, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB8AAAAZCAYAAADJ9/UkAAACzUlEQVRIS71WXUgUURT+zqyWSpBbFmgoJYFEL4pvGSahj5URRZBtC71YBK0//dBLRvRQ5LTZQz1uU0Rv/UJEhYlZL4n1UCCIhsVCsbGKtmtre2/cu851xkHdGbbmZXbv+c75zs83c4Z4WyAMQjVye00A+LBkSKZFKBVq6eMc9bnlXj7aCsrz06t9TTdGJqdOLA/PHSLPp8WOPn+7jr63Hjg98Tt1eSo1q6JHfyXVb3E+bbHlIoVV+fnvDj3r30a8M9gAxnqzDRqdTijo9OwfeEl6TcHKK/uf9p0hHgoWQ2PxbMm94lJpplwZZzsLe+71kjjh7QHuNagXP9INyWuSvwaww0sgDz4fSTfko50h7whEwHHEQyD3LoTb1G0ErZV3ATjvPpIXD95G+p2wpfKWZnDtgZdQrn2YVkPhiHz7ZdoeClZDY0OuA3lwMMWmyP+j4vtINxrMnGXl4mKXOr9htX/DwmJ4WQV4QaGrGin+ExSPOXx47MctX9f1Y07ynovv2eYtta5YXIJ94yOnqPXsVQd5uuvkTSpZ36o6UVnlMrQTTjNJUHRcGUijejp+rt9BztsPhwC6Jg2FRUAyoe68sgo0OixN3F8y31IrThiTCbDtTdDevJjPxMQAk6QbxdYU1cytC4bV1kEbHEC6cTd8Lx+rOy8rBwqKVCJsaw20T0MQyUn1jg4rrEzUjreJza72UHAjNDYmDheSimRk5f61isSKW4xcdmFwINNF4ALphniZzY/B+sdcMIp810H4ntxXlalZzY3AxC1Gnp7zz2TM9lL33YdLkcsFI9pJYn6VVbLton28tALa5yGk6xrlWTaV28iZtonCkS9LkYvM9kgyfwl4abmDyKw2G3KL+Bxis81cCqQ9oBaMcEQ8JgUlbXOKt6rZJriZBCj6VeFsTw3wiHSj2Vq1k7zjny0Yh9ic5BnFy12b00t8oy+Yt4j/F2C9Z/db5FwNAAAAAElFTkSuQmCC", - e: 1, - }, - { - id: "image_15", - w: 78, - h: 44, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE4AAAAsCAYAAADLlo5MAAAB8UlEQVRoQ+2av07DMBDGHdduK5WBbK6USqlAYuQR4HFYeRMGeAikvgNl4B1YUCbE0opUcqX+SRPkIUikaZ0cLkrF5y3R3eX8y9n5dI7HCkNrPS7eO9brJElOtNZnLvIXQtwopR7zWF4x6Hw+z1w8qAkx1us1i+PYSSrdbvdWKXUHcDVxAlxNYLk5wAGcnQD2ODujUguAAzgiAaIbKg7giASIbqg4gCMSILqh4gCOSIDohooDOCIBotufVVwURae9Xu+zap5pmrLNZlPV/GB2QgjmeVutRWbyWywWTp4rpXxYrVYjE2w4HI7RyCRgDcNw+zWhA2wnCXB2Rt8WnPNESvlibvT7/Wss1YrwhBBxEAR+bg5wvwUXRVHIGAt933+qGOsozFydcm1V3HQ6HXHOz3MKWZZdJklyFFDKkuScMyNPzDDz0Fo7mcsWOHMA7XnelZPoDQtCFcDtdvuNc35fmM7HjwPpyWTymqbphW3ORugaQdmkIaXcmw5VAHc6nWfz5dwXHB+HEjoA5/AXiFar9T4YDALIkZp7DnRcTWC5OcABnJ0AVY6URUbF2XmXWgDcocDNZrNsuVzuDN9EIVxMNhfGVAGMpepQx2GpHmqponVeThYVh4qzE4COszMqtQA4IjiXHWDTHVFK7e6OEHP8d25f8AH5PO08WKwAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_16", - w: 109, - h: 47, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG0AAAAvCAYAAADpaEQxAAAHIElEQVR4Xt1ca1ATVxS+KAMRovIoRksRWzuiTFtoHUUeVkcEqRUQRB7yVIyY8lIeEjRQ8DEwyky1Wp2WqrX0AZpRHhEVpUUURNQaRUBaa1GLEgGDU5AYCNM5O5MUQWDzWHp39w8/uPfc7+53z+453zkbvZ07c6zlqFc0Z9YsBSJx3bxdZ0Ji2JAh/3R3t/b29spGmtvzoofVIpFM1cS+co7euPH6M62t7r3skRddutFwtFlc0amNPRzn6m3L3FkY5OfjzTY2xhGf2piqf7uFWPrjUXt7ByosPdvpZD/XXiBIeqC2IYwn6GVk7T4cEeS/DmOMakF7IZOhC1W1yMv1Y1R99Rr6Pl/YdPZUwWy1jGA+WA8ej+Ycs8ZP3JZMwBwraXhHhcVorZ8XMT577wF5eUW1wx/iajFpA5gP1AN8sUmp4sSYKDvMsZKGd7OhCfXIZMjpIzt0604DOnTkWNXZkwUupA1gPpAgLSouYfly96Wn7d6zxRwueXhf/XAcRYf4ExNiUwRddU1/WzElKCFIY6K35YvKkJvzfGRuaoLKfrmITpWeyzkj/CmZPO34jlSRxotPFHi4ue5girc9eiJBVTduocAV7qiruxvxElKeXTonMseXCvLIVKTBlC2CjObP1kdYk5+O98g9uXkomRtKgDx05Bi6flPsWV5ySoQ36tHRvUJa3JbUb4P9fCM5UyxGn0mDERD6G00wJAISydM2JNi1+875ohPv0wD6iBBfIW2G/WITHw+Xh/Eb10+k+8YAP+RsObl5KD2WS2wnPjVd1tT4+5y74ppmOu/vFdJgI4GR3EJBwibGKCSQsy11dkBW0zhEsi0UnS44mfddIKNIC+PxPnjbakbt2jUBhnTemBJ70/0HCKQtZbIdzot7fvFMsUb6KS73Y4inAbDgdVE1qYlxDkzRI7fvz0VJ3FBkxGKhvAIhulRdm1xWdDwHFxLUxfFa0j4NDFno7e5W6b5kkbr2sBwPAQlcS53nE+F/PD+tpbzk5FtYgiUB6rWkwbygyA33stK2ziRhA/shEJBs/zIXZW+JJbDSXY8clrQ1kdzAxc4uPzPF2yAggdDf5h1r2uuRw5IGJzJiY0xrBj+Jg70rkQA4OCChsx45ImlhXF72Km/PFKZIW/zd+1F6HJcISOisR45IGhzgyOj4jrTkzWYkDrNWQ9hsNtLX10d9fX2oq6tLK1vDTYaABN5vUCClsx45KmmQbG+O2uBNpbRlZmaGJk78T4SRyWRIIpHonLjBAQnokVdqroVUlol+1PliFBoclTSqpS3wLktLyyFbBNKAPF1fEJDY29qgD21taKtHjkoa3DRP/+DarM+3zqMi2WaxWIjDGRrrUEUalGyKyy+qCqR01CNJkUa1tAWeBh6nvPr7+1FLSwuCv1RcoJBEh6xWFUgLS8+ISoX5nlSsRYVNUqTBwj5BYeIdghQ7KrzNwMAAmZqaIvA6CETa2tqQXC6nYr+ETdAiHz6WEAVSuOimR5ImjWnJNoT/SoWEbnokadLgRHoHhj7cl73DijIXGEPD0EMy/U2OqkCakJbRXnXuNC2qv2qRtio4PH2Z65JMJkhbHdJOdERYompHoJMeqRZpTJO2oM3Oy3URUSClU3+k2qStCo44EBbkH80EaQuaWsUNTaoCadB6nvxJew8H9/5ItUmDZNt5rk3LrrRUozF8BVG21MACKV30SLVJg7u3ck14WeqmGDcqpS3KWBpkeHCBlA79kRqRNtt+wYyFCx3rtiXGs8fq5lK1zmA9cs/+Q6iurh5rPVIj0pTJNn9zrB0TvG1ggZQO/ZEak+bq6bPCxXGBkAldW6BHXqi6qgpIcNcjNSZNmWzvSuNbUSFtUfU4HM4utJCv8/OkhR6pFWlegaEbFrs4fu27YvlY32Odrwd6ZLv0OVEgxV2P1Io02Jz7ytWt3+zdw4g+koEfbOCsR2pNGvSRuDguSGGCtFVcXkmoI8oCKa56pNakQbJt++60vw7mZNG61RqeGhD+QySp/IIU9MiKy5eX3b1eU6Hz57EWBrUmDdb2DY3IDw/wD2CCtAWkwXsNviDFVY/UCWngbXZzpj/Zl7WdpcUBwmIqqP/nq2pVBVLQI6Wd0mUqcH2o+f/+VEonpMGGPHwDLmfyk5yZkGwP/MgevO12fYOKs+vi27LRfnlIOfhRy2NjtrHRM0NDQ1IdSgqFQjKJzW4cfHpZhoZd9fV3c5SHRWekQR+JQt5/hQlCMnQjd3R2EgXSsbpAiWl92vba5eB/J4pK5FPfmMLPO3zwC52RBqtBkdTCwmJbDHetAd0T7oE/IDNWxI20DjTXJgoyFeZmk0N0ShosCgm3VCrNcnKYZ+Y0fx4O+9UIQ+P9B8iSY4EmGeNTgfqzuRn9Wll1TeekKe8QaJMmkyZ7yF6+pG0loH+8/tRxir5WjVinaFJvr+LOvxyOKv4QMU30AAAAAElFTkSuQmCC", - e: 1, - }, - { - id: "image_17", - w: 307, - h: 169, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATMAAACpCAYAAABH0trPAAAKyUlEQVR4Xu3dP28TaR4H8Geiu22PfQULBVlKZFG4I0iAtju224sostqctCW8ApJ3APVZIitx2fKWliARqrg4LOjAKQ5ewS3tLWefHF1Q4rU9M85jz5OZjwsaj58/n9+jr5x5GD/ZrfUfHoaQXQ05r73dzlreNd4nQIBATIErV9sXBythI6/NYQjvs1vrm/shhOt5F+/tdrK8a7xPgACBmAJXrrXXBoPwIq/NLISXwixPyfsECFQmIMwqo9cxAQIxBYqGWRiGn3wziymvLQIEogoUDrMQtoVZVHqNESAQU0CYxdTUFgEClQkIs8rodUyAQEwBYRZTU1sECFQmIMwqo9cxAQIxBQqHWZZ9awMgpry2CBCIKlA0zFZWwg1hFpVeYwQIxBSIH2bD7M3ez3/LfX4z5iS0RYAAgfhhFsJLD5pbWAQILFtAmC1bXH8ECCxE4HKrvZGF8Div8TL3zHwzy9P0PgEC0QVWW+2tEMKDvIb7vW6W3V7f/GUYwp9zLhZmeZreJ0AgukDZMNsa5iefMIteJg0SIJAnIMzyhLxPgMC5EBBm56JMBkmAQJ6AMMsT8j4BAudCoGCYfej3uhdHGwDumZ2LshokgeYJFAmz0e//v+t114RZ89aHGRM4NwLC7NyUykAJEJglIMysDwIEaiEgzGpRRpMgQECYWQMECNRCoEiYDUP26LB3cM8GQC1KbhIE6ilQJMxCCNv9XnerWJgNw097P3c26sllVgQIpCoQPcyyELaf7XZGT697ESBAYGkCwmxp1DoiQGCRAsJskbraJkBgaQJFwiwL2f13vYOHhe6Z+TNzabXTEQECJwSKhNnoV2bf/rO7n928u7mWDcKLWYLCzPoiQKAKga9b7f1hCNdn9S3MqqiMPgkQKCUgzEpxuZgAgVQFhFmqlTEuAgRKCQizUlwuJkAgVYFCYTYIl96+7r63AZBqFY2LAIFQJMxGx8yNqISZBUOAQLICwizZ0hgYAQJlBIRZGS3XEiCQrIAwS7Y0BkaAQBkBYVZGy7UECCQrkBdmxyczFd4AGGbh/vO/dx4mO2MDI0CglgLxw2wl3Hj+pLNfSy2TIkAgWQFhlmxpDIwAgTICwqyMlmsJEEhWQJglWxoDI0CgjEBemIUse9p/dXDnaANgbWPjwh//84d/z+pg6J5ZGX/XEiAQSSA3zP5/MtNRmI3+ubW+ORRmkfQ1Q4BANAFhFo1SQwQIVCmw2mq/DyF8NWMMR2dm+mZWZZX0TYBArsBqqz3zr8bjA4CFWS6lCwgQqFJAmFWpr28CBKIJ5IZZln3bf3Xwi29m0cg1RIDAIgTywuz4ZCZhtgh9bRIgEE1AmEWj1BABAlUKCLMq9fVNgEA0AWEWjVJDBAhUKSDMqtTXNwEC0QTywuz4ZKbCGwC/ffHpy/2dnV+jjVBDBAgQKCAQPcz2djtHz3B6ESBAYJkCwmyZ2voiQGBhAsJsYbQaJkBgmQLzhNnMJ9P9mbnM8umLAIFjgZww+9DvdS8eX3v8e2ajw0quTyMUZhYXAQJVCMwKs5PHzI3GJsyqqJA+CRAoJCDMCjG5iACB1AWEWeoVMj4CBAoJCLNCTC4iQCBlgSvX2muDQXgxbYzumaVcPWMjQOCzQF6YDUP26LB3cO/4AzYALB4CBJIUyAuzk7//bzczyRIaFAECIwFhZh0QIFALAWFWizKaBAECwswaIECgFgJ5YZaF7P673sHDMhsAH/Z2O5+ff6qFkkkQIJC8QF6YnTyZqegGwMu93c5a8jM3QAIEaiUgzGpVTpMh0FwBYdbc2ps5gVoJCLNaldNkCDRXYK4wu72+uTUM4cEUNvfMmruezJxAZQK5YTYIl96+7o5+WPbodfQ4kzCrrF46JkBgikBemJ08Zk6YWUYECCQrIMySLY2BESBQRkCYldFyLQECyQoIs2RLY2AECJQREGZltFxLgECyApdb7Y0shMdTBvim3+tePfme3cxkS2lgBJotsNpqb4Up/2Vs/Cez7WY2e62YPYGkBYRZ0uUxOAIEigoIs6JSriNAIGmB6GGWhfD02W7nTtKzNjgCBGonMCvMQpY97b86OJVLuRsAWQjbz3Y7oxtxXgQIEFiawMwwC2G73+ueyiVhtrTS6IgAgTICwqyMlmsJEEhWQJglWxoDI0CgjMB8YfaXH+4Ms+wfkzpyz6wMv2sJEIglMFeY3by7uZYNwgthFqsM2iFA4KwCs8JsGML3h73uzsk+jjYAhNlZ2X2eAIHYArPCbPyYuVHfwix2BbRHgEAUAWEWhVEjBAhULSDMqq6A/gkQiCIgzKIwaoQAgaoFhFnVFdA/AQJRBGaF2fjJTDYAopBrhACBRQgIs0WoapMAgaULfN1q7w9DuD6pY9/Mll4OHRIgMK+AMJtXzucIEEhKIHqYDVfCjedPOvtJzdJgCBCovcCMMPvY73UvjAPkPgEgzGq/ZkyQQJIC08Js0slMhXYzhVmSdTYoArUXEGa1L7EJEmiGwFxh9s13P17878qnf00i8s2sGQvHLAmkJjBXmI0mcWt9cyjMUiun8RBoroAwa27tzZxArQSmhdkwZI8Oewf3Ju5m+mZWqzVgMgRqITDjv2b87pi5z7uZwqwWtTcJArUSEGa1KqfJEGiugDBrbu3NnECtBIRZrcppMgSaKyDMmlt7MydQK4FpYTbpZCYbALUqvckQqJeAMKtXPc2GQGMFhFljS2/iBOolsNpqvw8hfDU+q7n/zPzti09f7u/s/FovJrMhQCB1gdVWe+IjlnOH2d5u5+g3z7wIECCwTIGpYTYIl96+7o6+tZ16fQ6qaQ+aC7Nllk9fBAgcC0wLs0mHmYw+I8ysHQIEkhQ4S5iN7ov9aXxWvpklWWeDIlB7gbOE2ejQkt+dUSfMar9mTJBAkgLCLMmyGBQBAmUFhFlZMdcTIJCkwJQwe9Pvda9OGvDJDQB/ZiZZUoMi0EyBSWE27Zi58d1MYdbMNWPWBJIUEGZJlsWgCBAoKyDMyoq5ngCBJAWEWZJlMSgCBMoKTNwAyLKn/VcHd2wAlNV0PQEClQlM2c2ceDKTDYDKyqRjAgTyBIRZnpD3CRA4FwKxw+zj3m7nwrmYuUESIFArgdhh9nJvt7NWKyGTIUDgXAgIs3NRJoMkQGCWwJVr7bXBILwYv2YYwveHve7OpM/mPc7km5k1R4DA0gWmhdm0n8wuspspzJZeRh0SIHCmMLu9vrk1DOHBGKMws64IEFi6gDBbOrkOCRBYhIAwW4SqNgkQWLqAMFs6uQ4JEFiEwLQwm3Yy06kNAPfMFlESbRIgMI+AMJtHzWcIEEhOQJglVxIDIkBgHgFhNo+azxAgkJyAMEuuJAZEgMA8AlPC7GO/1536wxefH2eyATAPuc8QILAIgUlhNutkJruZi6iCNgkQOLOAMDszoQYIEEhBIHqYZSFsP9vtbKUwOWMgQKA5AsKsObU2UwK1FhBmtS6vyRFojsCkMBuG7NFh7+DeNIWZu5n+zGzO4jFTAikJXG61N7IQHo+Naeoxc6d2M2+t/3UjhOGpDwuzlMprLASaI7Daao/u1Y//vmKxMLt5d3MtG/vNbWHWnMVjpgRSEhBmKVXDWAgQmFtAmM1N54MECKQkIMxSqoaxECAwt8CkMJt1MtOpDYBvvvvx4mDl08bJ3gcrYf/5k87+3CPyQQIECCxJ4H80hzEpUVgwkQAAAABJRU5ErkJggg==", - e: 1, - }, - { - id: "image_18", - w: 345, - h: 15, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVkAAAAPCAYAAABOUryFAAAIw0lEQVR4Xu2c7U4bRxSGNzY2NmDAGAIoUaRIvZBGai6hf6Kqv3IBvcReQvq/UqUoESHEGOzFHxg71bPkjSabnZ2Z9ZpglJUQJJ7P8/Ge95yZ9aOXr17/HX15pteTRq2+Pta/7+L3KB7sNrdaF3cxl2uO/nn3aHuv88HVbja7WbsejbZoV61Wb+rNjdjWhzEbzWac18Y13335PL7s7W/ttD/lrQfZVKtrN/dlzctaB3ZbbzZjn73iV6M43vWxrbLXi84Y06Y3H52WvaayxsO3rvoXh0XHm45H/xTt69tvPq/89ejlq9ef1eFmeh3FlxfR7v5j3zEKt5vPZlG/140aG5vJj89Dn+vJ9zHAt79tDsZl34xTbzQym42HV9Fw0I8q1Wq0VqtFa7X613bp+bU3fm/vdb5p67PP+9qmf95N9pP3xJc9HHppWzBtQH/X1xuJXngWtYWQhZ+fniS+ornz+l6Px5FkY7OxkLldbbHXq8tetLnTtsqE9WDHdykzrZv18YA5N9Np8jf6nE7GUc3QZ94+p5NJNBxcukTxQz+vVKIX34Asq0Hw89nc6UyLrJw5RoNB1D48sgIQwkcRk6/KmEbrBhjjWCbg0g7lfJ7PouoXw6lUqlbQZP0Y/jDuJ1vZbncynQVgHfS60ebOrhM8WPPlp4/Ro0r1QYGrdH3x6aMzAMt5ynJcdGTaQbVWS/RkAqscFHuYTa8T+61UK4m9sA4zIC5it+m+gELv40nUfnzsBbT0R4bLDL7IanDeTfaeFxDxQZ5lBkT8Af1JL7d6mkfSociKy09tOkOW+Nt9fjJBlgUDLFeXF1Frr1NalMOwALRk3HYn2mhtfycb5sVIFM3Ecn2YgjkYip3PZ8lYPNPxOKoZDJW1iJFubG1nOggG0jv9EDVbLachClyZa2f/8cJOzfoTAzVYu4INBmnu5RZEvmXWyzA6ZMmaXE5ZBsiK9c2m08QhsZVQ0EbHrGUU9xOmBOig67JZZBGgVaaDXfrYl0uf8i2IC/vc2tnNBf1lAKxIEbpDb/gfpAd5L4strzTIihmQQuPciYG2WoXAA+DE0HmaW9vfgascCmC9/bzYPC5DDPmctJh9d46f5BprGeAqMAAQYOE8YuL8bQMXpVn6jcPyLKKrPBmdvXvrlAf9kV1e2SVvDmU4ACtgngWIYrbTyShhRQo4SjXZPyw3HcSVtaBXgtJtu2YpoCugbbX3g8djzwqgIcxboAaw8pBpZRGXtLwpcSBXV7B0+YuZaRLEypapa34+X3mQTTNDWKhSMQzbxp4AC4yOaGZzetVAqRndRt5sh/IRdJltWFf35L2TXZQBrqZzEVwAplDGnrV3BTUMH1YdygCzxkSn/PjU6gHjg6fPgtSCLMhwEqDIyCyQN+CNTWF7eXV8gTCBHRvNyiwU2MgUCE6AuspMKkOEyo0xcXr6+YBdWkBmsDWZoGkTCiRkM6w5ZC7Z9iLZqUmIBKrLLMe4jGhlQPbF738mB18hdSul42bR2mRd6XqZhKUyREjkdQm6rM9Ve6W+ZksplebBPIoAmPoTrLJYvbkXM/3i/+Vs9IXpIuM8YDZTUhcjz5Mh45y+/S86fPbcGQRCwJg5TXDNYlZmMCvCEn3rk9q/7FrlGmUWtfWmNzsnGLBu3wMxl/2aPhYK/Gm/K2IHCtrI5D4RopVjshgGj+vk2GUQWZ+nywGuelGRORbpIwbCGHmOASBwoNA+PA5mh5oDp3XVbAUMrlqkTo9dh2xq1zl+Giwm1n32/m1ysOOqZYaCMbLMq0fCUggoLnn5bAr7htkePHnmDBQ2G1ZNWn6SR0qweQ5kfFN4nz0UaaMgRZAI8W1lDpTwVOMNIWFF1lqkz8owWV3hUs0qq54VKgATWCl+35dyQHofOE7v9CRxZFuKpwMw0lSfdDk9h+9pstI55rHddMjSgxgrv/cOjzNVpTQ2hAkJNEkvfep33ZN3Xuwc8IGJ2/aIvCnZ2A5HQ23RZKncBCiSgaQzDM4qfG4IIHfKEXm3aIrux5V9cD0ydG7VxLmZUSRzWMZe8sZcOZDVZpTyYUS+p/v0AVhVwAcolnGSW5YSBZywxTz2ihJ1ABYayUPvRQJSLsNWCSFdB1MZxsac2AcZhO8e0Cdg6AtIrB3gzAtCCjZ58haLL5LW+tiGMgoYGiCOPAAU6tdKy3XQy3gwad1KSNfLFdyoj+axRB2KMZ5Lvz57yGuje+6Aq2/tVecjMH1KWPct03yQIGtuSoCrOmB6wzo0wFhJJ0OY0qIGVaS/wAjHyktDF2VTAIrL+dLrp+7pA2rmoQ1j6I6hTfZipMfPf3GKzKyB+tz9FICoVpc1gc+lePrBoghMNjbuXHxAA9bNQa4uwUuGWWcJCpYMnxUg9JKKa93m4V0Z17bM7Zp2nffygdnHrNn7AnKAiO+k6coy2TuRzh1NYl5k596ezxUxGWwRNiXDLcLiTaMnCIQcttjEqXKIq44scOVKlK/DKRDZAoMPAGvdy7i3WbaJ5d0eEBC7gJY1CeC5eqUXJmx3tW17UKDVHeBQBqqygK+uy5ZlWeP9BNkFJZm+uZA1HMZmXtiHcevOnu5Quk7hzXGLMFD1lxOWcaqsfSUvZozHiTPymPdnbW886S0bvdDhOszD2Smb+L7+ax7i2dJfDpoIaj615VUA2DRrVOZm/r9uJIRc3xLgUqLAXnl079fMTPSCB+1g3UXfZlM5ZtXBVXL/CbIeIKuIDDDilOkn5E0m27Uxj2UkTVBYEQZqsjGfAyLf9WS10x3krO9vUHvkoLdsbGPA1nl871maJYq8Ax+lxL4HnasGsJInesgqz7B/37q3zQ50jWwRX0j39a0fL2KbP6LvyoDsb3+8/vVHCIg5+2dnv6yt1eKN9q7zm6+Wucbx1e03ajU2m9Zv01rm/Hc1Nvu8HsZH2wcH/4bMOexdHNHepSf0GTI263noMg+R87Laor9KfT1+aLJmX+PRKLHNIs+w331TpF9In/FN483/W2i8jaIBHDEAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_19", - w: 124, - h: 100, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHwAAABkCAYAAABEm1RIAAAGNElEQVR4Xu2dv24jVRTGvzNONl5pVxgqtsIIxdkCCeOlcGgYJAoKJJYnIDwBeQPCE5CCnmxHg4i0DR1ZCbEuFjNIFLsJiKRbKmIgWSckc9Ad4pBETjzHGd8/kzNt5sx37ve7/+9kTCjRNddqrw0rTgpKNroPF0tU1LGLQmNHehjYaLV5WFoEPHjS7cQepmw9JQVu3XK3ggrcrf/W1RW4dcvdCipwt/5bV1fg1i13K6jA3fpvXV2BW7fcraACd+u/dXUFbt1yt4IK3K3/1tUVuHXL3QoqcLf+W1dX4NYtdyuowN36b11dgVu33K2gAnfrv3V1BW7dcreCCtyt/9bVFbh1y90KKnC3/ltXV+DWLXcrqMDd+m9dXYFbt9ytoAJ36791dQVu3XK3ggrcrf/W1RW4dcvdCipwt/5bV1fg1i13K6jA3fpvXV2BW7fcraACd+u/dXUFbt1yt4IK3K3/1tWDBl5vxrVbt15YGLi281fvs2EORlT59fqNG5+bv/Wf7T79Y7v/zWaytm3dbQ8Egwb+6nz8XlSp3J+avoap6emRdu7v9XHwzz4O9vtvP37UGfoBoJEPCfyGoIE37szfBfPXUgZRBAUuNc2H+xut9hKAT6S5KHCpY57cr8DlIMLu0rWFi4krcLFlYQco8LD5ibNX4GLLwg5Q4GHzE2evwMWWhR2gwMPmJ85egYstCztAgYfNT5y9AhdbFnaAAg+bnzh7BS62LOwABR42P3H2ClxsWdgBCjxsfuLsFbjYsrADFHjY/MTZK3CxZWEHKPCw+YmzV+Biy8IOUOBh8xNnr8DFloUdoMDD5ifOXoGLLQs7QIGHzU+cvQIXWxZ2gAIPm584ewUutizsgCsJnICvAPqOIk6u2v+JBwd8tvlmM4o4ZkIM5ncBzBTQ5n4CIyGipOyVwHvgt99ox2mKmICYgSaA5woAnOcRpawE3gE/A/itPGQs3pNVAhA2owhr/YNqEtq3YpwCNx/lqU71mydasG+A89SlLRAlYE5CqARWgRvA1yp7MbPpojkG8FoeRwO8x9tKMFHgVwhwnjp5qhLgAJuPk85mnsAi7ykU+O1mu34YIQaoWfIWXBSDHgEJA2tmWIgOOZl0JbgU8AFgYsQwyyTgpaKcuMLPmWglEAH3FXBUqeDaTPXCOtLf3Qm5DhVWCS4EfmaTw7RgW2vgUXAyA6o3b9ZmZq6LJn67f/+J/Wf9e0SoM1ALeeJIwIMUlACcII2SjeT7ZJRxp4B7CniLgM1h41xR32kz5a5MpTWzPGRQLQI3LW/yjOKU+++jKgHNttoLRGQ+YelDCxYtZ4oCfpGb2UYQUw3MTRA1ibnGQFD7BYNKUEl5meZa7TVHBRDBHQbFBvDzKoOZz2AKdU6pyeDa0dZv3eeJq/nkqC3gl4brG/CLeoWTQwQY9aP5gs1zgKHpTQr4ROCGBHzUEHGYok5A3QwRYDa9gmjimXtAP3NjEcCtwS0L8DxDRArUjyaOhQ4RUuBO4ZYd+KghgipczyaOlxgizgfO+B3AL0T8M0X0pa/HgC4nbeN2q0XGDU4bj4cIxjsgvAjglWE6GfDZ1vyymVQQp08Z1B4ynmwxsLTR7awUmWzRzzKz5pSwBMKHZ57dA7C83u2Yj+mX8rqg7DsEPDKbM2aISNNoMdt4MbNKilLzGyDn76Qx7q3/2Dn+QRmfnAs9/8t4KS07ZUeYUd8c043eNiX6YP2Hh6uXSXASsY1W22wp5pnpflq2li4tO8215hcZPPTnn4bA2VrvdszM0Zsr2ykEvsiZUG+92zH756W4xim7eOMlSvHypM9sJTQar7dXhozb5z6iTD9w07gzvwrm9/P6lU3aGq226c5zn2P7Zph0a5iBj3yfgOYFKC27dB2e5RE6cHg6D8kL+eR9YwGXdon7afV5n17Nla7FfRuSxgE9iMmW1OCP8z7DlJ2O3gP/NleQh0uzbA0a4bc8+ZtjwifdjjkGLsU1TtmzdXjOVt7bT6t1n1r3gFrOVt7jNIrzvBUSUm3I2cqPy378xssI6FucRnd9NmtEwUsJO2fXfqrsp15xyrr3QyyYrVbzMCbaZubVUGa1/71kSYtmG/H/Vkqre+nMio89U5E9Sd6y/wv4/PMl2qDKLQAAAABJRU5ErkJggg==", - e: 1, - }, - { - id: "image_20", - w: 103, - h: 49, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGcAAAAxCAYAAADHlrcTAAAGZklEQVR4Xu1cW28bRRQ+s2vHLriNY1eEgERT0VykInBdKpwAitNyaUVL09IU1FbBFfCICH8A2gfekCi88Eh4QOKt5fJMjFQRC1E3SJVIbZc4tzpxHMdxLvV1B41VW1aVemZ3Z9drF78lc3bmnPPNfHPmnNlFAAB9x06PYgH5RFF8spjPZ0Sz2WoymS2kjddPkqRCPpvZVNpfIZ/PrCcTi0qfb5zn0LWsZBmLTvpTqP/E2W9EUfx4JbYAhXyucWxobk3/DgUDLjRw+vzq2sqyfWs93dzmNph1WBIOlMBZWVyw5zKZBlO/udUVBBhEh954+/ouh/Plpdlp+B8g4wCek6xtqNPltTvbdly3OZz7pWIRslubIEnFElAmcwuYzGZdNM5sKY4VdNFPj0Fy2QxIxeIaBhgNBwNjqDwoAcm2A17ZaXfsQ6JgazFb9pXbClLBIZrMb2W3NgUCIPWH0KblMdvPIgBzhFGQ8EYxl4lQ+24AgWx2c6CQKwzVUtVstX7ZYrYsVMusp5KRWxP+X8v/q4BDs/n5gSOv2h3tvyWX7ppY6A8D+jocnBil9dts7b0uT6ckwCQAtNaw7XIoGLhEs50ZHNKRbIAk4UB48g+i6CPz63F7/BhgoIbBpTCZxSGywCkD5NjdMb44Oy3SKA4B/H47GPCyKNIMMj3uvlEM+KtatpAobOqvgJ/FXtngkE4PDh77zOZwXo5N07cIDHCRbG4syjSyDAudyaV6ReAQJ/afGPYXstmBVCJO8+laTrJ2knQETbCR2xnobCYnWV1y/KAYHOLIweGR1NJstJUh7cO0ATYqOLzpTHa0tp3jvGdGjkvFwtXFmX9NFMc27ephoTPA8H3oZsAnd/KpWjlksMPDvluJ2Nx+6iFSoYJyDdJbnoHOFE9M1eC8duFD7710+sfl+dl2mmMECfZOTQaiNLlGaWehM0DoVOjGxDUlNqkGhwx65L0PIrHp8LO0vUdutKLEIL2eYaIzhH4K3ZiomSmopS8XcF4/95EvlVj6Yi0Rf+pR2Xu0pDMuAUG5E6/PZxfvoehc+J9aKYuSeDOce1joDAH69HZw4oqalcxl5ZSo7d2L47HoHS+N2kDlUldjLI9nWeiMV2aEGziE2lbjsW/TyYSV5oRQMMBtXNpYvNtZ6EyQwMUj8OHmJEJtOF0Ix6KR3VSHqIhgqH1rKKAXnXHdc8qdHT7rW5iPTNGCAmjEqK3L1e9CgnSTgj1zxpllDnFbOWSwweGRH1ZiC+eoB1IArkawGKpWptvtIaWPF2r1Qy5l8CyRcAWHHEjT8fg4QzIUSI1cThJQrXPVPN/t9pDC2OeUPrjnD7mCQ5Qnt3li0Tt2qjMaZN+pB51psueUwHnnwlRsOtJDA6dR9h0WOpNTQKP5pbqd+8rxnjo/Fr879z7tvMPrLCDHWLmyLHSm5STjD86ZkePpleVfNtZWqb4w8nmHkc5kF9CoTqkS4A4O6fulN0+mVpeXqKkcrehAjgMeJltPOtNszyEde44O/ZmMLx6iOYlH/ok2hpJ2FjpTWkCTo48mK4flJF1S0oAFOEY6U1xAqzs4vS96vJIE4wyKGO4wykJnagpoDD6piGiyckjv3W4PZlHESEEBE53pmFXXDByG7G0JO6MEBUaiM00DAtJ5l7vvCgL8CW31GCUoYKEzvXXVbOV0uT0+BPAdDRwAmAkFA50McpqJsNBZPQ7NmoFzv2I4zeJRvWdktU6sdMargMbiD81p7X5QQK5B7WFRqF4AGZHOdAGHdd+pAm8GA7qGAOtzrxohF2B8kjJ56hbua0ZrpZVzsG8IML7KsnKMKsO7gCbHTk3BkUttchTXSZZ7AU2O3pqDw5LKsbW2weOt9tKLwmuJuC5vdTvaO8BssUI+m4HkUmw7n9WNznTZc8gg5EXgFiFD6u8PDQz29D5Xcc7WRhqW52flTDDZsmQyODuerjxHvl7yYInDCIdjzVcO8QAt11YNDrkcQr6JoOVvl8MJbU90VIZYjccgnVyp/K1lAU2OXbqAQxSqdSglFLOzzVmiNTKLtf7UiyCK0P7MXmixWIG8+08mQ9X7rZoW0AwJThVA5P4wtRAnxwieskagM932nAcdR/Ygs5C9hACTN72MBFLlyxk8wVbTl260tp2SZC/CEnJhwPSrVLWsxNCJECjKz2GEUgiDv/yNMzXO5P3sf+//HpJC5q3uAAAAAElFTkSuQmCC", - e: 1, - }, - { - id: "image_21", - w: 89, - h: 123, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFkAAAB7CAYAAAAfbyySAAAGFUlEQVR4Xu2dTW8bRRiA34k/GjVV05AQgVpB+AUN/AAIog5wItwag4RRHYkb4RdQfgHprVK2wkjFgRPhVsVBuOLACZFy5JK0QYpSWhLXiZXYjqdaZ52uN/sxuzuzmS/f7J2dnX329bPvzH4MAv1hTgAx34IkG8jl5yYR4BkMMNXbJQRQxYCWK+XFNb/d1JADgsCEC4AXAOAdn6L3U5104d6PtzfcymjIPuRy+bmCBXiY5A+JEXy1+oNhHpC+j4bsQc+K4L9I4PaVwfB9Zcko2H/TkL0gz86tAcJXQ0MGAGdEa8guFKfzxZsY4OsogK11aq1se6JaKu2a3zVkB8nImnDUY49mDdkJOYYmHFXdr5SNbrqnIdvIUNBEH+dK2ejy1ZAtLLQ0YaesIbPTRK/mh5WyMaEj2cJBWxMW2F9WysaMhgwALDRxfOzQ55XyYklDNiHTyybsAjpRhfKQWWjChIoH4N3Vu0a1R13Z7IKdJvCtSvnOvB67YKiJVrY92etOKx3JSWlCWchJakJdyIyyCTdNKAk5aU0oB5mZJlyuhDh67OoMEDHqdPQNzjvhKhXJrDSBMP54ZenOshdcZSB/cP2LiaOB9noQiLDLEcDJAFDQutL3+HL5otm99btnIoiR23IiTSgRydc+Kc4jDN9Goei3DqkmpIdsacK8fYroxhTSAxFGE9JD5kETUkPmRRPSQuZJE9JC5kkTUkLmTRPSQeZRE9JB5lETUkHmVRPSQOZZE9JA5lkTUkDmXRPCQxZBE8JDFkETQkMWRRPCQhZJE8JCZqWJVCc96fVEKelYsxQXUllpwutJ0rhwhYtkVpoAgJOnlGhBddYjzIXU6XxxGQN8RBlEjaUmhIrk6dkbMxihnykDPvV4Lu36hYE8VShcyjTT5isOqF4QTUITwkAWWRNCQBZdE9xDlkET3EOWQRNcQ5ZFE9xClkkT3EKWSRNcQpZNE9xBllET3EGWURNcQZZVE9xAllkT3ECWWRNcQJZdE2cOWQVNnDlkRpqAVCf9BqsLolEH9c/k8hMrTSCAb1bKxs2oMFitlzhkZprA6EFlaXGSFag49SYOOZe/sQCAvozTaPd10ZtBrz2nv02yGhOFfO3T4hTqwG9kTSMvxasmEj/xWZownxB9nRwfQUmONZE4ZBU1kShkVTWRGGSVNZEYZJU1kQhk1TXBHLLWxIvMiFmerDXBGLLWRH9+Tz2StSZOd6CoQ9aaYAxZa8Jj6IpgdICoiNaENyZqutCaYAxZa8L/zx47krUmgm0aG7LWBGPIrDQBcHoaieBd4bdE5EhmpgmAh37vh+cXJYMTH6sXPztnmxERqrPNkSKZ2fvhJdNErKFORu+Hl04TkSFrTYQXWChdaE2EB2yuEQ7yGcw2E223+FqLGLLWRPQDRwRZayI6YGJd6GyCMeS33vvwXiqVed/czGFjHzLnBiE7OAjnL1yEgVQq8tZl7HR4wfDVhZsm2q0mNOp1qO88gcHzQzA8Ng7pTDYkbLnGJoJ23h9yQDbRqD+D2pPHMDQ8AhdfGg3aVm+5tJ2O0JFMmk10jo5g5/FWt/7RV68EglZJE749vijZxNOtfwlAq6UJf8gROx0m6FQmC5fGxt0iWjlNeEIm1YQbRVMd24/Wu9owMxD7R0VNuEKOogkn7IPGPtT/fwovX3nNtkhNTbhDjqgJJ+jjaL7cS+2U1cQpyHE04YS8V9vp/nRheARU1kQfZNoPMDYPDqCx9wxGxsaJp7gMzP0ELtDtjOTycwUA/B3N/dj9b/tw6PLoK9VSaZdmvSLWdQx5tlgCBJ/R3IHtzfWf/v791+s06xS1LiuS6U7WetDYr25vbtz6588/AqcbFhVcmHazgFzb2lx/e69+9Ghjraq8KsyDQV0XYWfCDRMRopaleuKLMhOuqODCtLsLmVIKF2rC7DCNFL3syXhy3M6I1oR3KPQN2kedKEVrwv+/1ge5q43D9EKonBmjB61zrSnd6SCM5F4x60VMpaAZEcwIbmbbBQ04RCTbi5pRnW2m5zFGM4DwVduyGgKodgZgYfWuURX9pJRE+4lubkmiITJvQ0NO4Og+BwgNnakYw0mSAAAAAElFTkSuQmCC", - e: 1, - }, - { - id: "image_22", - w: 117, - h: 23, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHUAAAAXCAYAAAA1OADtAAAB7klEQVRoQ+2aQU7CQBSG/wfFrdxAPIF4AjER407cKS7UWBN31hvgCWRpQk0w0eqy7gxlATfwBuoJ1KUEGDOFIggsCI/O5nUJ7f+//F9m+jozhCnXzv55pp1sFxIKOQWkp90nv8ebAAENBfIDr/I6zZn+/5E7Pk6nfqwyCEfxlituMybQBMiZBHcEar54lgVUA8DyjAZyu6EEFOGy/uCWh+0HUAWoISoMtgRc1Ty3FEmFUMMpt2W9ywhlSNiQBCm1V3u89bV9CDV/YFflHWqIBp/tR+C5mRCq7nI7ifYbn7YomUuATgKvUqWtQ9shhWtzhYgzYwLNwHNztF20fQXsMgqLlMEEAs8lyhdt/QmzYbAOsWZNgNY1VN31rrDqipixBFQCmxqqMlaBGLMnEEGVkcoerTnBCKq8U80xYHdOdq1V6X7ZYzUrGHa/8p1qFgKnOwHPNc8tUH/d95NTXLRMJdBfUdL2+eJpGaALU6WIL0sCf2u/Wq4/WvVOunyvsuQbv4jueuv3rm56e7s0vdEqG+Txo+By7E27kdr4yQeFKkitcdmJzkIT+O4faRkAHRmpkbWeipdalqMARzbNFwpkPnGFu6SySi9PN3rxaOQaO3g2DDfVShWAbhag7HwVyNMcCRDw1SU0rI7lT4IZefwCpJ+NQG9NEnIAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_23", - w: 65, - h: 87, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABXCAYAAABbeCjDAAALuUlEQVR4Xt1cbWwUxxl+Z20fZ7CxzUcIuCkgiiEqLY4DialEwCSlaUWFoSglqlJMaX8kKQpJWykNSeuohX78SB2Rjx/BwRZVSVQJbMGfkmCbINUmwQaKU4gpwg4Bp4ABA8b22bdbPXOey97d7s7s3t7ZzSv5B+zMu/M+837P7DEaZZpfXDqLMmmWWMaZYy1N6V4SS/cLxftmFS/Pz9IGKxkZzySswaBaw9Cqzp7454l0rG9UQAAAAW0AO77QSUiD2KtD+rjKzhNNN1IJRtpBUAXAJHSXplFFKs0kLSAIuw/rrJyRUUFEeR529uWOtpZKD/OkU3wHATs9ThusIDLKDaJijwLbLfyCQfSbs20tNVLJXAzwFYS5xd8qZpoOW/ey0y6WTRcMYntJZzV+OE/fQBixdXjzmW6k8WFsl0GsLkM3qs6caOn0ws83EOaWlFYwol1eFuHXHEZ0WNe1LW61wzcQikpKsQsxWjB7ah4V5GTTs48uoqd2HaRbAyG/5HXkYxBtdOM3fAFhxBccFyubmB2gzSvvpx8vXRBd7PPvHKZ9xzrSAgJe4gYIX0Aouq+0hhhtwMvvnTGZ3ti4kmYU5MQIfPHaLVqx/Z20gcCB0LX7VEwjaRDmLypdruvUiJeuXVxEL6xeQrnBgKWw616to1MXrqQNCPiIT9palstemBQI5ogAAP7ww2WO72s9/zn96PX9UNW0kYo2JAXC3JIlVSiAHpgznXY/uUpJsOqmf9GfDxxVGuvHINQfZ9uatzjx8gyCCImFk3Kp/rm1tiZg9fLTl3roV39rorOfX/NDThmPro62lmipbjXYEwjmnAAAzJ8xWbYQy+d7P+qg2iPtdOZSj6f5qpNkJuEKBBRCegarIsNYjQVsWLqAO0I/6MNz3ZzN0XOXYtgh2kzMHsf/T4Bde+QU1X7Qrpx3MGLPftLWXGW3TmUQRqJAnagLkAs0bH3clRn4AZbgAZNCAnbp+m05W8bqO1qby5MCgWuARqgLooURkqGfryzhfG/2h+iJNw9E1frhr8+krauXEPxFKglAPPHGASWNCOnBArvmjJImmJMhIdSx32+IagFA2HGwlaDSwr6RK/xx/TJ6ZIGjT0oaI/iVX797WM6HsTUdrc3Q5ASSgjCSC1w3z3TKCQAI0uOaD07Rg3NmcCBSTWXb9sjNwqDajuMtaOi4B8GcEYrZjVsfT0iLUy2oE3+YonCsDuN6O9pa8n0BwU1ilC5gVr+yVynM2hVVUnOI1wQUR3B8fpIwoffbOwkgIyyq+hJoADTBibSMDNK0DBoeCnWF9GBxvIOUgjCvZMkWg4y/4CXw9g0vrPdTfs4LFebz7x6OUWlUoX9av5yD4kQyLQAABXdNp+uXu0kPh8EqoWErBaGopBQd3t9iNpzcmkVFvoMgGAKMmiPttO+jjmjYQ1EGR2xFsh5FIBikqYUz6b+fnocWcBYARdf1mEihDEI6kyOYh8gKsXCE43iSAZCTV0AT8vKpp/tiFADwyJ9yF924erlX06lY9CSlIMwrKW0yiJbFp8jCG+dmB7gNywiJjco4Mx9oxo6DbbThoQUxc51yg8ysAE2eXki6HuYAjJgAZwsABu708T8yhUxlEMxhcVt9M/fGAgjYLWoIOyGxa48smKns7JwABTDwA/H9Sqh+bsEUCo6fQD3dn0UENZF4jmeCRBYpBaGopNSAp3694tuWawMQyBZPX+zhtQTMxkyoEvHMr6RJmAF2HIJB6HHjJ1BoYID6eq8nCC/8wPRZX6Puzv/EaIamURmO9xxBECUzGiYyLw0gCgtyY5yYKJUxPx4cmflYPYcWfK9qPxccBJWH8PG7bp4LRzi18Ks8OmBszDMVEIpKSk8UTspd6CUsIuZj19Bv8KuQkjnDeOBEdLhysSsBAIyVmoNoo3sJi6K6Q2Jlp0HY1YsjZbBMy4Rwi16sVaoYMX7ipMncR9gBQKby2tYc0D/My856xm3PAOFtxbY9tPk79/OmixVBS56ueS/6CBUnHKtdPoCBqtUiTKVg2nQavNOHUBjjA0xrUQuRMIW1i4sWyjrIZiFFXwFRQtURQiP2Huug1w62cedrly6jgXLo4y5LUIWDxM7DP/RevRyTG8RN6jV0bbn5PMJWExAV3FaLsFmYAvyAW8K8Hf9o5Qc38dTd20/lbx6MZHuR1JeygkFeD4CGh4b4zt+5fdNu5wVL9doB/uDBudOOq7bR8QZEh/fbu3jr3Y9IYAZC1RRUgLfqN1pqAirH7Y8ta1StE0Qk2P3UKtdZocrCnUxBZX68OcT3FSxBWLfm+6v+vrl8v+oL0NlRqfhU+cWPcxMVVN4hkiQx1hKED6u3vbZ49t1PqzAUaayf+YD5vfAV5a/sVVmK8ph4k7AEIdyw81ON2D2qXGEOKHRQH2xY+g1ffYKf/uCLnY89h0gAwWjcVUyGHr1roAoExqGOeK+9k7fb/SI4XIRPP0lqDkbD2zVERmIB7+cqXPBKAQgJZ5OJmtBQjdujqb59pgyDEwi4CfPoN2fTx59d5R0p+CcpWZw/xIBgNO4sJ4PtkzJyMQALO3qu2zEldmJnB8K2xx6idQ/Mi5kKs8F4W7I5e4gF4dDbVcQsLly7ENo8VKTRqCGc6gIn9laO0antv72+mZ90J5DDeWQsCA3VuIjp6cgIoWxiMMDLZggfiRit/EQ5mSxSFGSik4QudP1zP4hGoNDtXuq/cZVypt1DGVkBfhKFvCWOLNNlyzzBaKj2fJMGIKB2MN81QMaJ6jDZNBq8scMg8Js7rYAyMzT+b0MPU3goxIHInRaJ6vN++VYMBrKbbPGa4BkE8VbRJ1DtEXi0tIRp186fpkmz77UCwfb4zXdN8EsYGZ+BoWEKZmXG7rQeppuXOinvK3MSQXA4iLUDYUyFRxkg4nn/jStkhMM0fvLdvOeAgkuQzBQwzjfHqLrgZMaFhsMUyBzpIQz2U+a4bBoe7OdaUDCziJiWwTtWcMojJL20lQjCoepKYpEjt7FId0JDND6QxZfWd+UiDQ9GuscTps7ggMQfzqpoQSIIjbtmkaGfH4sAyNaEEIqrO4gknCT3lMz8rNJmz7mCbKHJPMcu4wYMEq/4K4N4hhAaBYDoZEgPLlf9gMzXKjIZIWVzzbaOhKxw5AI52vbmmgH3mQf1YLkqAAnmEPWoY8w32GSBVrh5+ljMtttsNOysI2L80uZok6ww8vrFi5DLHoTGXflk6Ljy5qmW8BO4xS/V8nokniA806gy2W8mpafSo91kgTNETWIi/uGXX1/C2fqEeMTRZxgeGNidkRXIQUKSTkKT9cylnsMGUZOha3UqX7K4XZ9UEwTDnupfDOnDQ5lZ2TmUlT2BssbnkJYZ4OWrHaHCQ0aHv8CEPMexVjxuD4Zac7/75CK3QrkdrwTCrT2VLw7cvPY7O+bQDmRsglDa6sNf2DBq/eDESW7XhqR+Iyvb5OvXsFaLUALh5l9f+vdgX2+kTnVB0BqR0rqYJoZ2sRWbUnsxeuRNUhCMSJS4jt0N9fXS4M3rXL3tCCYCU8nOnxKjHa5BMOhl9vCmlHwgbhFlnJdnHKreQoz4ZU4zDfUnfmcg8xGugGBaASvbmNLfTRDrkWtCQ3XCl6+uhPE0mNWyFT+xvJHuiZ1kkiMIyZxGJbVYppexsp+l7bdVnEGwMYWkBJRPPslWbMLvLqSNZCCkv8mSprBoRnisgdDLVmyy/DAjlWoxtkBIY1gcu5rAtNmsbKOnX8NIRlMk0aG6gox0/TpGesOiuiYkcWHD3c4Y9cQyKtKVHLnPGFN9X2GU/ICyJmBgCpsqXcT0inQmRXbaKU+bU2ISo6v+rs0hog3e7y3EvbCLmLGFlf3U8nNdd37Ev9FSTeAg+HEyZbBXSWOVo+X8nCBTAoED4fksgqv+ltGI/6q6ogyCeyfJaomFa8aC45OB4QqEiEY4Xu46SQbVkabVjOWd9+QY4ydxH0HhYtJZpOTlv7yX2fn/JLirPEGmSl+G567N4csgdLwM/wMiRaqjXbIzuwAAAABJRU5ErkJggg==", - e: 1, - }, - { - id: "image_24", - w: 172, - h: 157, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACdCAYAAAApF5PQAAATq0lEQVR4Xu2de3Bc1X3Hv+fqYUkYSVjyA9vEMjg2tqHIiSsCxEYybTNNHxY0nUIJYo2SyZS0qSzo1JRMbZc8oANChIF0EoNlGTJt8wDGtGWmgKw2OCmmxk5NGxtjS9bDkm1ZWr1W8kr3dn5398qr1a503/fcu+fwh4z2PH+/j377O+f8zjkMIgkJpJGA8s7LjWBKeXoBKQNQ2NGkzwcgyfHfZQ+wqm3Jn1uSN7NUWhQOrASUlr3FUOR+GwfYCkwBHoc6+yir2jZgpA0BrBFpZVBepeWlEBTsdWHIYQBHY5ZaaYtZ5/QgC2Bd0Igfm1De3fM6wLZ62Pd2KGhid9XuSuyDANZDjfDatJ3uwGT0MrJycs0PlclVrOqrB7UKBLDmRRnYkna5A5GBC2BSFvIKF1iQlfIG2/KVagGsBREGvagd7sBQbwdy8q9KC2s0MoxI/0Uo8qQqzux5eZhXuADZ8/JnipdJK1nVtjb6QFjYoNNncHx2uAOzwUqADvV0gGVlIb+4dApQAnhssD815Aq2s7tqGwWwBpWZCdmtuAMEY7jzE+QVl6a1rKN9PcgpmI+c/PkpxUngStm5SX7vFbdAWNhMoNDAGM26A3pgpW5MjEdSf+3P3sd2tqW2TFhYA4rMhKxm3QG9sFqRIdtSqxpXYWGtSDFgZc24A27AqoIqgA0YbTYMx6g74Bas6tDiKwXCwtqg6CBUYdQdcBVWYWGDgJi9Y1Ba9pZBkZsA3DlXzQTrYHcbCkoWp53tz1WH0c+FS2BUYhmSX2nZWw5FqQMU2l0qSh42bbUO93bgqoVLzcz2TUtRAGtadJlRUHURIFdDQR2AW7QlKbKshUvLXIUVQCvbUlspVgkygz3Lo1RaflgZjUR2Dp07W+kBrOTB7mNbHgoJYC2rMjMquLT/sU1MVv61aNn18ymYxfXEsI1V1ZJ/LdZhXRe+zxqM/PRbK6Jj40fmL75ugSewJixpCWB9Bo/b3Y1NwOTXAaxwu+2E9o6xLbVT58rEOqyHmuC56TisFDg9Y6XA1X4nuAPCwroqef80prTsqYbCyGf0FlYgDCaVJR5UFBbWPxy50lMz8QSOdUzBbnGmyzHp+r9irmBNYV2FS+B/xmwbgfLuy02A8qBtFVqtKIV1FcBaFWpAynMHKzAVsJ0sYuHDBgQ6M8OIR2jRstWcAS9m6jddJulod2I9AljTUvV3wTistGylxglwkxT2HLvrIYpfSJkEsNxoyr2OxEMJybLyBSswbZMglUQEsO5xwkVL3GwIzJQGrbmWa/cPCAvLBS7edoJjWAGm3M2qvkJWf9YkLOxcEgrI55ytsU6XapolLOESBAQ+o8PgGtaEWFc94xIWVo+UfJxH+fHfb0JJyQEO4gJSSXHOSVZyIQGsj2Gcq+v/cN/d//S1zeu3Ys3KeXPl9eDzY2BSpbiB2wPJ89akUhcqfrnrwpuFhfM3fun+3+ERVl0rAsKHdZgsAoU1Nhm6s9/uLlEf3u65cLipK3zDK399H0NBnt1NWK2PYCXLauqxDuESWBU/AKUuVIYseRdkDLBnm9Pu0tjQ1KxVKHWh8nORkdavHj5V+Oy9W/DpjeucbtJ4/UzaYBZWakwAa1zkUyXImkGSCdCd8V/uZg3N0+7kt1C9oaLKI1+uDo9N7nvif04XLllUikcfvsdQeVcyJ50eMNOmANaM1Miq1j8QAhhdspsYld8OWSp32y2gvkRlZe9PT3ehqSuMt3bcD5QUmxyZQ8VsgFVYWBO6UR4NVUKWCdR0+/DHIEsh1thkykcz2iWlvoYs+s7DPRfx1Mlz+MbmDdj8+3cYrcbJ/GEwuTrxYQ0rjQkLq1N6qp8qqaDqewqIYR+Y1MSebpp6AUVnUzOyqW1nowzyZBnA6GLf8kvRydJrcrJXMSiLe0YiePWTbvx3RMGPHrsfHE20LE2wxCqBSWLiVox8VTOH8trBcBCKchBy1kHW2KQ+LpGcVMutTBRDkcqhoBgMdLSZvtenWfLBCRn7OvsxNj6O2hUluDo3B++cPYenT/fhpa13YMWdnzE5StuL2Q6rcAnm0FH8659Oj9p9Lr81oWndwdP/NzyO75w6j3sXFeC9i0P4zm+U4eiFSzh0PoxfRhQ01/8xUJj67QDbcZy9QtoUCFlZDUhXvXAJUlm72OyfQNX39e8CDT/rGVQt61OrF+GJ4234fsUaRCeiONR9Aa92h1FfsQ4V96j3pXmdTO1g6e20ADZJUmlm/3rl6Ui+59v60DUWxfayBXjsw9P4i7WfwobiAhXWjpEInusexaGHfw9YudyR9g1U6iiswiVI0ER8UqXrQl8DCrScdceve9Q6nli9CE8eb0NRQQG+sWoJRicm8M7ZHrwfjmBlyQI8FPqi15Mtx2EVwMZxokV3KBIPN51MA/zbpy5gaGIST964BAc6zuPVrjD+8XOfVvOQ79oxNIr9vSPYXbEGa7fqdoUt/xGlqMAVWDMeWHWnKktuhAJ+zuPHaSCf9bWeMPaXXwdatqo5fAo/+fx6FGZLao632roQlRV8t2MYh750O3DrzU6AqKdO12DNaGDj26r8nRoF8P7AKMi6Eqz5ErD9g49x27ULcf91sUeGCeDDvX3oiETxCXLxzBc+A5TfqAcue/N83N6N1SvXGw0RtNKJjJx08QwrrbNu/aAdL960FGvnz0NL90U0tvXhjdvXTOn5o74BnA4P4xf9o1izeCEe/MJG9ydcJ86MoyC/gj34+K+sAGi0bMYByzOspLyHj3fjniWF+K3S+erE6g//43/x0ufWYEXBlbBWWh3oGxtHS/8Y7r1hKSp+9zZ3YwfOnougs/dJ9s3n/84ocFbzZxSwvMP69sVh/NdABI+vWqjqdc/JDhwZncSL5eozq1NJ81/fvDiK2tXLUXHHze5Z2MFh4IPj77Nv/fBWq/CZKZ9ZwNbX0DFibjYDEhVGrsDXj3fhhZuWqRMrsqB/cugE9t2+Fsvycqbp9sDpTvX/X+gYwFt33gSsXAasX2VG/8bKEKw/PxIB2BftiJEw1ngsd8YAqzxS08TjaoCmNNocIJ+VXIHZrCt9pgH7Wu8w/urmlVi7sAi4y2GDFx4exntHsqAo/8yeaVZfdPEiZQSwvMNKiqcNAlpvpTR4OYo/PfRrvFCxeprvqgGiAftm7yBq15ahorgAuGUNcF2svO2JYP35EUBR5kOWVqYL4LG93RQVBh5YP8BK266UtK/+98714fETPThYuT4lAxqwxwYjGMnJx3fXLwfy84DNnwVysu3lhiZYvzqZH/8+3ueldQ28S+AHWJPpisoydn54CkuKCtUt2FRJA5Y+e+Zs+ArYFKl12y32QBudAI5/fBld53PjfQjHT1OkDI+0968kfW2BtbB+hJXUdDo8hD8/chrfv/XGlO4A5Wnt7FXdBkrkFlR+6lrct+yamJYJ2o3rrcUV9FwEPjolIzIe21aLJc/OqyXiG0hg/QqrBuM3T57Hf25Jv9WqbRxQ/tFJGS92DuLApnVT27aqgleviC11GXERCNQzXUDfjJPqx1hD89RbWW5Z01TtBA5YP8NKGwVNJzpwdEzGDz57Q1outK1ZLQNt0R4cVbBnQ9l0aCnDklJgcUlsYyHVHQUEJ4Ha0wdExlK3KUsb3DqjNtcfQ6CA1Q7kzTVoXj8nd+D5E11YVXoNvn794lm7+fbZc4hMTE7luRCV0cny8LerF80+PHIZyOrOtKLpynHhCmidCwyw8cDrvbzCqKdfdPL1e6d68WfrVuD2BbMfdTnRP4iT/YPTqi0tLMK7A2NTO2V62pwjTytraObiGEOggA0CrKQQmv0/13YJP9t808yv9hRkJU6+6OM/uH65ejKBtngfXB6fhJmnlotVgeTu+97CBgVW2oqloJadn/ThyG/re3qAVgo+PH9JXTFYUpCH3yR/1a7E5LvZM6/MeSO2Xc3prcfXwAYFVlIW+a8f9YXxg3PDOHCHsdjWCVlBlsTs22dn8HyDIB3AvgU2SLCScrQjL3t6RqbFvuq1PDbmo5trKt2+bklv/30JbNBgJWWRO/CLi4M4dpmheeP1evVndz7yWwlWV65ZMtN53wEbRFhJcRTj+tHgGKJ5Bdix+lozurShjLKNNeynw5jcJl8BG1RYtRWCk8Pj3gHLsd+a+NfjG2CDDKusKPiXM10gYC9l5+Pb65a6beE8uSbUzCB9AWyQYSWlUYTWW23dalzAj/uj+ElF+m1ZM0rWUYar3azZ+ss9sEGHlZRDy1L/1tal6qmxawjvbFqrgzE7s/Dvu2qj5RrYTIBVU4S2rPW97hH8++evHOm2E8u0dXl8isDIGLkFNpNgJYWNT06ieziCH12I4Nbi/KmzXUaUaTIvN6GDevrPJbCZBmuioujWF7qmSDvfpUeJ1vL4xx2gcXIHbCbDqoFX9cszeKV8+Yzj3dbATFmaNgrKeN3VStVjroAVsMZURFa2qXNAva7I4eSb1QHuJl0C1uloapcY/82qRbpCDTXQ1SPf+lI7a2iefqWMvnKe5uLCwgpYUzOgXRNPsa10wYZ21aaWm948IGvcOTaB5XnZap7kW2LS0iVJVV7d3mKFeM+BFbDOrj66wogCsglM+jfdDkOgEpgEKVlU+p2xpGxnDfvpCSffJU+BFbB6wItPYgbSScYzYAWsHsAK+GrNlZtVAgGrJ7D6bgmLC2AFrJ7ACnB0t4AVCbjqEghYrajKSln/TrKSR+0asAJWK8BZKvsGa2iutlQDR4VdAVbA6pnGfROYrVdCjgMrYNWrCgfyBcRvTZSMo8AKWB2AUHeVwfFbHQU29lLLZDUYq+T5TQHdevdnxkD5rbYDG3tYeLISYOTcc/lKiz+5M9XrwPmttgAbh7QaYPSiiL7LoEzJXxQyIAHuL8IwMJaUWQ35sAJSq+J2ury/Tg+YkcacwE75pDFL6ukb52YGmDllgg8r6TItsMqjoUoockhMnHyAvM8jsIxIeBqwcWsaAlgdgBVGKhJ5vZJAMJev0klzCtj4+wAEapFXohftGpJAO5hcx+Olw4ZGYTCzCqxSX0PXK4qZvkHheZQ9TBfEQJYa/XTa1S5ZCWDtkqTz9WQ0qJp4Y8DSBEuWW5yXuWjBhATaAWUX5KzXM9GiJssr2YfdaUKgoogzElBB5f2CYWeGnr7W6asE9TUHxVqr2ypIao/hBCDvyLTJlF6pp1jWkglaMQHTK0F78z3FGpp32FtlsGqbsXGg1IXKIanQiuUtV3WdGTtVVkWacqdLQGtVrAbLZ9BOlUHJzMiefmtWWFqrstVXXsCqT07xXLMGv8Qt7YeGahSZ9UtAwKpfVnqAVddo6x+g2AJfv5JtWCruFPD9LSzuiGl6K3OGF6rQxjYW6KFcMRGzR0tcP49pzxCdqUUXsNT05fqaDWf6B1svT8pXO9OV4NaaLTFclZONbElCXlbW8Wty8zaJXStz+tYNLFXf/bU/2jgwPvFu++Dw1VFZMddiAEvlSAyFublQf86L/SxSf0oozM1JHHGgz1u5oVpDwKruQV2ofGTycuvHA4OFHUOjbvSRizbys7NQkJ2Nonk5qqUszY/dyVqSp/tu1sCft3JDUYaB1aClzYXRiYmik/2DCAq4qaBMYSXN6EXAakZqKcqYAjYRWpqIjU5MqNCeCQ+Bd1fBQSjTqUTAahOsVI1pYNMteXUMjaBnJIKe0TEbu2m8Kvqq1nzKotwc5GRJRr6+jTeYrgST7xaBLDaK02pVyvaaRjD8ZXI9ZHUJ3L7IuGPwapOdRL9Ss6BWx2VPeREfYI8cr9RiycJq1eg5YtM3No6LkXEVYII5MjGpeyzaxKYkP2Y1aQZOs2/yL/lNAlYndGMPsCbjDugVa/ovVWJgoPVLf6bMOsnqpo5sI0Kpf6AOYM+62Xku2xLxAY6qxTZgY5OwGtq+zdzL4ASsjsJqeZUguXexizhkOjKeeZdwCFgdh9V2YFUrm5kncEXklSu4WlyHTdfH+C0ymXICV0ReuQSrIxbWyFKXi+N0qikBq1OSTVOvrZOuxDZid8mq/mxQY2hF5JXLsDpqYVV/9pEvV0ORXvNgXE43KeIDnJaw2xZ2yjV4pKYpYHfMClg9gtVxC6ta2WAtdQlYPYTVFWDj0NLlHH4/fUsTrBBrbCK/XCSPJODYpCt5PD7eug3HL2Vr9EhHotkECbgGrGpp/XfZHFnVatbY1Cao4UMC7gIb82dJ+fwvdSl4jj3bTFfoi8SRBFwF1j9LXSKWlSNGp3XFdWBVaNOcUuBASGFIUjV7uolubxSJQwl4A2zMNeDtHlqxZMUhoMld8gRYDpe6BKw+gJW66BmwHLkGAlafwOo9sN6vGghYfQSr58DG12Z3AfAidlbA6jNY+QDWGysrtll9CCsXwHpgZUXQtU9h5QfYmJXtd0GOb8QDWAZcaEs04YAEPF0lSByP4nzc7G7W0Ez+skg+lgBHwDp2OqEdkhQSu1c+pjSh69wAG/dlKTDGrjsN1NevhVUNBqjaKPgC1h63gOJX68Tr18EClVNgLbkFqkWFLDWKBy+CCSs3qwTTJl/1NcZf+2DYh0lplwi0Di6oXFrYuB9LUVx36hR9a3yZSpwI0Ckwv2fjyoc1sIlwDJJUJ2b+fsfPeP/5A3b2yzfa4wcCm4wPVZQIggT4AzZ2xdGZJOGKJaog0GbDGLgDNu4WJE68douZvw2aDkgVvAJ7FAxHxcw/IJTZOAw+ga0LlYklKhu1HKCq/h/637kHhv8omgAAAABJRU5ErkJggg==", - e: 1, - }, - { - id: "image_25", - w: 251, - h: 182, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPsAAAC2CAYAAAAftPsUAAAZwUlEQVR4Xu1dC3CdxXU+++t1ZVnvl4VkYwM2ZjKTKKZNbZgUZwY6QCbBFJzOpE0RbWfaaZJG7mQ6yfSBSFOmDzAiUJqUBMuPkgEK2JSWh90gU4I0YGSpxCBLdpHwU7ZeVy9f3cf/d86vu+JKutL9H7v/4/7nn/HYHu2e3f3Oftrdc86eZeCzTzt44IegaqPst7+x22ddp+4SAq4iwFxt3WTjOtFr6/8SLp45xu7+/V83WZ2KEwKBRsA3ZNde/fe3oazyZl1b5wY+ZPfe/5lAa44GTwiYRMAXZF9AdBzgsbf3sm//dZPJsVJxQiDQCHie7EuI/t7bAAP9D7Ld+1oCrTkaPCFgEgFPk30ZogMoypfYw23tJsdKxQmBQCPgWbIvS3QAYLv3ebbfgZ5NNHhPI+A50mgv/KQOVlU+P2+MQ/j6TwB0v8uBPMR279vhaVSpc4SABxHwFNl1opc3dEHhqjXzWA30A+A5ff7TdrHd+1s9iCV1iRDwNAKeIbsxogOAqmxgrW0DnkaVOkcIeBABT5DdMNEBetjufY0exJG6RAh4HgHXyW6C6ABAW3jPzyjqoGcRcJXs5oiub+HLWWvbuGfRpI4RAh5GwDWya8/tuR2qavasbIxbgBxZ4T08kahr3kfAFbLrRK9rOAi5uQXLW90XgcfUu9kjBw56H1LqISHgTQQcJ7sRoh8ZnoIvlK2CklyFoxZmu/eVeRNC6hUh4A8EHCW7EaIjbC9enICHTl2C+xrK4daq1XBDUcFj7NF9zf6AlHpJCHgTAcfIbpToHKZ3x2eg7ew4TMYTMKvBHz//5pv/6k0IqVeEgD8QcITsZom+CDoyzPljLlEvPY6AdLLr2WUqa7+7wBg3PgJw+GVj0NANN2M4USlCIAMCUsk+n0YqtRNI9KOvAUSjRpQzyHbvW2+kIJUhBAiBlRGQRnazRP9oahb2nh3TDXJoicezeudY5IF7f/7SD0iJhAAhYB8BKWQ3S3Q+jMcHRnRL/PlIDDYVFSSmVO2+9l++9W/2h0kSCAFCQDjZrRI9jSoo9RTNT0JAIAJCyS6Q6HSVVaCSSRQhgAgII7v2ynP/CZXVdy6A1Zwx7tOqDPayR/ZR9liao4SAQASEkH1JvjjsoEWiT8RVeOrM8Be/+9JrqelpBA6ZRBECwUTANtntEh2t8Gh5PxuJA0bNdY7NqLfXFH/9+4defTaYKqFREwJyELBFdrtExyEhwdECfy4Sg82rQ9DUUAb1obwwqMp21trWLWfYJJUQCB4ClskugugZ4CbCB28+0oglImCJ7A4QnQ+ZCC9R+SQ6WAiYInvaNFKIVywKcPgQwPSUcPS+fvxM/Jkt9TspcYVwaElgwBAwTHatZVcF/OatJxakkeJEb38VYHxUOHTf672on+X3N67FZJP3s93724Q3QgIJgYAgYI/suKJLIDoS/E9/dV5XARL904w1RPiAzEsapgQEDJMd29a38aVrPoSikjJ96y6B6NgOXogpzs3RL8WkpKZKDp8IL2EekMgAIGCK7Drhf7jrC9CwoR3+r68QpiYMQRStnnvNKf/yRUPlMxfS7t/U3g/9XZ20rc8MFpUgBHQETJMdK515+omhq3qP1yjxmCEYh+75A4jUrwclGoHaF562RXqMsPtG9xnonZrFtnuiamj7QHc75ZI3pAkqFGQETJO9b/9Tx/Nr1jTmT45D7bvtYITwg382dyUdyV6/ZzcosxFLmGO0HZ7l8QpsyhdWFNjRe6yT3mu3hCpVCgoCpsj+0Y8f/VHhhuu+zcHJGb0Ma95th9wVpKgFIZho3AazDRsgd2IcKg+/aAlbjLRDok/G1bT1GbBdJ7s66HVXS+hSpSAgYJjsJ5/4p7sLNm5ewNSzb74BbPAU3FRXLRUrDKf9fq+B8z5jh6KJgiba1ktVBwn3KQKGyP7Row9tC2284SjLy83j4xw7+SGc+cXr+n/XFhdBY3W5FAjQ1/7SRWOGwGQHejRVaervfofi6qVohIT6FYGMZD/x2N+vy69fezyvuKSCDzIychlOH3oeErO6kUwK4dEQ981fnYN3x69YwTasATSTtd4KdFQnWxHISHZukOMAJKJROH3oOYgMX16CiagVngfVJC3u1rHXYG/f8U5KgmEdQaqZRQisSPbeHz92ILThmt9NHS+e00d7TywLgV3Co8UdXWvLGeIsYN+jqLCjt7tzwEJdqkIIZA0Cy5L9oycf/pvCa69/MHWkw/97HM7/cmUP1xVVg3WlJbC1utQ0SIYNcaYlQxgYa+p7v4NegTWPHdXIEgTSkh0t7/nrr3s21SCH5/S+5w5kHDaS/dh0Au5ZWwW/UbE6Y3le4O9OXYZ9Z8cMl7dSUAP2WH9XBz0QaQU8quN7BJaQPZ1BDs/p/c/th+ikKas4NFZXwNriVSuChIY4fLHVpMXdMvAM4OisGtpB7jnLEFJFnyKwhOz9P9/Tl1dRtTF1PAOvvQwTH5+2NMSVCL8o9NWSfIuVKOrOInBUzb8ILCB7X9u/vJVf1/DF1OEMHeuEofc6bI0wHeElGOKs9PHBvq7OFisVqQ4h4DcE5sm+OBQWBzJ9/qzuTxfx3dJQCyX5czE5R4anAINlBFrcLXeRtvWWoaOKPkNAJ3s6gxye03sP/HRB4IydsX0QUWHn1bXwztgMPHRqqY/ejmwBdWlbLwBEEuFtBFjvPzxwVcFnGgdSLe/YZVzRcWUX+b0wrUDHiPg8dQL7SNt6gWCSKG8hwE7/pLUnZ/21nxV9Tk83zNfjIXjz8hTEMcuNRz/a1ntUMdQt2wiw0488cGei/pqX8ssr8lHaxMBpGHj1ZUOCa2+/C6KjwxAbHYGpU72G6vxztBg+vjhkqKyLhWhb7yL41LQcBPQzO/rWtYLQe/lV1TX9zx8wfE7/bOvTeq8SkStw4nvfNNTDU/EceCaSDxOjI4bKu1yItvUuK4CaF4fAAtfbka/d+cpMNPJlI+JXX7cZrvnWX+hFJz44DgM/e9xINb3Ms/HV0DM6AdGItYw1hhsSU5Bi68XgSFJcRmBJUM1/3/tbfzsdj/9Vpn7lFK6Cous2Q2H9Wrhy7gxMfNCVqcr8zzGk9kmtEi6cE2sANNwB8wUptt48ZlTDYwikjY0/uvP2r07Gos+oAEUy+otkf2IMYLawGMaHL8loQopMjK2PqQUtFGorBV4SKhmBZW+9vfW1O26eikX3xjXtWtF92HN5Fk5cSUBJRaW+lY/MTItuQqY8yoQjE12SLQ2BFe+zv7XzjurpRPT1mKp9XlQPDo1F4X8m4/PiKusaYOzSBVATCVFNOCEnzIC1UIJLJ6CmNkQhkDFTDTZ05N7b9s/EE79nt9H3puPw7MhCH7uSkwOVdfVw+ewndsU7X58SXDqPObVoGQFDZEfpv9h5259PxRKPWG3pfFSFJy/NQkTVlogIrSoC/OOn83vKIMgnb3VSUD1HETBMduwVnuMnorOvmzXcoUFu98UIjMWXEp2PFs/v8VgMZkzemXcUrRUao8QYXtEE9WM5BEyRHYUc/Z1bb5iOav9hxnDHDXKZ1FBRWwdT4TG/+N/TDYeMd5mUTD93DQHTZNdX+J13VEfU+M8iicRXMvUcjXFolDPy8fP7yIVzfjPYpQ6PjHdGlE1lHEfAEtl5Lw/fc9vjVxKJby3X65XO6cvVyc3LnzPYnfvEz4THFzOPMhWaKKut43OaGlwGAVtkR5louJuJJX6Q7hyP53QkvNkvPxSC1aXlMDp0wWxVr5WnyDuvaSTA/bFNdn1bP2e4e0EFqOVYvhGOAf6x+iHZC1YVwcgF34TULj9UctFZnQZUTyACQsjOz/FT8WgHGu5G43PW93RuNjN9R8IrOYpfbshlGhqt8pkQop9LRUAY2edX9Htue7nt0pWvHJv+NErOzgjQQo8htWilz4qPVvmsUKMfByGc7Jsbt65XFfhYJBgYUjs7M509hAd6oUbk/CBZxhAQTvZNn9/aBgzuM9a88VJZSHiy2BtXP5UUgIBQsq9v3F6Wr0Sk7bezkfAAQH55AROZRGRGQCjZN27Z2sQA9mRu1nqJLCU8AtKjKNDce6xz5ZczrUNHNQOOgFCyy9rCL9ZRFhMeQIO9US3UTAkyAs5MCcMXS/Ybtx0ETbtLQj+XiEQrPVNyssMPvxSwMAC0RtVQK5HeidkUjDaEkl0/s7NIqwwDXTp1ZFXgTfr5pp/nZ9WCNiJ9MAgpc5RCyc476tR2HttDwheVlvk+lj6DkvWVXlGhjWLtZdIhu2VLITtCtmnLVnwd9QEn4MNY+vKaOsDbcl5+bUYQFj3A2ABoWjcw1q0l2EB/9zvdgmSTmCxGQBrZETMnrPNcN5zwmM/OJ/noRU+r+V8CGsBAjgIDZNkXDbG/5Uklu77C37htB2haGwCUyoYK78NX16+D6fB4NkXb2YWtRwNo7e/qRB3QF2AEpJNdX+Ebb2pkior+Y+mEx/bQNYdfVtyYEzc56dwvDktfSnKE7IhMMmb+IAB8zgmk0HBXXFEJQ5987OskGFKw0mCvkgNttM2Xgq5nhTpGdkQAXXMFSuSgBnCLE4jgOV7PSz90wW8PUTgBD7ZBW3ynkPZAO46SnY/XSdccz2sXi0T8mqraiWlCW3wnUHa5DVfIjmO+fsu2Zg20R50aP6aqLlxdEhT3nHVYaYtvHTuP13SN7IiLk5Z6bI9v68PDl3ybn96p+YQJM1WANrLiO4W4/HZcJXuKpR4Nd1fLHy4A39YnYjF9W++zN+acgGhxG4MA0EZx+m5AL7ZN18nODXf5SgRdc45Y6rFNvq0PcBCO+ZmkwV5NU1opYs88dF6o4Qmyu2G4S93WT4fHsiWppSNzirb4jsAsvBFPkV3f1juQAGMxinhdNq8glO2XaYRPHgAYBMaa+97vwGMYfR5HwHNkR7w2/9rW7aoKOIEcibjDNvEVWf5WvF8fl3Rrrumv3yjQQkE6bmnAWLueJLtO+LkstY5F3GGb3HinJlTAszwZ74xNIl6KSG8OL6dLe5bs84Y7B5NhcPDReFdUWq7H1gf0Bp29ecjYISWhNdPde3swiq7tabLzwTodgIPt4gOT1Q3r4MrkBEXeWZ11GKCjQQuR3iqAYuv5guy64c7hm3Mc5rKqGigsLoHLZz8JQmIMsbMrKU0D9lhMLWih1FpS4DUs1Ddk59t6Jy/ScBTReFdeWwfkojM8r9IVpCSatuCzX9lXZOfD3bhlWysD7Tv2h29cAhrvMPUVPjSJ6a/IeGccu0UlifSWobNX0ZdkxyE7HVfPYV5VXKKTHq315KKzNfkGNYAWir23haGpyr4lO47SDfcctstddPhvWuVNzbd0hYn0tiE0JsDXZHdzW49t0ypvbJIZLDWoKNBEgTkG0bJQLCvI7ua2Hl10lXX1EI/FKBDHwgRcXIUCcwSAuIyIrCE739ZrCrQ5lfYqFVMMxCkur6KzvKC5SqQXBGSKmKwiOx+Xkw9UpKqEr/KqmqCzvKi5SoE5opCErCQ7opMMwnEsKUaqRjCzbWlVDa3ywqYp6K/bUjSePUCzluwIC2azzVNmW5z2yS+22I8NXaToO3vzdL42ReNZBzKryT6/rXfwVZrFquAW+8mxYUqQYX2eLq5JgTkWsAwE2fkqn58z2+bU+/GpukC/PMbYY4IMSoNlYZYuX4VIbwLOwJDdC6s8j7GfnZmmZJcmJqmBohSYYwCkwJHd7VUe2yc3nYGZaa3IYF5ewT/WX3Pd+WhBor29rW3cmpjsrBVIsi9a5VudSmOdOoXQTVdeuwYUJYcerhDMrbz8/HO1664ZyM3NPRLNj7cS6ecADjTZ3bbYY/s8951+fXZshG7TCSR+YXFxT9WaBlByclsPP/NU4J+sDjzZ+dxK+uVxQjiWuz51XqMBD1Nh4Ws1U+ExgVOeRJVV1ZwurqgGlsv+6MiBn+L7BIH8iOyL1J5MgdXiZGZb3oXUrT1Z7cXyET0iVVetPR0qXDXMlJw/OfzMU91iW/C+NCJ7Gh25GYyTurW/MjWX/44SZYgjEh6byqrXzABoHfHZyB++818v4vNWgfiI7CuoGe/Lu3WxBrvF89/RQ5TiuchDmqfGRy6Eh4ff0Bi056jQns3JMYnsBuZR8tEKtNo7fp4nq70BBVkswoOdClYVpaYNx1duupkG7arK2rPpXTsiu4mJknyaCs/zjrw4m9o1DLvFyzWU9NKEwgwWzRDsFGYA3RpAu6JAu5+TaxDZDU6I1GJukX6ZlcjCCKhKOgT44yCZjk1zD1uybsagPZooaPdLimwiu415j0kvmaY1O50sI9U3jwY8+sQhwI9NKNFEfsEe0KDb6+d+IruAeaL76JnaDAzuEyDOkIjUyzU4KeOxqKF6VMgYAjbzC3ry3E9kN6Z7Q6XmXHaRHQyg2SljHl/lKRjHkIpMFeK/UHPy8sys8una8MS5n8huSv3GC6es9jtkB+hQamvjerFSEn+honEUf6FGZqatiFhSB8/9AOzgya4O9PI48hHZJcPs5GrPfcf4+qyoSSkZHt+I56s8dnh06IKwfisqbHDKt09kF6a2zIJ0f30CmmSe7fnrs3hnXuSkzDy6YJTID4XmswgLiWxk7FDf+x24+5P+EdmlQ7y0geRLNk0wd7YvldEFHn1Hb8zLQFesTEWBLznhvyeyi9WbaWlJn70Ugx6uQtX1VwPlvzOtFkcr4Pn9ZFfndtmNEtllI2xQPm7xNRVaRPvsyUVnUAEuF9MA7pf9yCWR3WUlL25e3+IzaBF9rrfpN/YYSlnZncG+rs71MkdGZJeJrg3ZMs713EWnJlR6l86GbiRWfbCvqxPvXkj5iOxSYBUnFF13+UoEz/TCjHk8Bnxs6AK56MSpSoSkcFQNrZcVa09kF6EiB2SkkB6t+LZv3XEX3ZXJuQQZ9HkDAXzxpr+rA3+xC/+I7MIhlS9Q5K07ctHJ15fZFmQF2hDZzWrCQ+VFkZ7f56a78h5RrqRAGyK7R/RrpxsiSI/Gu/KaOlByFLuXPuwMheomEZARaENkz6LplXyX3pYhj1x0npkQPX1dnY0ie0NkF4mmB2SJsN7jKl9dvw5isxHKbuuiTkUH2hDZXVSmzKZFkB5ddIWrS+jlWZmKWln25aga2iTKFUdkd0+RjrRsNyIP4+sr6xqAXHSOqCtNI9rJqFq4VQThiexu6dDhdu3mwEcX3VzKZUqB5bDqsLkJYOy+vvc7Dtppm8huBz0f1rWTA5+76CZHR+g9Ohd0jwE3MbWgxeoqT2R3QWleaNKqu45SYLmuvR5NVZqsPF5BZHddd+51wI4Rjz9aQfH1rugvrAE0m70SS2R3RVfealQ34uWwVtC0u8z0DOPrK+vqdRcdpcAyg5yYsmbj6InsYnDPCinJ8zy+UW/qog2/RUcpsJyfBpjlZlYN7TByjieyO68fz7eYPM9jimPD+fHQRYfhtvjM9MToiOfHmGUd7Imqoe2ZCE9kzzKtixqO1fN8RW0d5BWE4PK5T+hdeVHKMCYnI+GJ7MaADGwpnfQs0momTRZ30WV6IDGwoMob+IqEJ7LLAz6rJJs14nEXXSIWo/h6B2fCSkY7IruDisiGpsxmweUuOjLeOaf95a7HEtmd00FWtWTGcs9ddPhKDaXAkj8NlstDT2SXj31Wt2AmEo/foqP4evlTIt3qTmSXj3vWt2DGcs9ddNPhcYqvlzgz0q3uRHaJgAdN9NyLtbMtDLTvZBo7uugEvHueqZlA/3zx6k5kD/R0kDN4o3foZbx7LmdEPpW6KHElkd2nevRDt41Y7lNddBRfL16rqWmpiezi8SWJixAwYrlHF11xeSWlwBI/e+aflCKyiweXJC6DQCbLPbroymvXALroKL5e2DSafzCSyC4MUxJkBAEjlnvuoqP4eiOIZi7Dt/JE9sxYUQkJCGSy3HMX3eTYCMxMTkjoQXBEcqs8kT04OvfkSDNZ7tFFhx9G3qmJhCfH4INO6ed2IrsPNBWELq5kuUcXXXFFJeAtumgkEgQ4RI+RyC4aUZJnH4Hlst9yFx0Z7yxhTGS3BBtVcgSB5Sz36KIrKi2DsaGLEI9FHemL7xtJBtfQNt73mszuASQfq9wFACV8pNxFh/H1ZLzLrH8eJ09kz4wVlXAZgRR33QOpXUEXHRKfjHcrK4jI7vIEpubNI5B8wuphDeAeXhtddKVVNWS8WwFOIrv5uUY1PILAxsabGpmivgIA9bxL+BYdfpQcY6mSeKoq2sZ7ZAJTN8wjcP2Wbc0aaA8DQA7W5i46Mt4txJIB23Wyq6OVyG5+jlENDyGQzH77CjC4GbuFLjpc5dEfPxUe81BP3esKhcu6hz21LAGB5Cr/KBeNLrrC1SX6LbqAR9719HV1NiIutLJLmHgk0h0Ekmd5fL7qc3yVx1dqpsNjEJmZdqdTLrfKt/BEdpcVQc2LRyDdBRt00eEXwGuz4agaWs+fhaKVXfx8I4keQGDTjdt2gKbhKq+/V4f+eO6iC1Dk3XziClrZPTApqQvyEMBVvkCJHNQAbuGt4CqvJtQgGO8Go2qoMfWxR1rZ5c01kuwRBJLGuxa+ymMgDrrppsLj2Wi8G2QAAxpjrX3vdxxMVQGR3SMTkrohF4Fk9F1b6iovt0Up0nsYwLjG2DhoWrduhFSgHf+OxEPd9GSzFMxJqF8RSN6ma+YWew+MQycw9kMF1s1A0//NSZyIK+P93e/oxLb70cpuF0Gq70sE8Dwfyo00qipsTxqv9L/x0wDKDPwyCDOAtCTUYG61nf8Y61bYHInx6z3WufDnDiFIZHcIaGqGEHAbASK72xqg9gkBhxAgsjsENDVDCLiNwP8DQl5LXN7I90UAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_26", - w: 10, - h: 34, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAiCAYAAABmzUjmAAAB6UlEQVQ4T32UMXKbUBCG/11NMi51BDWWXRLkArniCLqBX5EDcIAUHIEiB+AI+AZUFkVCKG2p0RFU2p6wm1kmIJBAVDzeN7v/7v4LoffcPwShHeu/fNxXL1X/jtrD8luQ8gypnaWGA1O2+73N2vsTuFrbxcYuFl44/zr7SNuzfevAW+/RY9ZQhHJLe+cH+VtZNFIG4ECrFyyEEO/+FO4q2Op9/VXkk+BytTadrq/vIrXpJJb0U27CQ5UfR9vTVMrvuQq78x4OIpou652qzmeMQ19fB95blYzMUn7hj3hfbqN+2g5sClD1mNFUeR6tA2/9wBGwYEFaM0WTEZtqSSJr8HK1zrSmeNIUNjIlSrjWShhW/aYPd7P+X1CuQAzhiliyPtyBnWusl6AcQqnBLAhfq+IwAPvetHfzpwpic9EoaJAVxaRJLbRhYDyigY3mGSUGi2A6osHWCWLEV0HrLVgdQY82sVGNnZNAPwj681NuvAvwBCFhwAmQ7ssiHYCtcdUiEb6rambQcAv9wFkEVn6qSZ4VSFpo6B5FqMpJMw2GuzBuu+zmmPP5Dnbmzl9HxFrZqEQ4GtuXJrXtihJyBs3fym1yvgLdXi/9IIZi0f8rjMHU7suuLOKpaE1q02gv19Ke2uM9elNFtFn+Ae3qD8hey6gjAAAAAElFTkSuQmCC", - e: 1, - }, - { - id: "image_27", - w: 53, - h: 30, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADUAAAAeCAYAAACMjVaFAAAFOklEQVRYR+2YTWxUVRTH/+fNm5k3M52PMqltoZQCmmhiUoiaqETolIAWYgA3ChtbpiQmLooLd4aUvYm40sSQ4sa4Ml2JSGJloytim5CYiMq0QD+cdjqf7Xy9d825wxs6w7R9Ux8RE+9m5s2cd+753fNxz7105Ez0EkD7YNNIzM3+fnPi22ExMRaCYQyCRJ9ULWgSCmKAEaPIuR9tmq6hGjpyZpgnOGTXJEtzs1M3L7w1CkFXAAQ30JsCMAlQDEJMQlHGKTIUs8MO26HK6aXCJ6cPuk3jejsDzdg5DYErdDg62sxL9bK2QyUX/0JvTwd8Ksm59oS9OPrMU+gJqDBKxer8Tm8LnJ6W9Wy/AVJOUmQouRU426Eou4SvTuyBJ7Ctxh5yOKC6PZX00nWUVrMoreagqC64WgIS0OF0rX1nCqT0bQXMdqjXw3kMv9SNYNdeS4usl4oSsJhNQxg6nB4fXC1BcwG2BGY71C6RwMcDz1qGqicvF1ZRzKZQzKXR0r6T4ZoGsx0qOzeNq0MvghQVvrbt9SFlyXsyRA0dmfm7MjS1wLamwGyHyszG8POF0zKkcvFZkFOD21fJF84pUhyWwVgwF78Ph9vTFJjtUNn5Gfz00dvS8G9uzeHqrRkc3O7BCx0edLWoEIYhveDyBeBpbbMEmU8nZFHxt++05DHboRL3pzHy5gF8/1scC9mChPO5HPisvx0dXbuqXmJDC+llqG4NvrYdm3qPc62QTrAsg3G5X3ejth1qYeYO2rt3V43UVKX84aGniy93uL31+xIbuppchBZo3WjPqupiD/NieEJtaZByiCJDk41Ww3ao+L0ZtHV1w+lQ8vs7g/H3D/SEOv2aP7Nwl8OnxgbOFy3UJnMvsL1nU2/VCawLZjsU5ZZxbeTYtDB0GWtmYVhZmkd9F5G694cs/fyf4nRxMWgWLAtSXqv3mO1QIpPIXf/guI+tY+/wZsrGbgTFsgzI3mq2OgJYASk71nYe9kPlksvXRwZa2VDOGTY2vPd5pO7/CU8wLLsFc5ie4udKV5GyVDQecSfRdYqcPWr+Tq8MnLpSyK++63R74PX7odb2X5bCwdB1ZFNJlEtFHN+/d+7isd5O88XF21Nyf9JCYeTic9i2+7mqNxJ3fpXP5mjkTUsGABnqj1aPA7KV5oNiMV8YySwvolwqQXU6wZAuTZM6Na+MJjmK+TwMQ5cA/L1UyEt5X7AVHq/v4rXoqyGQGDHlk3dvy/DTgmHpNXegVT5zz9eoQKRnY/B37Gw6DKk/WjkWcB6bX954570eXSmdh1D6yuVCLxtcLOTl5AxqDkVxwKlp4E+GdWnaDUEYV3V1/LuvP4+JibF9EMYvpjyXYQYjUuANd6CcX5GfXJrlgtUVB5Znj1nZu9Z6sSFUvZuPnDm3TygixL8rBuSR3CAkQXxaBdSyGmOIRuEhfrjMv1d32tVkvNJJ6GWz5ZHtD8M1Kgyci5WOfd3zVv20U9QfrV5JVD1lMXYtiYmJy4MQGDOF5dlpJbv2SCGLiHm+sqR0QyH6kvrPDj4Sfv9cca2GB2HI9x9B9hQDVFeelP0wDPZ+CITzm9xlbG4aGZG1lzmPxVPVfKrk16VCZnmX299qtgzT1B+ttg/y1gnGSQjwvcTD5nBzFFOiRl9NobCuY2uSD0LyEkgMUmR4vGEuVsKWw8j67RaJU/X6HquntoYPiIkv+iDoPEAnNtQh6FM6fJbDt2Y8kVC14auPNoBLcbjSYb6IfXQ80VBr4EJA+WHJ3uSG9z8B1WwY/w/V7Ir9W/J/A97dKz1MnVK8AAAAAElFTkSuQmCC", - e: 1, - }, - { - id: "image_28", - w: 50, - h: 60, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAA8CAYAAAAkNenBAAADPElEQVRoQ92azZXTMBDHZ/y4QwdsB4QKiJMCCBWwWS9nQgUsFRDOrDehApYCEi8VsKkA6CBpwMOTvxIrsi1bI9mPXC1N9PP8R6MZGaHmR5twAR7s0Q/WdeOG8AyrFkHRagQU/0qeI8yHDlMNsg0fAOBVAYr0Bv3r+yG8fdUalCCJpBA+SxMOgN4Y/fnjEGHOQChaPQOK/wDAU8WCBwtzDrK9vQfA1zVvfZAwJRCKbmdA+F1DOoODKUAySQn9P9cAEUMGBXME2dwtAem9JkQ+TMBcoD/ft5zHPjwBoejrGMiLOlrfZbtZrzApyDYUknrREURM6x0GaRPeAMJHA4h8aq8wSHIGNyPqDQYN40OF3QtMHiPlc5WZV8TsnzgJxuZm9C1w7FoV/4bfcHJ1qb8Us5HHPMIbK9mq3MGcZvZj/WH2cqTZbmDKZ63t3RqA3rJyJMbsw0iHxtUFUPybH8Q+jOIYb8sr4ggBH3AaLG28KFVhZdEr9up/dalrLVbyzYy/maEGqS93eZTB3Jmp7qLwHSarwRlh6vpadU0IHq8kmxmPzCpBkjrFhVeYSuZ6EBexkvrWuP6vBcm8omrW8UnraMkIphEkgdmGomGn210xgewMowcShZdAsDJZYYu5nWC0QDKvcBdfdWytYfRBIpsHSiVTq5JZG8ThdnxKpQ3TCsRx4OdAWjDtQcy6ki1ivjS0EaY1SCqxTn3irhBanukG4i7jy/CVbaZOIIlX9O9STD1Rnk/4BadXC9loZ5A08Btvt3ghcmsY++i/E3mt+JmBDEhiRiC9Sgy9l6c3zMYgvUmM4BNOg5tCbRwibrjS5vgLlY3SDsbikZ4ktsNJMGL1SG6MbLeRJL/gJCgcweaR1CvJVxNtrrhNZGdHWoVXnJ3F6AdOrmdWpFXAuOi+SG0kVmmd6oT5klWW4NmHCvZAbGZ9KYcISmsgWfDbuAX7C+iN5M9GrIKkMKwdmMqmhHWQBIYn+A+A8Uw+9VrdtVTJwTBZCjnN6j5DdOIRg8x/AIIleN6y6VMqpyCpzLTq/R0QrMHz1k0AzqVVyjFpmbwAoD2Atwci0VsG8OIHgCePuos/tencIyaHq7q5/w3IP4Y8h0xOB9+lAAAAAElFTkSuQmCC", - e: 1, - }, - { - id: "image_29", - w: 16, - h: 44, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAsCAYAAABsSzi3AAAAWElEQVRIS+2WUQ2AUAwDbw6QggO04QAJSMFJ56TkBQcLn93/9nFplytJV1XtDMb2Xd39AMdgH9tnDoRBckC6QBisH5ouhEFy8NlEuhAG/+VA0tLcbWKqQL+xxDW4j9bMdwAAAABJRU5ErkJggg==", - e: 1, - }, - { - id: "image_30", - w: 6, - h: 42, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAqCAYAAACQoioFAAAA1UlEQVQ4T+2TvWrDUAyFj6Rre807FDoHMmTMK+aR0q2GDt1KIPQB/IODvfhXCjdDuY6XYDp0qEDTBzpIOoeKojia2RZBEdEn5Xl+AnAIAYC3FaCqqg/n3C4c1fd9Sk3TXJj5JQSq+n3XEJEDEd2ZmWGapjXiT+3hdbzGYsEoijAMwxwwM+I4Rtu2c+Ccg+9/8OOSv3kS/7YkSdB13fLnIuLNtgSBTX/ViT4fAGb5UNWU6ro+i8irN5wvVcU4jl9UluU7M+8fgpOuCGeWZVsi2oSjzOx6A3jmHSuVqrH1AAAAAElFTkSuQmCC", - e: 1, - }, - { - id: "image_31", - w: 20, - h: 38, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAmCAYAAADEO7urAAAA3ElEQVRIS+2WMQ6DMAxFP4GIhUN069qNkav0Kh27de3WozD2CD0FGyAcgqtEggGhChLKFEuZEn99vzhyIiJ6ALhgn3hFRFQCKPbQY+ZbEPQjOTGs67oYhgFaa/R9v1k1TVObI6V8HncpxrFSatHt6Gi+aUtumubdtm2+uc6FhCzLQh96ggxv2RMggMAwMHQgENrGAdosZZopWuuciJwV4ziGWVLKux2jSik7l30iSRIIIQ4YUl3XrTZqXJlSx7AMq6r6MPN5tcqPg8d+RVwc/+3pXZn55OJoniOEKL8CUy7M3A8ekgAAAABJRU5ErkJggg==", - e: 1, - }, - { - id: "image_32", - w: 12, - h: 42, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAqCAYAAACHgLrMAAACHElEQVRIS8WVXY6iQBSFCw1iEBQJhFnGLGASMjuapfSS+qEX0DvAxzYaQMQ//GHylV221TIz9dKZ+6Kx6tQ995x7r1aWZU+WZX0XHeF53re6rt/UUdu2v6zZbPYshEi7AL1eT/i+L1arlTxu2/bnXwFcchxHWJYl9vu9GQDQZDKRWYwyABgOh5LSbrf7NyVVG1nKsjQHUHxVVV8ICIJAFEVhlqHf7wvXdXVKtm1LkzDrcrlI3bfbrax5NBqJ0+nEb9cMtm2nqFAUhTifz0K9iJxlWUoflsvlhw9RFKV5nsuX74OsYRhK0zSnfd9Pm6YRh8NBA8AbOpxpTkMJFcgCJVXP8XgU6/VaJEkiFosFZx8qcYkX+eRiXdcSTCAGvxm3Bh07GAzMnf6PAArG6S55mbq6rq8qOY6TogT2t20rC8QoJCUwj+9N01wBSZKktMD9y/hCcHE6neqtEcdxWlXVAxVeJhs9xmO3mXZdN6UF7kFIOR6PZRZcflgzdCipCQrE5c1mIxcArxuvGZQjOzUar5k4jiUtY0AURbpKf9qtajg6ARTteZ4s+L2VbxP4AMBpCmOqUAdJ1dZmbPmuFR2GoXT6fqbpKYxTbmvGBUEgAZ+DrNCcz+e6cZ8pKe25xQJQe0qTVe0i+FM0zkIDamSiCY19oOivA0AVmuxZI0rsKmrBHyMABdPmt3nIsow/9es8dkQYhj/yPH95P3r9DdFbHktcqNZ4AAAAAElFTkSuQmCC", - e: 1, - }, - { - id: "image_33", - w: 15, - h: 40, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAoCAYAAAAhf6DEAAAA8UlEQVRIS+2VTQ6CMBCFZ0rv4sKNiQfgih5JliaSuHChZ4CEwIqUnzEPJSCCoWXBhkm6m6+deW3ncRzHJxE5kGUw842jKDoTkW/JIj3gJEmuRHR0gMNRWClFWG3UdU1YgwibsrXWvud5xMyzCvhs9obRswMcLBNskdr/YLRSVdWUDtNlQzzAZVnaw1rrBnKGcdfGGLeTcXqe5xvcKTB9zxBrE+znrWyC9SVZ95FgFBVF4fafnccQQPTtNMMAY4aNeFTbxpqOkabpXSm1n2WPvSRjzOXL6Ia+PNwQ1iMiXc9Zlj2YeWd7sog8V7RY23L7+S/3pBk1t0RC+gAAAABJRU5ErkJggg==", - e: 1, - }, - { - id: "image_34", - w: 13, - h: 44, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAsCAYAAAC+GzLvAAABP0lEQVRIS+2Wu2qFQBCGZxXviKK9KCnSpktpHjGPdMo8QoqAFpbiXXHxFkaiiecYz5IuoGDlfvrPx8wgCYLglRDyBIyX67ovJAzDCwD4jAy4rktOCOAUsXTM3zsijuMPSulD13VM7bd+yTAMH6Gmae6Cm3imacI0TZDn+SF4U5OqqiDLMmRZBuM47sK7IhDEO0mSXfBXe4IggGVZM3gtaIaiKHrr+/75OgvHcTNYVRW0bbs+nqE4jt95nn/cE4AgCkJoMbvGEwTBNwwD0jSFYRhuBOi6PtdX1/V2NLAOBK/jLG9Aq3jGtu3tYlniYPFlWbIrx5OapoGiKLvaDxsWo6CEoiiAUrq1d7Qs9+IyjwZ2iCiK81cdx2HfsDzPA6qXJMk71/K5lr+nhLn3fg7Wf4CCIMBfHPPu5v864Hne5RNJPxNBx77Q9gAAAABJRU5ErkJggg==", - e: 1, - }, - { - id: "image_35", - w: 12, - h: 42, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAqCAYAAACHgLrMAAAB7UlEQVRIS82VX26CQBDGF1n5s0DSxx7DAzQhvVGP0iP1oQfoMRr1TQVX1G1+wCgoVnxqNyGB2f12Zr5vZvCWy+W7c26mBlYYhs/W2m/Zcs69eYvF4kMplQ8BPM9TYRiq7XYr26+/AjiltVYAq6ri8z6AU1EUiZdxgOl0WodUVdU4QMfLfwLEcazKshwX0mQyUUEQwNQZ4Pt+LRKcO+fUfr9Xu92uZgf74XDA1gB838/huixLdTweldyIaNjY22w2Z+GSJMmLoqhv7i68GmNq0XpKR1GUEwJPdxE3D/a2ns4hwQJeCEny4Z2DWZap9XpNBP2kKQEOkyAJAxCVsY0uDZLn6dE61A9i+0MACaP0EL3YrbUNS1rrHPlhBfGIucN9LZ61FvYaQJZlOSXQvRldWBzkvVcaaZrmCHQZCjfjDUHbvcZDEAR5W74nEAcpOhYqt+usNBUqYZAg+aA2wFblcWMG5vBOjqPnUpqmEta4Fk2SpM/SrdkqmQ4CpC27CUsHXgFQWmiFHZiRqQ2I917Sxpha6W5P4wnhRO2ecHEc14DLxc14Xq1WfeEuQxLuOYVoeL76P0jS0tMyRS7+QuN0ePiH8hCAUKG5nbP3Q5LJ186o+wCopetO/TCfz2ee5z3dmkvGmJeiKD7Z11p//QCl/twtAL+1HQAAAABJRU5ErkJggg==", - e: 1, - }, - { - id: "image_36", - w: 15, - h: 39, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAnCAYAAADQKRIRAAAA6ElEQVRIS+2W0QmDMBCG/yiiLxJBB+gI3aCruEo36AgdxU3iAEEUURTRlJP2odQ0mtKHFvOc75L77/JfmBDiwhg7YuNSSl1ZnucZgNNGFkqp87/BjuNgmiatFNqcPc9DGIYYhmEO0DTNSxAtHAQB6OS2bRFFEcqyXA8TGMcxuq4D3aIoivXwYyeB4zgu5m6ss+u6M7y0jLDv++j73g4mxeu6toM556iqyg5OkgRSyh2+K2Cs8y7Yc6/sgi28nR9tEp1nU4bGOn/kYTQ5yPitrJdMn+aVFfzut2DM+buwECIFcNj6oQGQ3QBZjntChu/l3gAAAABJRU5ErkJggg==", - e: 1, - }, - { - id: "image_37", - w: 19, - h: 32, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAgCAYAAADwvkPPAAABIElEQVRIS+1WyY3DMAwkLVq2fykl/zyMlLFdbAPpISXtIwWkDtsFWL64GG2EzQ0oycMPExAEyNRwNBgS5qZp9qq6pjdDVb+5rusfIirfxML17efBRKQ0xpCIRBOcpomGYSBm/vo8s/lqtjCLscrrpoUvmZnGcSRV/e+APM9L51w4fMgmSRLKsoywAyQEwJxzf8yYuUQSDruuuwEFC2utB0FROP480DnW2t1FB5wOfR6eEAItgyLnbO7Q98wORLSJURpFsfCSvu8JxcLUOBRFsWnb9qlmYAopAAKAwDKA3mgGeDznVMmThV5pmnoQfMO6DuQYYy6nRriIHZXDDsGvRX+k2Ywn7TI1Yrz8+tRYrDHHf42qqtbMvIrxwL1cETn+Aj8l7LjrhQzsAAAAAElFTkSuQmCC", - e: 1, - }, - { - id: "image_38", - w: 148, - h: 9, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJQAAAAJCAYAAADUxAVJAAAAfUlEQVRYR+2YsQ3AMAgEYYQsgNgg2SArZqTsg1uLkrRpcYGU8K6N0N9fBY8xrog4CA8EXgTcfc8CEZGNzewmojM7jP//JjDnTAdUVYZQaWw9BiBUj57LUkKoMtQ9FkGoHj2XpYRQZah7LIJQPXouS7ksFO5QZR19atHqHeoBGbZFCqQSjQIAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_39", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_40", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_41", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_42", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_43", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_44", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2N88+bNhP///xswQAEjI+MFxtevXx9gYGCwhwkyMDAcJEEQm5kATJEcMXBUZ3YAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_45", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_46", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_47", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2N88+bNhP///xswQAEjI+MFxtevXx9gYGCwhwkyMDAcJEEQm5kATJEcMXBUZ3YAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_48", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_49", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_50", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_51", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_52", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_53", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_54", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_55", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_56", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2N88+bNhP///xswQAEjI+MFxtevXx9gYGCwhwkyMDAcJEEQm5kATJEcMXBUZ3YAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_57", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_58", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_59", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_60", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_61", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_62", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_63", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_64", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2N88+bNhP///xswQAEjI+MFxtevXx9gYGCwhwkyMDAcJEEQm5kATJEcMXBUZ3YAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_65", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_66", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2N88+bNhP///xswQAEjI+MFxtevXx9gYGCwhwkyMDAcJEEQm5kATJEcMXBUZ3YAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_67", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2N88+bNhP///xswQAEjI+MFxtevXx9gYGCwhwkyMDAcJEEQm5kATJEcMXBUZ3YAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_68", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_69", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_70", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_71", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_72", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_73", - w: 5, - h: 5, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_74", - w: 104, - h: 93, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABdCAYAAABJqyO/AAACTUlEQVR4Xu2cP4saUQAHn6soWkhOVBBPPCGFpd+/zgdIyhTBROyMoFbq+ufYIpDCxC3eC6OZ7Y7bezc7cz/Yg+Mqi8XiU5Zlr8ELZeB6ve5Ho9G0slwuv/f7/TGKTpiwWq02w+HwxUDQHwYDQcP8wjKQgeAG4HguyEBwA3A8F2QguAE4ngsyENwAHM8FGQhuAI7nggwENwDHi7Kgw+EQjsfjzUfN8zxcLpdSGhqNxs37qtVqaLVapc54tpuiBLon5Xw+h9Pp9Nfb/hTn3tnP/vl/EujZJaZ8PgOltBvhbANFkJjyCAOltBvhbANFkJjyiGiBilfp4pW6uH5/5S7zBpfyAVOeXavVQvErQHFlWRaKj4sr5htptEApRfzPZxsIXt9ABoIbgOOt1+ufg8Gg51+WQkNtt9sfvV7vzUAGghqAY7kgA8ENwPFckIHgBuB4LshAcANwPBdkILgBOJ4LMhDcABzPBRkIbgCO54IMBDcAx3NBBoIbgOO5IAPBDcDxXJCB4AbgeC7IQHADcDwXZCC4ATieCzIQ3AAczwUZCG4AjueCDAQ3AMdzQQaCG4DjuSADwQ3A8VyQgeAG4HguyEBwA3A8F2QguAE4ngsyENwAHM8FGQhuAI7nggwENwDHc0EGghuA47kgA8ENwPF2u923brf70f9ZCg213++/tNvtmYEMBDUAx3JBBoIbgOO5IAPBDcDxXJCB4AbgeC7okQI1m80xnPcp8Or1eunnyPP8a6fTmVbm8/kshPCh9Femv/HzZDLZpP82j/Ed3gGHcAaLF9EWPgAAAABJRU5ErkJggg==", - e: 1, - }, - { - id: "image_75", - w: 85, - h: 48, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFUAAAAwCAYAAABgzDazAAACEUlEQVR4Xu2asU4CQRCGZ7jlsDMWRC9cQXwBTOxs1M7SR/AxrIyP4CvY0dpRam/haxhC2OJCcXCcWROIHGcQdgYQ/u2A8O/st//s7uwdU6ElSfJERGfF73fps7W2JTmeOI6PfupxCdRXZr6U7HTbtLrdrmhIzWZzhiOgCuAFVCKCUwWcVJQAVEBVIKAgCacCqgIBBUk4FVAVCChIwqmAqkBAQRJOBVQFAgqScCqgKhBQkIRTdxHqaDSiPM8VhrY5SWutaOcL71P7/f4HM7cczPF4LNr5togNBgPRUIwxzxPBOI7vcPMvipdcVl8DKqDKEJDe/Y0xn0TUcdENh8NHOFVgnmq12lsURVcTKUAFVAECCk9T55za6/Ue0jS9IKIDF3IQBO7tlEN3nMqyTGYUG1QxxhDzbEJKH6nmoCZJsvNvpBTn1GejcgCzLDvJ8/zbhK4ZY9pRFN1P11Rr7TsRnS9rpm0pDoIgcNm1VPg+FVWxeirrmF36E9Hp5MdKpXLDzMd/jdItEw7wulsYhit3qQ61GNk+LAc+6f+zJJ2mO3On0Wi0caRa2efzf8Q5dR1HKqS/v2XhVDjV30VlCj4bVZkenAqn7ohTXYWVpunCCus/3Q1Uq9WZ2VGv/bH7+2cD1lSsqf4uwu6vw3BOFUcqBdCACqgKBBQk4VQFqD6X1GXhhGH4Uq/Xb3+9T1UYw95JfgGbFJy3cuqUuAAAAABJRU5ErkJggg==", - e: 1, - }, - { - id: "image_76", - w: 76, - h: 7, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAAAHCAYAAACiCKuEAAAAdElEQVRIS2N88+bNhP///xswDDPw798/np8/fypT01uMjIxrGV+/fn2AgYHBnpoGDwaz/v79y/Djxw+qOoWFheXgaICREKSjAUZCYIGUjgbYaIAhQoBmZdirV68MGBkZBUgM7EGv/O/fvzz//v1TobJDzwAAftZLV1+WGloAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_77", - w: 85, - h: 48, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFUAAAAwCAYAAABgzDazAAACCElEQVR4Xu2aPU7DQBCFZ2xnQ0dlkcgpIi4AEh0NlJQcgZNwBgouQEcJHSX0FFyAE0RRXEQpVnGCRihRsjHKz+7EIn7uHMdvd799+zOzZnKu4XD4zsxX7u+HdJ/nedDmZFnGi4JLN/KgDlB7vV5QqN1uF1ABNainfsUAFVAVCChIwqmAqkBAQRJOBVQFAgqScCqgKhBQkIRTAVWBgIIknAqoCgQUJOFUQFUgoCBZuVPH4zFNp1OFplUnGTrzvzZJPRgMvpj5TGBOJpPqWq5Y8mg0CqqeJMnTTLDT6dzhOCUoXiJxLaACahgCoRcqY8x3FEWPUrtWq/UApwbop2az+dFut69nUoAKqAEIKJymrji13+/fW2sviehIqhzH8TkRHct2qiiKMK2oUCVJEmJnPQ69pVqBWocvUtw+9VmoBKCrx8wvskDN59Q8zz+J6GJbM1lrt31F5f9xHMvo2krbJ6Jyo6eyglmGPxGdzh5GUXTDzCeb1lKmCYm+9n0ZY3YuUh2qW7M6TAc+w38xJJ0Pd+a3LMuesaXa2eerL2Kfuo8tFYa/v2XhVDjV30VlCj4LVZkenAqnHohTJcKy1q6NsP5TbqDRaCz1jnrsX9XqL8maTc/AXCi+/sWc6kuw5H1ABVQFAgqScCqgKhBQkIRTAVWBgIKkT5K6rDrGmNc0TW//zKcqtKF2kj+c9ZFAfACFtQAAAABJRU5ErkJggg==", - e: 1, - }, - { - id: "image_78", - w: 76, - h: 7, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAAAHCAYAAACiCKuEAAAAdElEQVRIS2N88+bNhP///xswDDPw798/np8/fypT01uMjIxrGV+/fn2AgYHBnpoGDwaz/v79y/Djxw+qOoWFheXgaICREKSjAUZCYIGUjgbYaIAhQoBmZdirV68MGBkZBUgM7EGv/O/fvzz//v1TobJDzwAAftZLV1+WGloAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_79", - w: 118, - h: 152, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHYAAACYCAYAAAAx6R3jAAAGQ0lEQVR4Xu2dW27bOhCGSTk3xwqSxwJ9iYAuoMBZQLuULuHs4LQ76BKyk6Y7KPpcQHnqoxHDytUXHowL5y5riJCcofrrLchoZvR/nqFkUrRtmua9c+7IvOKYzWZvbm5u/pnP5++KohguFou3xpjhK1z+DaeOB4PB2Dn3ezab/SyK4tdyuWwCXfiZbZrm1Fr7IZBDuPFUYDabmfPzc8+zNps7574AbFBJ/Z0BrL9mWZwBsFlg8k8SYP01y+IMgM0Ck3+SycGGvlPzveTBYGCKovA9TZ29c87s7e2Zra2tF3NLDvbi4sKMRiN1QuWWEIGjY3t7G2Bzg7cpX4DtE80H1wKwABtMgY3fPGGMDaMzKjaMjuq8AKw6JGESAtgwOqrzArDqkIRJCGDD6KjOC8CqQxImIYANo6M6LwDriYS+XLfWep6V3hxgPTS/vr42t7e3hmaACDDNnNAMisYDYJlUCORkMjFHR/cLK+lbsv39fZUVDLBMsCQUVevDKcXFYmGWy2Xr1BjTdRQzgGXKShCn0+mziqVWTK1Z2wGwHkQejrHrSsUYey9g1rM7VLkaK/Tp5xMV61GxOZkSWLprb3s0w5qnnGg+yJXAta13IjOABVi2AlmPseyrFDZExQoDiBUeYGMpK+wXYIUBxAoPsLGUFfYLsMIAYoUH2FjKCvsFWGEAscIDbCxlhf2qA0tTY314PzUWV/r+l6MPzT7t7u62ppH8K8VYgsDvYwUAtqefCIAFWLYC2MCLLVU8Q1RsPG1FPScHS7vGbJogFlUjo+B0V0zrsbC5SEbQOKlizRNHpQxtADZDaJyUAZajUoY2AJshNE7KAMtRKUMbgM0QGidlgOWolKENwGYIjZMywHJUytAGYDOExkkZYDkqZWgDsB7QaB8KevmZXk2kd2Q1T1YArAdYmnkaDoerNUc0e0J7UhwcHHh4SGcKsEyt5/P5qlrLsrw7g/6mxWVtP6jAdB3FDGCZspJQT3eN6RKP6TqKWVduySfaNe8wTq348PDw7vV/WiqLVnz/ucz2xWdqx1dXV6sroXGW1u1qbMOUHyo2SiOUdwqw8gyiZKDuFQ/NY2wUApGcAmwkYaXdAqw0gUjxATaSsNJuAVaaQKT4ABtJWGm3ACtNIFJ8gI0krLRbgJUmECk+wEYSVtqtOrA0Y6J1O/aUsGiVxmsmGNSBpa8UOQd39xSOr77aqNqIuq8ia7uu5BPt2gToaz4A21OyAAuwbAWwHRBbqniGySt2PB6z9gqMd8n98EyL22mpLHaN6QfPu6vAmqeeAV1fDsACbDAFsl1XHEyBBI5QsQlElggBsBKqJ4gJsAlElggBsBKqJ4gJsAlElggBsBKqJ4gJsAlElggBsBKqJ4gJsJ4idwnm6S6aeVeeyWd3NL9Guf4VL9oKaLFYmPUMSjQ6r3AMsEzxCOTl5eWjPSdo24KdnZ3Vnk/aDoBlEiGhnu4aQ7BpvyeNG3kBLBMstd3JZPJs1xiazKY1wNoOgPUgQmLRPQCtaSbQm37XxsNtFFOAjSKrvFOAlWcQJQOVr3iMRqMoF/s3OQXYntIGWIANpgDWPAWTst0RKjaByBIhAFZC9QQxATaByBIhAFZC9QQxATaByBIhAFZC9QQxATaByBIhVIKVEKJvMWkBAHaN6RtVxvUkX/PEyAkmARQA2AAianQBsBqpBMgJYAOIqNEFwGqkEiAngA0gokYXAKuRSoCcADaAiBpdAKxGKgFyAtgAImp0AbAaqQTICWADiKjRBcBqpBIgp2hgu3KbTqcfi6L41mW3/r9z7ntZlh+59r52dV1/ttb+53He9+Pj46D5NE1zaq394JHDl9Fo9LnN/uzs7NQYw/ZH64arqmr1R3E63zsE2Oc4ANbjI801RcUaenUUFWuMQSt+qWrQitGKVwrg5unFQQU3T11jLcZYjLHrzwjGWIyxXf3iz//xuMPTycsKrRitGK14U8ngcQePO3jcaa8QPO50DbgYYzHGYozFGNvVJx7/H487fnqxrNGK0YrRitGKWc3izgit2E8vljVaMVoxWvGmUmma5r0x5iurnP4Y/SjL8l8Pey/Tuq4/WWs/cU9yzv2oqipoPk3TkB6kC/c4KcvypM24ruuv1lq2P+fcSVVVrf4ozv/hRdyYpZNOYAAAAABJRU5ErkJggg==", - e: 1, - }, - { - id: "image_80", - w: 40, - h: 25, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAZCAYAAABD2GxlAAABRUlEQVRYR+2W4VHDMAyF9bIAZQNpAtiAMAFsQDYAJqBsUCYgG9ANoBuwgewN6ATinEtyrqHX65XW5i7+6ch53z3ZkkBblqreVlXVmNlsW8yx982sRSqiqgygJaKrYwPs+r+ZPW8AquolgA8iOtt1+BTfNwBVddbDXSTiq2A1EblTQCUabnRQVRcA7qOAtZk1IrLMADZKdoD9vdMErhaRz5xwQbsD9N63ZnY3wJjZo4gscsONgM65r+hheGbmEuA6wFDvALxF7r2IyENJgHMATxHgtYiEUlPEgvd+aWY3EeC5iISUF7HgnAtujV2DmX90l5ykKeCambP13t+MSAFXzFzndCzVngAPzUZ4xXEXKS/FqhrXwQlw35SHVjc5uK9rcfy/cLAB8NpTFzVqDeNWDeB9sLW4XhzGfSJqBkARmR9yZ/767DcBkaUOn9u9agAAAABJRU5ErkJggg==", - e: 1, - }, - { - id: "image_81", - w: 44, - h: 4, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAECAYAAAD1e91aAAAAb0lEQVQoU83Q0QmAMAwE0F4ncAPJJo7SDXSEjqAbOIqbHG7gBicRhNoPP0vzdyRwjyBUQ3KKMS6ShnrXOkvKZnaUvXgDSQdmAHNr2F+fpM1dZnb53QP2rwLYQwhjT9jCckpK/m2QTABSp9APS9J6AyQoI/Lp40UAAAAAAElFTkSuQmCC", - e: 1, - }, - { - id: "image_82", - w: 32, - h: 19, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAATCAYAAADxlA/3AAABE0lEQVRIS82WfVHDQBDF3zsD1EFyDkABwQEoIA7AAcEBEooDJFRCUbCJgyrIYzZzMNNSplfmMmn+vb33fvuRbIiZHzOrAdyHEBpJK5L9OI7rGOPGrTmXvxuHEDpJj8c8SL5XVdUWBzCzFYBnki+nkpN0UxTAzFqSHYDqlLmfS7rbA0j9cpEmBXifegDbGOP2UDRl67ENyRbAVY7xd8wegJl1GWX7BLBLAtfnGh7C/QBkmp+TXFbsBOBlJ2lZNwoH1XVNB3gj+VRYO0tuAuj73gftNutG4aDFASTFRSswDeGSLbgMgGEY1n8tjMIz90tO0oO/hjlfwFlYJL1eBIAvkg9fOLOkeUQ0/ZT4ktsUXcf/SeAL2jGLrcOfEs0AAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_83", - w: 37, - h: 34, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACUAAAAiCAYAAADYmxC7AAAA+0lEQVRYR+2SwY3CQAxFbd+iySUVLNvBdkC2EugASqADoAO2EugA0QHbAVLGOfgQrxJpVogD+AIZIec0mfkav3k2ws3HzCtVrW/3n/WPiAcR2VRVdUk18LoYM+8AYPYsgDv3nkSkTmD/UG3bLlV1PQLQUFJVt2VZLvv1ABVj/ELE41hAqS4RfRZFcU5QB0Scjg0FAD8hhDk2TVMT0T4DoB7hN4QwwRjjBhEXmUCBiFQ9VC6tG7x0XfeNzHwGgI9cTCUozQXo2pRDPeqKt++RoXTuptyU1YA15zPlpqwGrDmfKTdlNWDN+Uy5KasBa85n6i1MrayveEWOiHZ/dUfyj8QHeXoAAAAASUVORK5CYII=", - e: 1, - }, - { - id: "image_84", - w: 77, - h: 99, - u: "", - p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE0AAABjCAYAAADer432AAACyElEQVR4Xu3dUY7SQBzH8ZmhLCYDiZxAvIGJB1APYMIN9AjewPUEegSOsr77oCdQb4AJBUPLjJlmIUCy2e2vbeySL29s+5v++fS33YcFas3ZY7PZzGKM8xDC/HzbY3seQnjinPurzG2t/RVCWEwmk5vzvD3+QZ7n18aYj8pB+pYpy9LEGM1wOGw0Wozxa1EU8+l0utwvdEDL83xhjHnX6Ag9ChdFUU3TFO32Jf2JMb4ej8ff0/MK7ZIatj9vLaOlZX94719UaOkaFkL42aOStDJKB2hprk/e+2u7Xq8/xBg/tzJpjxbpCO23935mV6vVjbX2VY9ebyujdIRmnHPPQat5ikIIb+xyufxmjHmZsunPdAih5jL93H2321WDDQaDxgNmWZYaVq3jnHt70rR9pRsfpQcL7AtwdXXVeJoEtsevmnbJ17Ttdmu8943RjhcATeAEDbRTgXR95tezZitAqwmWdgcNNEFAiNA00AQBIULTQBMEhAhNA00QECI0DTRBQIjQNNAEASFC00ATBIQITQNNEBAiNA00QUCI0DTQBAEhQtNAEwSECE0T0PI8r1K8l6MGHmg1sPa7ggaaICBEaFoP0b4YY6oPFTyGh7V2Zox5dt+snTbtvoP3bftDP10D2tGZA02oMWigCQJChKaBJggIEZoGmiAgRGgaaIKAEKFpoAkCQoSmgSYICBGaBpogIEQe2rRO/+8pzP1fI6AJ/KCBJggIEZoGmiAgRGgaaIKAEKFpoAkCQoSmgSYICBGaBpogIERoGmiCgBChaaAJAkKEpoEmCAgRmgaaICBEaBpogoAQoWmgCQJCpDdNu8Rviu/8bQmXipZuSDEajYQ+3x2pviU+bb5UtPTaWrpv1EERNKGDoIF2KtDVLZBoGk2jaUIHQGuM1tb9Pc8HOb6mvb/9FoLGw/ZpgbIsn2ZZdriZaRuzOecW/wCP+6yWxKEr0gAAAABJRU5ErkJggg==", - e: 1, - }, - { - id: "comp_0", - layers: [ - { - ddd: 0, - ind: 1, - ty: 2, - nm: "пол", - refId: "image_0", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [249.49, 470.412, 0], ix: 2 }, - a: { a: 0, k: [221.747, 0.511, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [0, 100, 100], - }, - { t: 8, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 0, - op: 375, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 2, - ty: 0, - nm: "часы", - refId: "comp_1", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [103.798, 83.659, 0], ix: 2 }, - a: { a: 0, k: [103.798, 83.659, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - w: 500, - h: 500, - ip: 24, - op: 399, - st: 24, - bm: 0, - }, - { - ddd: 0, - ind: 3, - ty: 0, - nm: "цветок на полу", - refId: "comp_2", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [401.51, 402, 0], ix: 2 }, - a: { a: 0, k: [401.51, 402, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - w: 500, - h: 500, - ip: 20, - op: 395, - st: 20, - bm: 0, - }, - { - ddd: 0, - ind: 4, - ty: 0, - nm: "человек, стол, кресло", - refId: "comp_3", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [250, 250, 0], ix: 2 }, - a: { a: 0, k: [250, 250, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - w: 500, - h: 500, - ip: 31, - op: 406, - st: 31, - bm: 0, - }, - { - ddd: 0, - ind: 5, - ty: 0, - nm: "книжная полка", - refId: "comp_7", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [370.196, 89.518, 0], ix: 2 }, - a: { a: 0, k: [370.196, 89.518, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - w: 500, - h: 500, - ip: 9, - op: 384, - st: 9, - bm: 0, - }, - { - ddd: 0, - ind: 6, - ty: 0, - nm: "календарь", - refId: "comp_8", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [219.337, 135.95, 0], ix: 2 }, - a: { a: 0, k: [219.337, 135.95, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - w: 500, - h: 500, - ip: 17, - op: 392, - st: 17, - bm: 0, - }, - { - ddd: 0, - ind: 7, - ty: 0, - nm: "документы на полу", - refId: "comp_9", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [61.854, 417.895, 0], ix: 2 }, - a: { a: 0, k: [61.854, 417.895, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - w: 500, - h: 500, - ip: 65, - op: 440, - st: 65, - bm: 0, - }, - { - ddd: 0, - ind: 8, - ty: 0, - nm: "тумбочка и кофемашинка", - refId: "comp_10", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [434, 346, 0], ix: 2 }, - a: { a: 0, k: [434, 346, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - w: 500, - h: 500, - ip: 5, - op: 380, - st: 5, - bm: 0, - }, - ], - }, - { - id: "comp_1", - layers: [ - { - ddd: 0, - ind: 1, - ty: 2, - nm: "Слой 17", - refId: "image_1", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [103.798, 83.659, 0], ix: 2 }, - a: { a: 0, k: [13.603, 20.548, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 10, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 21, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 27, - s: [95, 95, 100], - }, - { t: 30, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 10, - op: 385, - st: 10, - bm: 0, - }, - { - ddd: 0, - ind: 2, - ty: 2, - nm: "Слой 18", - refId: "image_2", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [103.465, 83.272, 0], ix: 2 }, - a: { a: 0, k: [39.37, 39.369, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 4, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 15, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 21, - s: [95, 95, 100], - }, - { t: 24, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 4, - op: 379, - st: 4, - bm: 0, - }, - { - ddd: 0, - ind: 3, - ty: 2, - nm: "Слой 20", - refId: "image_3", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [103.616, 83.476, 0], ix: 2 }, - a: { a: 0, k: [40.317, 40.317, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 11, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 17, - s: [95, 95, 100], - }, - { t: 20, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 0, - op: 375, - st: 0, - bm: 0, - }, - ], - }, - { - id: "comp_2", - layers: [ - { - ddd: 0, - ind: 1, - ty: 2, - nm: "Слой 105", - refId: "image_4", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [407.745, 451.741, 0], ix: 2 }, - a: { a: 0, k: [17, 5, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 11, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 17, - s: [95, 95, 100], - }, - { t: 20, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 0, - op: 375, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 2, - ty: 2, - nm: "Слой 106", - refId: "image_5", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [407.987, 447.731, 0], ix: 2 }, - a: { a: 0, k: [19, 11, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 3, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 14, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 20, - s: [95, 95, 100], - }, - { t: 23, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 3, - op: 378, - st: 3, - bm: 0, - }, - { - ddd: 0, - ind: 3, - ty: 2, - nm: "Слой 107", - refId: "image_6", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [407.987, 471.731, 0], ix: 2 }, - a: { a: 0, k: [19, 35, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 6, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 17, - s: [101, 101, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 23, - s: [95, 95, 100], - }, - { t: 26, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 6, - op: 381, - st: 6, - bm: 0, - }, - { - ddd: 0, - ind: 4, - ty: 2, - nm: "Слой 21", - refId: "image_7", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 9, - s: [15], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 21.857, - s: [-23], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 22, - s: [-15], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 32, - s: [5], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 41, - s: [-5], - }, - { t: 49, s: [0] }, - ], - ix: 10, - }, - p: { a: 0, k: [409.002, 440.08, 0], ix: 2 }, - a: { a: 0, k: [1.219, 55.611, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 9, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 20, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 26, - s: [95, 95, 100], - }, - { t: 29, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 9, - op: 384, - st: 9, - bm: 0, - }, - { - ddd: 0, - ind: 5, - ty: 2, - nm: "Слой 22", - refId: "image_8", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 6, - s: [15], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 18.857, - s: [-23], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 19, - s: [-15], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 29, - s: [5], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 38, - s: [-5], - }, - { t: 46, s: [0] }, - ], - ix: 10, - }, - p: { a: 0, k: [409.598, 440.638, 0], ix: 2 }, - a: { a: 0, k: [8.088, 101.776, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 6, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 17, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 23, - s: [95, 95, 100], - }, - { t: 26, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 6, - op: 381, - st: 6, - bm: 0, - }, - { - ddd: 0, - ind: 6, - ty: 2, - nm: "Слой 23", - refId: "image_9", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 15, - s: [15], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 27.857, - s: [-23], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 28, - s: [-15], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 38, - s: [5], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 47, - s: [-5], - }, - { t: 55, s: [0] }, - ], - ix: 10, - }, - p: { a: 0, k: [408.005, 440.368, 0], ix: 2 }, - a: { a: 0, k: [33.302, 113.984, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 15, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 26, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 32, - s: [95, 95, 100], - }, - { t: 35, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 15, - op: 390, - st: 15, - bm: 0, - }, - { - ddd: 0, - ind: 7, - ty: 2, - nm: "Слой 24", - refId: "image_10", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 12, - s: [15], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 24.857, - s: [-23], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 25, - s: [-15], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 35, - s: [5], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 44, - s: [-5], - }, - { t: 52, s: [0] }, - ], - ix: 10, - }, - p: { a: 0, k: [405.903, 440.783, 0], ix: 2 }, - a: { a: 0, k: [68.473, 31.762, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 12, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 23, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 29, - s: [95, 95, 100], - }, - { t: 32, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 12, - op: 387, - st: 12, - bm: 0, - }, - { - ddd: 0, - ind: 8, - ty: 2, - nm: "Слой 25", - refId: "image_11", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 18, - s: [15], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 31, - s: [-15], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 41, - s: [5], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 50, - s: [-5], - }, - { t: 58, s: [0] }, - ], - ix: 10, - }, - p: { a: 0, k: [407.553, 441.083, 0], ix: 2 }, - a: { a: 0, k: [57.255, 81.75, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 18, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 29, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 35, - s: [95, 95, 100], - }, - { t: 38, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 18, - op: 393, - st: 18, - bm: 0, - }, - ], - }, - { - id: "comp_3", - layers: [ - { - ddd: 0, - ind: 1, - ty: 0, - nm: "кактус", - refId: "comp_4", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [115.969, 263.652, 0], ix: 2 }, - a: { a: 0, k: [115.969, 263.652, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - w: 500, - h: 500, - ip: 15, - op: 390, - st: 15, - bm: 0, - }, - { - ddd: 0, - ind: 2, - ty: 2, - nm: "документы на столе", - refId: "image_15", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.675, y: 1 }, - o: { x: 0.879, y: 0 }, - t: 10, - s: [72.646, 227.15, 0], - to: [16, 4.667, 0], - ti: [2, -9.167, 0], - }, - { t: 18, s: [87.646, 267.15, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [38.577, 21.613, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 10, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 17, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 22.333, - s: [95, 95, 100], - }, - { t: 25, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 10, - op: 385, - st: 10, - bm: 0, - }, - { - ddd: 0, - ind: 3, - ty: 2, - nm: "ноутбку", - refId: "image_16", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [211.425, 290.801, 0], ix: 2 }, - a: { a: 0, k: [54.5, 47, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 20, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 28, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 34, - s: [95, 95, 100], - }, - { t: 37, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 20, - op: 395, - st: 20, - bm: 0, - }, - { - ddd: 0, - ind: 5, - ty: 0, - nm: "стол", - refId: "comp_5", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [219.797, 470.367, 0], ix: 2 }, - a: { a: 0, k: [219.797, 470.367, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 7, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 12.333, - s: [95, 95, 100], - }, - { t: 15, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - w: 500, - h: 500, - ip: 0, - op: 375, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 6, - ty: 0, - nm: "кресло", - refId: "comp_6", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 24, - s: [32], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 37, - s: [-8], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 43, - s: [3], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 48, - s: [0], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 51, - s: [0], - }, - { - i: { x: [0.567], y: [0.694] }, - o: { x: [0.177], y: [0] }, - t: 57, - s: [5], - }, - { - i: { x: [0.84], y: [1] }, - o: { x: [0.391], y: [-1.153] }, - t: 63, - s: [0], - }, - { t: 68, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 24, - s: [347.97, 326.962, 0], - to: [-16.333, 5.5, 0], - ti: [7.833, -17.75, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.167, y: 0 }, - t: 37, - s: [316.97, 359.962, 0], - to: [1.225, 15.065, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 0.667 }, - o: { x: 0.167, y: 0.167 }, - t: 43, - s: [330.97, 369.962, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.593, y: 0.522 }, - o: { x: 0.175, y: 0 }, - t: 58, - s: [330.97, 369.962, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.698, y: 1 }, - o: { x: 0.351, y: 0.33 }, - t: 64, - s: [330.97, 381.037, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.959, y: 0 }, - o: { x: 0.197, y: 0 }, - t: 67, - s: [330.97, 387.962, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.659, y: 0.476 }, - o: { x: 0.319, y: 0.279 }, - t: 70, - s: [330.97, 388.293, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.7, y: 1 }, - o: { x: 0.35, y: 0.414 }, - t: 72, - s: [330.97, 382.084, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { t: 75, s: [330.97, 369.962, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [330.97, 370.962, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 24, - s: [0, 0, 100], - }, - { - i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, - o: { x: [0.167, 0.167, 0.167], y: [0, 0, 0] }, - t: 33, - s: [100, 100, 100], - }, - { - i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, - o: { x: [0.167, 0.163, 0.167], y: [0, -0.267, 0] }, - t: 58, - s: [100, 100, 100], - }, - { - i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, - o: { x: [0.167, 0.549, 0.167], y: [0, -0.635, 0] }, - t: 67, - s: [100, 85, 100], - }, - { t: 75, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - w: 500, - h: 500, - ip: 23, - op: 398, - st: 23, - bm: 0, - }, - { - ddd: 0, - ind: 7, - ty: 2, - nm: "голова", - parent: 8, - refId: "image_23", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [0.383] }, - o: { x: [0.333], y: [0] }, - t: 50, - s: [-8], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [0.333], y: [1.146] }, - t: 75, - s: [-2.816], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 136, - s: [4], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 180, - s: [-3], - }, - { t: 228, s: [3] }, - ], - ix: 10, - }, - p: { a: 0, k: [92.325, 47.429, 0], ix: 2 }, - a: { a: 0, k: [16.911, 76.919, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - ip: 17, - op: 392, - st: 17, - bm: 0, - }, - { - ddd: 0, - ind: 8, - ty: 2, - nm: "туловище", - refId: "image_24", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 53, - s: [8], - }, - { t: 63, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 50, - s: [284.271, 302.787, 0], - to: [0, 7, 0], - ti: [0, -11.333, 0], - }, - { - i: { x: 0.667, y: 0.614 }, - o: { x: 0.333, y: 0 }, - t: 58, - s: [284.271, 344.787, 0], - to: [0, 7.707, 0], - ti: [0, -5.136, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0.453 }, - t: 64, - s: [284.271, 363.724, 0], - to: [0, 2.416, 0], - ti: [0, -0.107, 0], - }, - { - i: { x: 0.667, y: 0.062 }, - o: { x: 0.333, y: 0 }, - t: 67, - s: [284.271, 371.787, 0], - to: [0, 0.163, 0], - ti: [0, 5.395, 0], - }, - { - i: { x: 0.667, y: 0.409 }, - o: { x: 0.333, y: 0.38 }, - t: 70, - s: [284.271, 369.776, 0], - to: [0, -2.447, 0], - ti: [0, 4.217, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0.383 }, - t: 72, - s: [284.271, 362.841, 0], - to: [0, -5.495, 0], - ti: [0, 1.156, 0], - }, - { t: 75, s: [284.271, 346.787, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [33.596, 152.675, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 47, - s: [0, 0, 100], - }, - { t: 50, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 17, - op: 392, - st: 17, - bm: 0, - }, - { - ddd: 0, - ind: 9, - ty: 2, - nm: "ноги", - parent: 8, - refId: "image_25", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [-2.292] }, - o: { x: [0.333], y: [0] }, - t: 60, - s: [10], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0.412] }, - t: 72, - s: [8], - }, - { t: 78, s: [0] }, - ], - ix: 10, - }, - p: { a: 0, k: [29.376, 148.505, 0], ix: 2 }, - a: { a: 0, k: [238.11, 167.965, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - ip: 17, - op: 392, - st: 17, - bm: 0, - }, - { - ddd: 0, - ind: 10, - ty: 2, - nm: "пар", - parent: 11, - refId: "image_26", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 77, - s: [13.666, 0, 0], - to: [-0.5, 0, 0], - ti: [1, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 136, - s: [10.666, 0, 0], - to: [-1, 0, 0], - ti: [-0.167, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 194, - s: [7.666, 0, 0], - to: [0.167, 0, 0], - ti: [-0.833, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 246, - s: [11.666, 0, 0], - to: [0.833, 0, 0], - ti: [-0.167, 0, 0], - }, - { t: 295, s: [12.666, 0, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [5, 34, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 77, - s: [100, 100, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 136, - s: [-1.961, 29, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 193.495, - s: [-100, 100, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 246, - s: [4.545, 28, 100], - }, - { t: 294, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 17, - op: 392, - st: 17, - bm: 0, - }, - { - ddd: 0, - ind: 11, - ty: 2, - nm: "рука с чашкой", - parent: 12, - refId: "image_27", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 77, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 137, - s: [-14], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 194, - s: [2], - }, - { - i: { x: [0.627], y: [11.036] }, - o: { x: [0.333], y: [0] }, - t: 260, - s: [-14], - }, - { t: 327, s: [-12.472] }, - ], - ix: 10, - }, - p: { a: 0, k: [4.63, 6.919, 0], ix: 2 }, - a: { a: 0, k: [43.523, 19.106, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - ip: 17, - op: 392, - st: 17, - bm: 0, - }, - { - ddd: 0, - ind: 12, - ty: 2, - nm: "основная часть руки", - parent: 8, - refId: "image_28", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 52, - s: [-13], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 77, - s: [0], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 137, - s: [10], - }, - { - i: { x: [0.667], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 194, - s: [-3], - }, - { - i: { x: [0.627], y: [-1.823] }, - o: { x: [0.333], y: [0] }, - t: 260, - s: [10], - }, - { t: 327, s: [14.381] }, - ], - ix: 10, - }, - p: { a: 0, k: [37.255, 91.128, 0], ix: 2 }, - a: { a: 0, k: [41.481, 49.503, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - ip: 17, - op: 392, - st: 17, - bm: 0, - }, - ], - }, - { - id: "comp_4", - layers: [ - { - ddd: 0, - ind: 1, - ty: 2, - nm: "Слой 29", - refId: "image_12", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [116.097, 261.837, 0], ix: 2 }, - a: { a: 0, k: [16, 32, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 8, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 16, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 22, - s: [95, 95, 100], - }, - { t: 25, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 8, - op: 383, - st: 8, - bm: 0, - }, - { - ddd: 0, - ind: 2, - ty: 2, - nm: "Слой 103", - refId: "image_13", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [115.529, 267.628, 0], ix: 2 }, - a: { a: 0, k: [17.5, 7, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 5, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 13, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 19, - s: [95, 95, 100], - }, - { t: 22, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 5, - op: 380, - st: 5, - bm: 0, - }, - { - ddd: 0, - ind: 3, - ty: 2, - nm: "Слой 104", - refId: "image_14", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [115.969, 290.39, 0], ix: 2 }, - a: { a: 0, k: [15.5, 25, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 8, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 14, - s: [95, 95, 100], - }, - { t: 17, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 0, - op: 375, - st: 0, - bm: 0, - }, - ], - }, - { - id: "comp_5", - layers: [ - { - ddd: 0, - ind: 1, - ty: 2, - nm: "Слой 28", - refId: "image_17", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [223.437, 386.397, 0], ix: 2 }, - a: { a: 0, k: [153.436, 84.265, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - ip: 0, - op: 375, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 2, - ty: 2, - nm: "Слой 31", - refId: "image_18", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [219.93, 296.491, 0], ix: 2 }, - a: { a: 0, k: [172.132, 7.241, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - ip: 0, - op: 375, - st: 0, - bm: 0, - }, - ], - }, - { - id: "comp_6", - layers: [ - { - ddd: 0, - ind: 1, - ty: 2, - nm: "Слой 33", - refId: "image_19", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [281.542, 420.339, 0], ix: 2 }, - a: { a: 0, k: [61.745, 49.972, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - ip: 0, - op: 375, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 2, - ty: 2, - nm: "Слой 34", - refId: "image_20", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [303.423, 343.441, 0], ix: 2 }, - a: { a: 0, k: [51.18, 24.406, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - ip: 0, - op: 375, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 3, - ty: 2, - nm: "Слой 35", - refId: "image_21", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [352.014, 310.621, 0], ix: 2 }, - a: { a: 0, k: [44.107, 61.183, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - ip: 0, - op: 375, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 4, - ty: 2, - nm: "Слой 36", - refId: "image_22", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [272.127, 359.414, 0], ix: 2 }, - a: { a: 0, k: [58.158, 11.452, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - ip: 0, - op: 375, - st: 0, - bm: 0, - }, - ], - }, - { - id: "comp_7", - layers: [ - { - ddd: 0, - ind: 1, - ty: 2, - nm: "Слой 38", - refId: "image_29", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 20, - s: [313.714, 80.995, 0], - to: [2.5, 5.25, 0], - ti: [-2.5, -4.5, 0], - }, - { t: 33, s: [313.714, 110.995, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [8, 44, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 20, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 31, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 37, - s: [95, 95, 100], - }, - { t: 40, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 20, - op: 395, - st: 20, - bm: 0, - }, - { - ddd: 0, - ind: 2, - ty: 2, - nm: "Слой 43", - refId: "image_30", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 36, - s: [323.84, 60.23, 0], - to: [-2.5, 5.75, 0], - ti: [-2, -5.5, 0], - }, - { t: 49, s: [323.84, 90.23, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [2.975, 20.652, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 36, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 47, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 53, - s: [95, 95, 100], - }, - { t: 56, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 36, - op: 411, - st: 36, - bm: 0, - }, - { - ddd: 0, - ind: 3, - ty: 2, - nm: "Слой 44", - refId: "image_31", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 28, - s: [336.035, 80.977, 0], - to: [3.5, 4.25, 0], - ti: [2, -4.75, 0], - }, - { t: 41, s: [336.035, 110.977, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [10, 38, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 28, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 39, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 45, - s: [95, 95, 100], - }, - { t: 48, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 28, - op: 403, - st: 28, - bm: 0, - }, - { - ddd: 0, - ind: 4, - ty: 2, - nm: "Слой 45", - refId: "image_32", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 12, - s: [351.292, 81.316, 0], - to: [3.25, 5.5, 0], - ti: [3.25, -5, 0], - }, - { t: 25, s: [351.292, 111.316, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [6, 42, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 12, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 23, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 29, - s: [95, 95, 100], - }, - { t: 32, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 12, - op: 387, - st: 12, - bm: 0, - }, - { - ddd: 0, - ind: 5, - ty: 2, - nm: "Слой 46", - refId: "image_33", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 24, - s: [363.552, 81.698, 0], - to: [-2.75, 3.75, 0], - ti: [2.75, -5, 0], - }, - { t: 37, s: [363.552, 111.698, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [7.5, 40, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 24, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 35, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 41, - s: [95, 95, 100], - }, - { t: 44, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 24, - op: 399, - st: 24, - bm: 0, - }, - { - ddd: 0, - ind: 6, - ty: 2, - nm: "Слой 47", - refId: "image_34", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 8, - s: [376.696, 81.518, 0], - to: [-3.25, 3, 0], - ti: [3.25, -4, 0], - }, - { t: 21, s: [376.696, 111.518, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [6.5, 44, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 8, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 19, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 25, - s: [95, 95, 100], - }, - { t: 28, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 8, - op: 383, - st: 8, - bm: 0, - }, - { - ddd: 0, - ind: 7, - ty: 2, - nm: "Слой 48", - refId: "image_35", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 32, - s: [387.783, 81.054, 0], - to: [-3.75, 4, 0], - ti: [-2.75, -4, 0], - }, - { t: 45, s: [387.783, 111.054, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [6, 42, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 32, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 43, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 49, - s: [95, 95, 100], - }, - { t: 52, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 32, - op: 407, - st: 32, - bm: 0, - }, - { - ddd: 0, - ind: 8, - ty: 2, - nm: "Слой 49", - refId: "image_36", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 16, - s: [400.185, 80.698, 0], - to: [-3.75, 4.75, 0], - ti: [2.25, -4.5, 0], - }, - { t: 29, s: [400.185, 110.698, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [7.5, 39, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 16, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 27, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 33, - s: [95, 95, 100], - }, - { t: 36, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 16, - op: 391, - st: 16, - bm: 0, - }, - { - ddd: 0, - ind: 9, - ty: 2, - nm: "Слой 50", - refId: "image_37", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 4, - s: [415.835, 80.895, 0], - to: [5.75, 4.75, 0], - ti: [5.75, -5.5, 0], - }, - { t: 17, s: [415.835, 110.895, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [9.5, 32, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 4, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 15, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 21, - s: [95, 95, 100], - }, - { t: 24, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 4, - op: 379, - st: 4, - bm: 0, - }, - { - ddd: 0, - ind: 10, - ty: 2, - nm: "Слой 52", - refId: "image_38", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [366.031, 114.076, 0], ix: 2 }, - a: { a: 0, k: [73.573, 4.436, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 11, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 17, - s: [95, 95, 100], - }, - { t: 20, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 0, - op: 375, - st: 0, - bm: 0, - }, - ], - }, - { - id: "comp_8", - layers: [ - { - ddd: 0, - ind: 1, - ty: 2, - nm: "Слой 54", - refId: "image_39", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [248.815, 163.37, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 35, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 46, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 52, - s: [95, 95, 100], - }, - { t: 55, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 35, - op: 410, - st: 35, - bm: 0, - }, - { - ddd: 0, - ind: 2, - ty: 2, - nm: "Слой 55", - refId: "image_40", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [238.428, 163.174, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 34, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 45, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 51, - s: [95, 95, 100], - }, - { t: 54, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 34, - op: 409, - st: 34, - bm: 0, - }, - { - ddd: 0, - ind: 3, - ty: 2, - nm: "Слой 56", - refId: "image_41", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [227.65, 163.37, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 33, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 44, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 50, - s: [95, 95, 100], - }, - { t: 53, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 33, - op: 408, - st: 33, - bm: 0, - }, - { - ddd: 0, - ind: 4, - ty: 2, - nm: "Слой 57", - refId: "image_42", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [217.068, 163.37, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 32, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 43, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 49, - s: [95, 95, 100], - }, - { t: 52, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 32, - op: 407, - st: 32, - bm: 0, - }, - { - ddd: 0, - ind: 5, - ty: 2, - nm: "Слой 58", - refId: "image_43", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [206.485, 163.37, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 31, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 42, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 48, - s: [95, 95, 100], - }, - { t: 51, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 31, - op: 406, - st: 31, - bm: 0, - }, - { - ddd: 0, - ind: 6, - ty: 2, - nm: "Слой 59", - refId: "image_44", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [195.903, 163.37, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 30, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 41, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 47, - s: [95, 95, 100], - }, - { t: 50, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 30, - op: 405, - st: 30, - bm: 0, - }, - { - ddd: 0, - ind: 7, - ty: 2, - nm: "Слой 60", - refId: "image_45", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [185.32, 163.37, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 29, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 40, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 46, - s: [95, 95, 100], - }, - { t: 49, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 29, - op: 404, - st: 29, - bm: 0, - }, - { - ddd: 0, - ind: 8, - ty: 2, - nm: "Слой 61", - refId: "image_46", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [248.815, 154.229, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 28, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 39, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 45, - s: [95, 95, 100], - }, - { t: 48, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 28, - op: 403, - st: 28, - bm: 0, - }, - { - ddd: 0, - ind: 9, - ty: 2, - nm: "Слой 62", - refId: "image_47", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [238.232, 154.229, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 27, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 38, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 44, - s: [95, 95, 100], - }, - { t: 47, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 27, - op: 402, - st: 27, - bm: 0, - }, - { - ddd: 0, - ind: 10, - ty: 2, - nm: "Слой 63", - refId: "image_48", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [227.65, 154.229, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 26, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 37, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 43, - s: [95, 95, 100], - }, - { t: 46, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 26, - op: 401, - st: 26, - bm: 0, - }, - { - ddd: 0, - ind: 11, - ty: 2, - nm: "Слой 64", - refId: "image_49", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [217.263, 154.034, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 25, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 36, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 42, - s: [95, 95, 100], - }, - { t: 45, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 25, - op: 400, - st: 25, - bm: 0, - }, - { - ddd: 0, - ind: 12, - ty: 2, - nm: "Слой 65", - refId: "image_50", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [206.485, 154.229, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 24, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 35, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 41, - s: [95, 95, 100], - }, - { t: 44, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 24, - op: 399, - st: 24, - bm: 0, - }, - { - ddd: 0, - ind: 13, - ty: 2, - nm: "Слой 66", - refId: "image_51", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [195.903, 154.229, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 23, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 34, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 40, - s: [95, 95, 100], - }, - { t: 43, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 23, - op: 398, - st: 23, - bm: 0, - }, - { - ddd: 0, - ind: 14, - ty: 2, - nm: "Слой 67", - refId: "image_52", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [185.32, 154.229, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 22, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 33, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 39, - s: [95, 95, 100], - }, - { t: 42, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 22, - op: 397, - st: 22, - bm: 0, - }, - { - ddd: 0, - ind: 15, - ty: 2, - nm: "Слой 68", - refId: "image_53", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [248.815, 145.09, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 21, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 32, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 38, - s: [95, 95, 100], - }, - { t: 41, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 21, - op: 396, - st: 21, - bm: 0, - }, - { - ddd: 0, - ind: 16, - ty: 2, - nm: "Слой 69", - refId: "image_54", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [238.232, 145.09, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 20, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 31, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 37, - s: [95, 95, 100], - }, - { t: 40, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 20, - op: 395, - st: 20, - bm: 0, - }, - { - ddd: 0, - ind: 17, - ty: 2, - nm: "Слой 70", - refId: "image_55", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [227.65, 145.09, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 19, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 30, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 36, - s: [95, 95, 100], - }, - { t: 39, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 19, - op: 394, - st: 19, - bm: 0, - }, - { - ddd: 0, - ind: 18, - ty: 2, - nm: "Слой 71", - refId: "image_56", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [217.068, 145.09, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 18, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 29, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 35, - s: [95, 95, 100], - }, - { t: 38, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 18, - op: 393, - st: 18, - bm: 0, - }, - { - ddd: 0, - ind: 19, - ty: 2, - nm: "Слой 72", - refId: "image_57", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [206.485, 145.09, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 17, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 28, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 34, - s: [95, 95, 100], - }, - { t: 37, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 17, - op: 392, - st: 17, - bm: 0, - }, - { - ddd: 0, - ind: 20, - ty: 2, - nm: "Слой 73", - refId: "image_58", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [196.098, 144.895, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 16, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 27, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 33, - s: [95, 95, 100], - }, - { t: 36, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 16, - op: 391, - st: 16, - bm: 0, - }, - { - ddd: 0, - ind: 21, - ty: 2, - nm: "Слой 74", - refId: "image_59", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [185.32, 145.09, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 15, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 26, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 32, - s: [95, 95, 100], - }, - { t: 35, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 15, - op: 390, - st: 15, - bm: 0, - }, - { - ddd: 0, - ind: 22, - ty: 2, - nm: "Слой 75", - refId: "image_60", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [248.815, 135.951, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 14, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 25, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 31, - s: [95, 95, 100], - }, - { t: 34, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 14, - op: 389, - st: 14, - bm: 0, - }, - { - ddd: 0, - ind: 23, - ty: 2, - nm: "Слой 76", - refId: "image_61", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [238.428, 135.755, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 13, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 24, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 30, - s: [95, 95, 100], - }, - { t: 33, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 13, - op: 388, - st: 13, - bm: 0, - }, - { - ddd: 0, - ind: 24, - ty: 2, - nm: "Слой 77", - refId: "image_62", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [227.65, 135.951, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 12, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 23, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 29, - s: [95, 95, 100], - }, - { t: 32, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 12, - op: 387, - st: 12, - bm: 0, - }, - { - ddd: 0, - ind: 25, - ty: 2, - nm: "Слой 78", - refId: "image_63", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [217.068, 135.951, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 11, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 22, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 28, - s: [95, 95, 100], - }, - { t: 31, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 11, - op: 386, - st: 11, - bm: 0, - }, - { - ddd: 0, - ind: 26, - ty: 2, - nm: "Слой 79", - refId: "image_64", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [206.485, 135.951, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 10, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 21, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 27, - s: [95, 95, 100], - }, - { t: 30, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 10, - op: 385, - st: 10, - bm: 0, - }, - { - ddd: 0, - ind: 27, - ty: 2, - nm: "Слой 80", - refId: "image_65", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [195.903, 135.951, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 9, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 20, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 26, - s: [95, 95, 100], - }, - { t: 29, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 9, - op: 384, - st: 9, - bm: 0, - }, - { - ddd: 0, - ind: 28, - ty: 2, - nm: "Слой 81", - refId: "image_66", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [185.32, 135.951, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 8, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 19, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 25, - s: [95, 95, 100], - }, - { t: 28, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 8, - op: 383, - st: 8, - bm: 0, - }, - { - ddd: 0, - ind: 29, - ty: 2, - nm: "Слой 82", - refId: "image_67", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [248.815, 126.81, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 7, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 18, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 24, - s: [95, 95, 100], - }, - { t: 27, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 7, - op: 382, - st: 7, - bm: 0, - }, - { - ddd: 0, - ind: 30, - ty: 2, - nm: "Слой 83", - refId: "image_68", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [238.232, 126.81, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 6, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 17, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 23, - s: [95, 95, 100], - }, - { t: 26, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 6, - op: 381, - st: 6, - bm: 0, - }, - { - ddd: 0, - ind: 31, - ty: 2, - nm: "Слой 84", - refId: "image_69", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [227.65, 126.81, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 5, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 16, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 22, - s: [95, 95, 100], - }, - { t: 25, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 5, - op: 380, - st: 5, - bm: 0, - }, - { - ddd: 0, - ind: 32, - ty: 2, - nm: "Слой 85", - refId: "image_70", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [217.068, 126.81, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 4, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 15, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 21, - s: [95, 95, 100], - }, - { t: 24, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 4, - op: 379, - st: 4, - bm: 0, - }, - { - ddd: 0, - ind: 33, - ty: 2, - nm: "Слой 86", - refId: "image_71", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [206.681, 126.616, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 3, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 14, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 20, - s: [95, 95, 100], - }, - { t: 23, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 3, - op: 378, - st: 3, - bm: 0, - }, - { - ddd: 0, - ind: 34, - ty: 2, - nm: "Слой 87", - refId: "image_72", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [195.903, 126.81, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 2, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 13, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 19, - s: [95, 95, 100], - }, - { t: 22, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 2, - op: 377, - st: 2, - bm: 0, - }, - { - ddd: 0, - ind: 35, - ty: 2, - nm: "Слой 88", - refId: "image_73", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [185.32, 126.81, 0], ix: 2 }, - a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 1, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 12, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 18, - s: [95, 95, 100], - }, - { t: 21, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 1, - op: 376, - st: 1, - bm: 0, - }, - { - ddd: 0, - ind: 36, - ty: 2, - nm: "Слой 89", - refId: "image_74", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [218.861, 135.604, 0], ix: 2 }, - a: { a: 0, k: [51.524, 46.154, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 11, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 17, - s: [95, 95, 100], - }, - { t: 20, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 0, - op: 375, - st: 0, - bm: 0, - }, - ], - }, - { - id: "comp_9", - layers: [ - { - ddd: 0, - ind: 1, - ty: 2, - nm: "Слой 91", - refId: "image_75", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 14, - s: [69.113, 354.962, 0], - to: [0, 5.667, 0], - ti: [0, -5.667, 0], - }, - { t: 22, s: [69.113, 388.962, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [42.145, 23.601, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 14, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 21, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 26.333, - s: [95, 95, 100], - }, - { t: 29, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 14, - op: 389, - st: 14, - bm: 0, - }, - { - ddd: 0, - ind: 2, - ty: 2, - nm: "Слой 92", - refId: "image_76", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 8, - s: [70.964, 381.229, 0], - to: [0, 5.667, 0], - ti: [0, -5.667, 0], - }, - { t: 16, s: [70.964, 415.229, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [37.84, 3.166, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 8, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 15, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 20.333, - s: [95, 95, 100], - }, - { t: 23, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 8, - op: 383, - st: 8, - bm: 0, - }, - { - ddd: 0, - ind: 3, - ty: 2, - nm: "Слой 93", - refId: "image_77", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 3, - s: [61.474, 407.496, 0], - to: [0, 5.667, 0], - ti: [0, -5.667, 0], - }, - { t: 11, s: [61.474, 441.496, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [42.12, 23.601, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 3, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 10, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 15.333, - s: [95, 95, 100], - }, - { t: 18, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 3, - op: 378, - st: 3, - bm: 0, - }, - { - ddd: 0, - ind: 4, - ty: 2, - nm: "Слой 94", - refId: "image_78", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.459, y: 1 }, - o: { x: 0.888, y: 0 }, - t: 0, - s: [65.925, 453.496, 0], - to: [0, 2.333, 0], - ti: [0, -2.333, 0], - }, - { t: 8, s: [65.925, 467.496, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [37.84, 3.166, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 7, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 12.333, - s: [95, 95, 100], - }, - { t: 15, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 0, - op: 375, - st: 0, - bm: 0, - }, - ], - }, - { - id: "comp_10", - layers: [ - { - ddd: 0, - ind: 1, - ty: 2, - nm: "тумбочка", - refId: "image_79", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.81], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [17], - }, - { - i: { x: [0.744], y: [1] }, - o: { x: [0.837], y: [0] }, - t: 7, - s: [17], - }, - { t: 17, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [539.627, 395, 0], - to: [-35.5, -6.5, 0], - ti: [0, -13.5, 0], - }, - { t: 10, s: [479.627, 470, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [109.25, 151.446, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [0, 0, 100], - }, - { t: 10, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 0, - op: 375, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 2, - ty: 0, - nm: "кофемашинка", - refId: "comp_11", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [250, 256, 0], ix: 2 }, - a: { a: 0, k: [250, 250, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - w: 500, - h: 500, - ip: 5, - op: 380, - st: 5, - bm: 0, - }, - ], - }, - { - id: "comp_11", - layers: [ - { - ddd: 0, - ind: 1, - ty: 2, - nm: "Слой 96", - parent: 5, - refId: "image_80", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [-0.08, 51.913, 0], ix: 2 }, - a: { a: 0, k: [3.713, 3.091, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 19, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 30, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 36, - s: [95, 95, 100], - }, - { t: 39, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 19, - op: 394, - st: 19, - bm: 0, - }, - { - ddd: 0, - ind: 2, - ty: 2, - nm: "Слой 97", - parent: 5, - refId: "image_81", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [22.962, 86.314, 0], ix: 2 }, - a: { a: 0, k: [21.947, 1.988, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 16, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 27, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 33, - s: [95, 95, 100], - }, - { t: 36, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 16, - op: 391, - st: 16, - bm: 0, - }, - { - ddd: 0, - ind: 3, - ty: 2, - nm: "Слой 98", - parent: 5, - refId: "image_82", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [21.788, 85.288, 0], ix: 2 }, - a: { a: 0, k: [16.364, 19.814, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 13, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 24, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 30, - s: [95, 95, 100], - }, - { t: 33, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 13, - op: 388, - st: 13, - bm: 0, - }, - { - ddd: 0, - ind: 4, - ty: 2, - nm: "Слой 99", - parent: 5, - refId: "image_83", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [21.72, 85.057, 0], ix: 2 }, - a: { a: 0, k: [18.432, 33.769, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 10, - s: [0, 0, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 21, - s: [110, 110, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 27, - s: [95, 95, 100], - }, - { t: 30, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 10, - op: 385, - st: 10, - bm: 0, - }, - { - ddd: 0, - ind: 5, - ty: 2, - nm: "Слой 100", - refId: "image_84", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.81], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 0, - s: [17], - }, - { - i: { x: [0.744], y: [1] }, - o: { x: [0.837], y: [0] }, - t: 7, - s: [17], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 17, - s: [0], - }, - { - i: { x: [0.833], y: [1] }, - o: { x: [0.167], y: [0] }, - t: 21, - s: [-6], - }, - { t: 26, s: [0] }, - ], - ix: 10, - }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 0, - s: [504.785, 273.958, 0], - to: [-4.667, 6.333, 0], - ti: [4.667, -6.333, 0], - }, - { - i: { x: 0.667, y: 0.667 }, - o: { x: 0.333, y: 0.333 }, - t: 10, - s: [476.785, 311.958, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 17, - s: [476.785, 311.958, 0], - to: [0, -1.333, 0], - ti: [0, 0, 0], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 21, - s: [476.785, 303.958, 0], - to: [0, 0, 0], - ti: [0, -1.333, 0], - }, - { t: 26, s: [476.785, 311.958, 0] }, - ], - ix: 2, - }, - a: { a: 0, k: [77, 99, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 0, - s: [0, 0, 100], - }, - { t: 10, s: [100, 100, 100] }, - ], - ix: 6, - }, - }, - ao: 0, - ip: 0, - op: 375, - st: 0, - bm: 0, - }, - ], - }, - ], - layers: [ - { - ddd: 0, - ind: 7, - ty: 0, - nm: "Третья иллюстрация", - refId: "comp_0", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [960, 540, 0], ix: 2 }, - a: { a: 0, k: [250, 250, 0], ix: 1 }, - s: { a: 0, k: [227.922, 227.922, 100], ix: 6 }, - }, - ao: 0, - w: 500, - h: 500, - ip: 16, - op: 303, - st: 16, - bm: 0, - }, - { - ddd: 0, - ind: 8, - ty: 1, - nm: "White Solid 1", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [960, 540, 0], ix: 2 }, - a: { a: 0, k: [960, 540, 0], ix: 1 }, - s: { a: 0, k: [295, 295, 100], ix: 6 }, - }, - ao: 0, - sw: 1920, - sh: 1080, - sc: "#ffffff", - ip: 0, - op: 1125, - st: 0, - bm: 0, - }, - ], - markers: [], -}; - -export const heartLottie = { - v: "5.4.4", - fr: 20, - ip: 0, - op: 28, - w: 48, - h: 48, - nm: "heart", - ddd: 0, - assets: [], - layers: [ - { - ddd: 0, - ind: 1, - ty: 4, - nm: "Bubble circle mask", - parent: 5, - td: 1, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [0, 0, 0], ix: 2 }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.615, 0.615, 0.615], y: [1, 1, 1] }, - o: { x: [0.17, 0.17, 0.17], y: [0.236, 0.236, 0.989] }, - t: 4, - s: [0, 0, 100], - e: [91.249, 91.249, 100], - }, - { t: 9 }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -13.255], - [13.255, 0], - [0, 13.255], - [-13.255, 0], - ], - o: [ - [0, 13.255], - [-13.255, 0], - [0, -13.255], - [13.255, 0], - ], - v: [ - [24, 0], - [0, 24], - [-24, 0], - [0, -24], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.792156922583, 0.156862745098, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 4, - op: 9, - st: -2, - bm: 0, - }, - { - ddd: 0, - ind: 2, - ty: 4, - nm: "Bubble circle", - parent: 5, - tt: 2, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [0, 0, 0], ix: 2 }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.571, 0.571, 0.571], y: [0.729, 0.729, -12.568] }, - o: { x: [0.191, 0.191, 0.191], y: [0.098, 0.098, 4.92] }, - t: 3, - s: [0, 0, 100], - e: [50, 50, 100], - }, - { - i: { x: [0.615, 0.615, 0.615], y: [1, 1, 1] }, - o: { x: [0.332, 0.332, 0.332], y: [0.382, 0.382, 15.757] }, - t: 5, - s: [50, 50, 100], - e: [91.249, 91.249, 100], - }, - { t: 8 }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -13.255], - [13.255, 0], - [0, 13.255], - [-13.255, 0], - ], - o: [ - [0, 13.255], - [-13.255, 0], - [0, -13.255], - [13.255, 0], - ], - v: [ - [24, 0], - [0, 24], - [-24, 0], - [0, -24], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.239215701234, 0, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 3, - op: 9, - st: -2, - bm: 0, - }, - { - ddd: 0, - ind: 3, - ty: 4, - nm: "Heart fill", - parent: 5, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [0, 0, 0], ix: 2 }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { a: 0, k: [100, 100, 100], ix: 6 }, - }, - ao: 0, - hasMask: true, - masksProperties: [ - { - inv: false, - mode: "a", - pt: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 5, - s: [ - { - i: [ - [0, -0.035], - [0.035, 0], - [0, 0.035], - [-0.035, 0], - ], - o: [ - [0, 0.035], - [-0.035, 0], - [0, -0.035], - [0.035, 0], - ], - v: [ - [0.563, 0.5], - [0.5, 0.563], - [0.438, 0.5], - [0.5, 0.438], - ], - c: true, - }, - ], - e: [ - { - i: [ - [0, -13.635], - [13.635, 0], - [0, 13.635], - [-13.635, 0], - ], - o: [ - [0, 13.635], - [-13.635, 0], - [0, -13.635], - [13.635, 0], - ], - v: [ - [25.188, 0.5], - [0.5, 25.188], - [-24.188, 0.5], - [0.5, -24.188], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 9, - s: [ - { - i: [ - [0, -13.635], - [13.635, 0], - [0, 13.635], - [-13.635, 0], - ], - o: [ - [0, 13.635], - [-13.635, 0], - [0, -13.635], - [13.635, 0], - ], - v: [ - [25.188, 0.5], - [0.5, 25.188], - [-24.188, 0.5], - [0.5, -24.188], - ], - c: true, - }, - ], - e: [ - { - i: [ - [0, -13.635], - [13.635, 0], - [0, 13.635], - [-13.635, 0], - ], - o: [ - [0, 13.635], - [-13.635, 0], - [0, -13.635], - [13.635, 0], - ], - v: [ - [25.188, 0.5], - [0.5, 25.188], - [-24.188, 0.5], - [0.5, -24.188], - ], - c: true, - }, - ], - }, - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 17, - s: [ - { - i: [ - [0, -13.635], - [13.635, 0], - [0, 13.635], - [-13.635, 0], - ], - o: [ - [0, 13.635], - [-13.635, 0], - [0, -13.635], - [13.635, 0], - ], - v: [ - [25.188, 0.5], - [0.5, 25.188], - [-24.188, 0.5], - [0.5, -24.188], - ], - c: true, - }, - ], - e: [ - { - i: [ - [0, -0.035], - [0.035, 0], - [0, 0.035], - [-0.035, 0], - ], - o: [ - [0, 0.035], - [-0.035, 0], - [0, -0.035], - [0.035, 0], - ], - v: [ - [0.563, 0.5], - [0.5, 0.563], - [0.438, 0.5], - [0.5, 0.438], - ], - c: true, - }, - ], - }, - { t: 25 }, - ], - ix: 1, - }, - o: { a: 0, k: 100, ix: 3 }, - x: { a: 0, k: 0, ix: 4 }, - nm: "Mask 1", - }, - ], - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [2.148, -3.235], - [4.176, 0], - [0, -6.627], - [0, 0], - [0, 12.045], - [6.627, 0], - ], - o: [ - [-4.176, 0], - [-2.149, -3.235], - [-6.627, 0], - [0, 11.943], - [0, 0], - [0, -6.627], - [0, 0], - ], - v: [ - [10, -18], - [0, -12.628], - [-10, -18], - [-22, -6], - [0, 18], - [22, -6], - [10, -18], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.239215686917, 0, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -13.255], - [13.255, 0], - [0, 13.255], - [-13.255, 0], - ], - o: [ - [0, 13.255], - [-13.255, 0], - [0, -13.255], - [13.255, 0], - ], - v: [ - [24, 0], - [0, 24], - [-24, 0], - [0, -24], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 2", - np: 1, - cix: 2, - bm: 0, - ix: 2, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 6, - op: 25, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 4, - ty: 4, - nm: "Heart empty 2", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [24, 24, 0], ix: 2 }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 3, - s: [100, 100, 100], - e: [50, 50, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 5, - s: [50, 50, 100], - e: [110.00000000000001, 110.00000000000001, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 7, - s: [110.00000000000001, 110.00000000000001, 100], - e: [100, 100, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 9, - s: [100, 100, 100], - e: [100, 100, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 17, - s: [100, 100, 100], - e: [70, 70, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 20, - s: [70, 70, 100], - e: [100, 100, 100], - }, - { t: 25 }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [2.148, -3.235], - [4.176, 0], - [0, -6.627], - [0, 0], - [0, 12.045], - [6.627, 0], - ], - o: [ - [-4.176, 0], - [-2.149, -3.235], - [-6.627, 0], - [0, 11.943], - [0, 0], - [0, -6.627], - [0, 0], - ], - v: [ - [10, -18], - [0, -12.628], - [-10, -18], - [-22, -6], - [0, 18], - [22, -6], - [10, -18], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.803921580315, 0.823529422283, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 0, - op: 9, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 5, - ty: 4, - nm: "Heart empty", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { a: 0, k: [24, 24, 0], ix: 2 }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 3, - s: [100, 100, 100], - e: [50, 50, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 5, - s: [50, 50, 100], - e: [110.00000000000001, 110.00000000000001, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 7, - s: [110.00000000000001, 110.00000000000001, 100], - e: [100, 100, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 9, - s: [100, 100, 100], - e: [100, 100, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 17, - s: [100, 100, 100], - e: [70, 70, 100], - }, - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 20, - s: [70, 70, 100], - e: [100, 100, 100], - }, - { t: 25 }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, 0], - [2.148, -3.235], - [4.176, 0], - [0, -6.627], - [0, 0], - [0, 12.045], - [6.627, 0], - ], - o: [ - [-4.176, 0], - [-2.149, -3.235], - [-6.627, 0], - [0, 11.943], - [0, 0], - [0, -6.627], - [0, 0], - ], - v: [ - [10, -18], - [0, -12.628], - [-10, -18], - [-22, -6], - [0, 18], - [22, -6], - [10, -18], - ], - c: false, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.803921580315, 0.823529422283, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 17, - op: 28, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 6, - ty: 4, - nm: "Rotation controll", - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { - a: 1, - k: [ - { - i: { x: [0.667], y: [1] }, - o: { x: [0.333], y: [0] }, - t: 5, - s: [0], - e: [8], - }, - { t: 11 }, - ], - ix: 10, - }, - p: { a: 0, k: [22, 26.896000000000004, 0], ix: 2 }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { a: 0, k: [100, -100, 100], ix: 6 }, - }, - ao: 0, - shapes: [], - ip: 0, - op: 28, - st: 0, - bm: 0, - }, - { - ddd: 0, - ind: 7, - ty: 4, - nm: "Circle 1", - parent: 6, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 3, - s: [-5, 7, 0], - e: [-20.964, 18.609, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { t: 8 }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 3, - s: [50, 50, 100], - e: [100, 100, 100], - }, - { t: 8 }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -1.105], - [1.105, 0], - [0, 1.105], - [-1.105, 0], - ], - o: [ - [0, 1.105], - [-1.105, 0], - [0, -1.105], - [1.105, 0], - ], - v: [ - [2, 0], - [0, 2], - [-2, 0], - [0, -2], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.258823543787, 0.647058844566, 0.960784316063, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 5, - op: 11, - st: 1, - bm: 0, - }, - { - ddd: 0, - ind: 8, - ty: 4, - nm: "Circle 2", - parent: 6, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 3, - s: [7, 7, 0], - e: [20.361, 23.089, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { t: 8 }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 3, - s: [50, 50, 100], - e: [100, 100, 100], - }, - { t: 8 }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -1.105], - [1.105, 0], - [0, 1.105], - [-1.105, 0], - ], - o: [ - [0, 1.105], - [-1.105, 0], - [0, -1.105], - [1.105, 0], - ], - v: [ - [2, 0], - [0, 2], - [-2, 0], - [0, -2], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.596078455448, 0, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 5, - op: 11, - st: 3, - bm: 0, - }, - { - ddd: 0, - ind: 9, - ty: 4, - nm: "Circle 3", - parent: 6, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 3, - s: [7, 3, 0], - e: [16.229, 25.965, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { t: 10 }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 3, - s: [50, 50, 100], - e: [100, 100, 100], - }, - { t: 10 }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -1.105], - [1.105, 0], - [0, 1.105], - [-1.105, 0], - ], - o: [ - [0, 1.105], - [-1.105, 0], - [0, -1.105], - [1.105, 0], - ], - v: [ - [2, 0], - [0, 2], - [-2, 0], - [0, -2], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.258823543787, 0.647058844566, 0.960784316063, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 5, - op: 11, - st: 1, - bm: 0, - }, - { - ddd: 0, - ind: 10, - ty: 4, - nm: "Circle 4", - parent: 6, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 3, - s: [7, -1, 0], - e: [17.875, -12.5, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { t: 8 }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 3, - s: [50, 50, 100], - e: [100, 100, 100], - }, - { t: 8 }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -1.105], - [1.105, 0], - [0, 1.105], - [-1.105, 0], - ], - o: [ - [0, 1.105], - [-1.105, 0], - [0, -1.105], - [1.105, 0], - ], - v: [ - [2, 0], - [0, 2], - [-2, 0], - [0, -2], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.239215686917, 0, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 5, - op: 11, - st: 1, - bm: 0, - }, - { - ddd: 0, - ind: 11, - ty: 4, - nm: "Circle 5", - parent: 6, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 3, - s: [3, 7, 0], - e: [9.843, 24.697, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { t: 8 }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 3, - s: [50, 50, 100], - e: [100, 100, 100], - }, - { t: 8 }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -1.105], - [1.105, 0], - [0, 1.105], - [-1.105, 0], - ], - o: [ - [0, 1.105], - [-1.105, 0], - [0, -1.105], - [1.105, 0], - ], - v: [ - [2, 0], - [0, 2], - [-2, 0], - [0, -2], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.239215686917, 0, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 5, - op: 11, - st: 1, - bm: 0, - }, - { - ddd: 0, - ind: 12, - ty: 4, - nm: "Circle 6", - parent: 6, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 3, - s: [-1, 7, 0], - e: [-7.306, 22.996, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { t: 10 }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 3, - s: [50, 50, 100], - e: [100, 100, 100], - }, - { t: 10 }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -1.105], - [1.105, 0], - [0, 1.105], - [-1.105, 0], - ], - o: [ - [0, 1.105], - [-1.105, 0], - [0, -1.105], - [1.105, 0], - ], - v: [ - [2, 0], - [0, 2], - [-2, 0], - [0, -2], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.250980407, 0.764705896378, 0.317647069693, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 5, - op: 11, - st: 3, - bm: 0, - }, - { - ddd: 0, - ind: 13, - ty: 4, - nm: "Circle 7", - parent: 6, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 3, - s: [-5, 3, 0], - e: [-19.866, 13.163, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { t: 10 }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 3, - s: [50, 50, 100], - e: [100, 100, 100], - }, - { t: 10 }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -1.105], - [1.105, 0], - [0, 1.105], - [-1.105, 0], - ], - o: [ - [0, 1.105], - [-1.105, 0], - [0, -1.105], - [1.105, 0], - ], - v: [ - [2, 0], - [0, 2], - [-2, 0], - [0, -2], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.250980407, 0.764705896378, 0.317647069693, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 5, - op: 11, - st: 3, - bm: 0, - }, - { - ddd: 0, - ind: 14, - ty: 4, - nm: "Circle 8", - parent: 6, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 3, - s: [3, 3, 0], - e: [22.065, -4.42, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { t: 10 }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 3, - s: [50, 50, 100], - e: [100, 100, 100], - }, - { t: 10 }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -1.105], - [1.105, 0], - [0, 1.105], - [-1.105, 0], - ], - o: [ - [0, 1.105], - [-1.105, 0], - [0, -1.105], - [1.105, 0], - ], - v: [ - [2, 0], - [0, 2], - [-2, 0], - [0, -2], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.250980407, 0.764705896378, 0.317647069693, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 5, - op: 11, - st: 3, - bm: 0, - }, - { - ddd: 0, - ind: 15, - ty: 4, - nm: "Circle 9", - parent: 6, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 3, - s: [-1, 3, 0], - e: [-15.125, -10.125, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { t: 10 }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 3, - s: [50, 50, 100], - e: [100, 100, 100], - }, - { t: 10 }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -1.105], - [1.105, 0], - [0, 1.105], - [-1.105, 0], - ], - o: [ - [0, 1.105], - [-1.105, 0], - [0, -1.105], - [1.105, 0], - ], - v: [ - [2, 0], - [0, 2], - [-2, 0], - [0, -2], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.596078455448, 0, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 5, - op: 11, - st: 3, - bm: 0, - }, - { - ddd: 0, - ind: 16, - ty: 4, - nm: "Circle 10", - parent: 6, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 3, - s: [-5, -1, 0], - e: [-16.504, -17.415, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { t: 8 }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 3, - s: [50, 50, 100], - e: [100, 100, 100], - }, - { t: 8 }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -1.105], - [1.105, 0], - [0, 1.105], - [-1.105, 0], - ], - o: [ - [0, 1.105], - [-1.105, 0], - [0, -1.105], - [1.105, 0], - ], - v: [ - [2, 0], - [0, 2], - [-2, 0], - [0, -2], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.239215686917, 0, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 5, - op: 11, - st: 1, - bm: 0, - }, - { - ddd: 0, - ind: 17, - ty: 4, - nm: "Circle 11", - parent: 6, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 3, - s: [3, -1, 0], - e: [12.082, -13.03, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { t: 10 }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 3, - s: [50, 50, 100], - e: [100, 100, 100], - }, - { t: 10 }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -1.105], - [1.105, 0], - [0, 1.105], - [-1.105, 0], - ], - o: [ - [0, 1.105], - [-1.105, 0], - [0, -1.105], - [1.105, 0], - ], - v: [ - [2, 0], - [0, 2], - [-2, 0], - [0, -2], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { a: 0, k: [1, 0.596078455448, 0, 1], ix: 4 }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 5, - op: 11, - st: 1, - bm: 0, - }, - { - ddd: 0, - ind: 18, - ty: 4, - nm: "Circle 12", - parent: 6, - sr: 1, - ks: { - o: { a: 0, k: 100, ix: 11 }, - r: { a: 0, k: 0, ix: 10 }, - p: { - a: 1, - k: [ - { - i: { x: 0.667, y: 1 }, - o: { x: 0.333, y: 0 }, - t: 3, - s: [-1, -1, 0], - e: [-7.311, -16.725, 0], - to: [0, 0, 0], - ti: [0, 0, 0], - }, - { t: 10 }, - ], - ix: 2, - }, - a: { a: 0, k: [0, 0, 0], ix: 1 }, - s: { - a: 1, - k: [ - { - i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, - o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, - t: 3, - s: [50, 50, 100], - e: [100, 100, 100], - }, - { t: 10 }, - ], - ix: 6, - }, - }, - ao: 0, - shapes: [ - { - ty: "gr", - it: [ - { - ind: 0, - ty: "sh", - ix: 1, - ks: { - a: 0, - k: { - i: [ - [0, -1.105], - [1.105, 0], - [0, 1.105], - [-1.105, 0], - ], - o: [ - [0, 1.105], - [-1.105, 0], - [0, -1.105], - [1.105, 0], - ], - v: [ - [2, 0], - [0, 2], - [-2, 0], - [0, -2], - ], - c: true, - }, - ix: 2, - }, - nm: "Path 1", - mn: "ADBE Vector Shape - Group", - hd: false, - }, - { - ty: "fl", - c: { - a: 0, - k: [0.258823543787, 0.647058844566, 0.960784316063, 1], - ix: 4, - }, - o: { a: 0, k: 100, ix: 5 }, - r: 1, - bm: 0, - nm: "Fill 1", - mn: "ADBE Vector Graphic - Fill", - hd: false, - }, - { - ty: "tr", - p: { a: 0, k: [0, 0], ix: 2 }, - a: { a: 0, k: [0, 0], ix: 1 }, - s: { a: 0, k: [100, 100], ix: 3 }, - r: { a: 0, k: 0, ix: 6 }, - o: { a: 0, k: 100, ix: 7 }, - sk: { a: 0, k: 0, ix: 4 }, - sa: { a: 0, k: 0, ix: 5 }, - nm: "Transform", - }, - ], - nm: "Group 1", - np: 2, - cix: 2, - bm: 0, - ix: 1, - mn: "ADBE Vector Group", - hd: false, - }, - ], - ip: 5, - op: 11, - st: 1, - bm: 0, - }, - ], - markers: [], -}; +export const column1Lottie = { + v: "5.7.3", + fr: 25, + ip: 0, + op: 151, + w: 500, + h: 500, + nm: "doc", + ddd: 0, + assets: [ + { + id: "comp_0", + layers: [ + { + ddd: 0, + ind: 1, + ty: 4, + nm: "OBJECTS 2", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.27, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [417.635, 485.668, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.27, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 75, + s: [379.635, 485.668, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { t: 150, s: [417.635, 485.668, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [417.635, 485.668, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ty: "gr", + it: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.256, 0], + [0.195, 0.195], + [0, 0], + [-0.391, 0.391], + [-0.391, -0.39], + [0, 0], + [0.391, -0.391], + ], + o: [ + [-0.256, 0], + [0, 0], + [-0.391, -0.391], + [0.391, -0.391], + [0, 0], + [0.391, 0.391], + [-0.195, 0.195], + ], + v: [ + [3.138, 4.138], + [2.431, 3.845], + [-3.845, -2.431], + [-3.845, -3.845], + [-2.43, -3.845], + [3.845, 2.431], + [3.845, 3.845], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [504.072, 492.154], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [3.259, 0], + [0, -3.259], + [-3.259, 0], + [-1.116, 1.116], + [0, 1.579], + ], + o: [ + [-3.259, 0], + [0, 3.259], + [1.579, 0], + [1.116, -1.116], + [0, -3.259], + ], + v: [ + [0, -5.911], + [-5.911, 0], + [0, 5.911], + [4.179, 4.18], + [5.911, 0], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [2.113, 0], + [0, 4.362], + [-4.362, 0], + [0, -4.362], + [1.494, -1.494], + ], + o: [ + [-4.362, 0], + [0, -4.362], + [4.362, 0], + [0, 2.113], + [-1.494, 1.494], + ], + v: [ + [0, 7.911], + [-7.911, 0], + [0, -7.911], + [7.911, 0], + [5.594, 5.594], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [496.081, 484.095], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 3, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [496.081, 484.095], ix: 2 }, + a: { a: 0, k: [496.081, 484.095], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [9.988, 0], + [0, 0], + [0, 0], + [0, 0], + [0, -9.988], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [9.988, 0], + [0, 0], + [0, 9.988], + ], + v: [ + [4.928, 18.085], + [-22.879, 18.085], + [-23.014, -18.085], + [4.928, -18.085], + [23.014, 0], + [23.014, 0], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.349019616842, 0.603921592236, 0.949019610882, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [498.19, 485.668], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [9.988, 0], + [0, 0], + [0, 9.988], + [0, 0], + [-9.988, 0], + [0, 0], + [0, -9.988], + [0, 0], + ], + o: [ + [0, 0], + [-9.988, 0], + [0, 0], + [0, -9.988], + [0, 0], + [9.988, 0], + [0, 0], + [0, 9.988], + ], + v: [ + [85.483, 18.085], + [-85.483, 18.085], + [-103.568, 0], + [-103.568, 0], + [-85.483, -18.085], + [85.483, -18.085], + [103.568, 0], + [103.568, 0], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [417.635, 485.668], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 2, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [417.635, 485.668], ix: 2 }, + a: { a: 0, k: [417.635, 485.668], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 176, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 2, + ty: 4, + nm: "OBJECTS 3", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 1, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 6, + s: [-21], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 13, + s: [5.875], + }, + { + i: { x: [0.294], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 21, + s: [-3.452], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 34, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 75, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 80, + s: [-21], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 87, + s: [5.875], + }, + { + i: { x: [0.294], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 95, + s: [-3.452], + }, + { t: 108, s: [0] }, + ], + ix: 10, + }, + p: { a: 0, k: [432.18, 579.061, 0], ix: 2 }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 1, + s: [100, 100, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 5, + s: [42, 42, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 12, + s: [107, 107, 100], + }, + { + i: { x: [0.273, 0.273, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 19, + s: [95.222, 95.222, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 34, + s: [100, 100, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 75, + s: [100, 100, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 79, + s: [42, 42, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 86, + s: [107, 107, 100], + }, + { + i: { x: [0.273, 0.273, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 93, + s: [95.222, 95.222, 100], + }, + { t: 108, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, -0.553], + [0.552, 0], + [0, 0], + [-0.011, 1.065], + ], + o: [ + [0, 0], + [0.552, 0], + [0, 0.553], + [0, 0], + [0, 0], + [0.011, -1.066], + ], + v: [ + [-11.536, 52.534], + [17.428, 52.534], + [18.428, 53.534], + [17.428, 54.534], + [-11.536, 54.534], + [-12.669, 53.624], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, -0.553], + [0.552, 0], + [0, 0], + [-0.011, 1.065], + ], + o: [ + [0, 0], + [0.552, 0], + [0, 0.553], + [0, 0], + [0, 0], + [0.011, -1.066], + ], + v: [ + [-11.544, 60.347], + [36.484, 60.317], + [37.484, 61.317], + [36.484, 62.317], + [-11.544, 62.347], + [-12.676, 61.437], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, -0.553], + [0.552, 0], + [0, 0], + [-0.011, 1.065], + ], + o: [ + [0, 0], + [0.552, 0], + [0, 0.553], + [0, 0], + [0, 0], + [0.011, -1.066], + ], + v: [ + [-11.544, 68.347], + [36.484, 68.317], + [37.484, 69.317], + [36.484, 70.317], + [-11.544, 70.347], + [-12.676, 69.437], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 4", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 3, + ty: "sh", + ix: 4, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, -0.553], + [0.552, 0], + [0, 0], + [-0.011, 1.065], + ], + o: [ + [0, 0], + [0.552, 0], + [0, 0.553], + [0, 0], + [0, 0], + [0.011, -1.066], + ], + v: [ + [-11.544, 76.597], + [36.484, 76.567], + [37.484, 77.567], + [36.484, 78.567], + [-11.544, 78.597], + [-12.676, 77.687], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 5", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 4, + ty: "sh", + ix: 5, + ks: { + a: 0, + k: { + i: [ + [0.552, 0], + [0, 0.553], + [0, 0], + [-3.8, 0], + [0, 0], + [0, -0.553], + [0.552, 0], + [0, 0], + [0, -2.698], + [0, 0], + ], + o: [ + [-0.552, 0], + [0, 0], + [0, -3.801], + [0, 0], + [0.552, 0], + [0, 0.553], + [0, 0], + [-2.697, 0], + [0, 0], + [0, 0.553], + ], + v: [ + [-17.428, 16.216], + [-18.428, 15.216], + [-18.428, -9.323], + [-11.536, -16.216], + [17.428, -16.216], + [18.428, -15.216], + [17.428, -14.216], + [-11.536, -14.216], + [-16.428, -9.323], + [-16.428, 15.216], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [-67.5, -42.5], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 6, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [4.801, 0], + [0, 0], + [0, 5.956], + [0, 0], + [5.155, 0], + [0, 0], + [0, -5.977], + [0, 0], + [0, 0], + [0, 0], + [-4.801, 0], + [0, 0], + [0, 5.567], + [0, 0], + ], + o: [ + [0, 0], + [-5.136, 0], + [0, 0], + [0, -5.977], + [0, 0], + [-5.155, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 5.567], + [0, 0], + [4.801, 0], + [0, 0], + [0, -5.567], + ], + v: [ + [63.279, -37.939], + [-10.108, -37.939], + [-19.408, -48.723], + [-19.408, -55.795], + [-28.742, -66.618], + [-62.639, -66.618], + [-71.972, -55.795], + [-71.972, -27.859], + [-71.972, 4.259], + [-71.972, 56.537], + [-63.279, 66.618], + [63.279, 66.618], + [71.972, 56.537], + [71.972, -27.859], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.960784375668, 0.623529434204, 0.674509823322, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [-20, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [5.567, 0], + [0, 0], + [0, 5.956], + [0, 0], + [5.977, 0], + [0, 0], + [0, -5.977], + [0, 0], + [0, 0], + [0, 0], + [-5.567, 0], + [0, 0], + [0, 5.567], + [0, 0], + ], + o: [ + [0, 0], + [-5.956, 0], + [0, 0], + [0, -5.977], + [0, 0], + [-5.977, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 5.567], + [0, 0], + [5.567, 0], + [0, 0], + [0, -5.567], + ], + v: [ + [73.378, -37.939], + [-11.722, -37.939], + [-22.506, -48.723], + [-22.506, -55.795], + [-33.329, -66.618], + [-72.635, -66.618], + [-83.458, -55.795], + [-83.458, -27.858], + [-83.458, 4.259], + [-83.458, 56.537], + [-73.377, 66.618], + [73.378, 66.618], + [83.458, 56.537], + [83.458, -27.858], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.956862807274, 0.572549045086, 0.627451002598, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [-9, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 2, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [5.567, 0], + [0, 0], + [0, 5.956], + [0, 0], + [5.977, 0], + [0, 0], + [0, -5.977], + [0, 0], + [0, 0], + [0, 0], + [-5.567, 0], + [0, 0], + [0, 5.567], + [0, 0], + ], + o: [ + [0, 0], + [-5.956, 0], + [0, 0], + [0, -5.977], + [0, 0], + [-5.977, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 5.567], + [0, 0], + [5.567, 0], + [0, 0], + [0, -5.567], + ], + v: [ + [73.378, -37.939], + [-11.722, -37.939], + [-22.506, -48.723], + [-22.506, -55.795], + [-33.329, -66.618], + [-72.635, -66.618], + [-83.458, -55.795], + [-83.458, -27.859], + [-83.458, 4.259], + [-83.458, 56.537], + [-73.378, 66.618], + [73.378, 66.618], + [83.458, 56.537], + [83.458, -27.859], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.949019610882, 0.51372551918, 0.57647061348, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 4, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 176, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 3, + ty: 4, + nm: "OBJECTS 11", + parent: 4, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [29.68, 88.318, 0], ix: 2 }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 1, + k: [ + { + i: { x: 0, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [ + { + i: [ + [10.91, -0.656], + [0, 0], + [0, 0], + [0, 12.841], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [11.432, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 12.418], + ], + v: [ + [-60.014, 16.006], + [-60.014, 16.041], + [39.314, 16.041], + [60.014, -7.21], + [60.014, -16.041], + [-40.437, -16.041], + [-40.437, -7.21], + ], + c: true, + }, + ], + }, + { + i: { x: 0, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 75, + s: [ + { + i: [ + [10.91, -0.656], + [0, 0], + [0, 0], + [0, 12.841], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [11.432, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 12.418], + ], + v: [ + [-60.014, 16.006], + [-60.014, 16.041], + [39.314, 16.041], + [59.764, -3.46], + [59.804, -3.791], + [-40.648, -3.791], + [-40.687, -3.46], + ], + c: true, + }, + ], + }, + { + t: 150, + s: [ + { + i: [ + [10.91, -0.656], + [0, 0], + [0, 0], + [0, 12.841], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [11.432, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 12.418], + ], + v: [ + [-60.014, 16.006], + [-60.014, 16.041], + [39.314, 16.041], + [60.014, -7.21], + [60.014, -16.041], + [-40.437, -16.041], + [-40.437, -7.21], + ], + c: true, + }, + ], + }, + ], + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.345098048449, 0.35686275363, 0.686274528503, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 1, + k: [ + { + i: { x: 0, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [ + { + i: [ + [12.254, -0.656], + [0, 0], + [0, 0], + [0, 12.841], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [12.841, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 12.418], + ], + v: [ + [-74.41, 16.006], + [-74.41, 16.041], + [37.159, 16.041], + [60.41, -7.21], + [60.41, -16.041], + [-52.421, -16.041], + [-52.421, -7.21], + ], + c: true, + }, + ], + }, + { + i: { x: 0, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 75, + s: [ + { + i: [ + [12.254, -0.656], + [0, 0], + [0, 0], + [0, 12.841], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [12.841, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 12.418], + ], + v: [ + [-74.41, 16.006], + [-74.41, 16.041], + [37.159, 16.041], + [60.16, -3.46], + [60.199, -3.791], + [-52.631, -3.791], + [-52.671, -3.46], + ], + c: true, + }, + ], + }, + { + t: 150, + s: [ + { + i: [ + [12.254, -0.656], + [0, 0], + [0, 0], + [0, 12.841], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [12.841, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 12.418], + ], + v: [ + [-74.41, 16.006], + [-74.41, 16.041], + [37.159, 16.041], + [60.41, -7.21], + [60.41, -16.041], + [-52.421, -16.041], + [-52.421, -7.21], + ], + c: true, + }, + ], + }, + ], + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.380392193794, 0.380392193794, 0.709803938866, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 2", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [7, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 4, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 176, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 4, + ty: 4, + nm: "OBJECTS 8", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [465.221, 449.154, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 75, + s: [465.221, 436.154, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { t: 150, s: [465.221, 449.154, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-0.552, 0], + [0, 0], + ], + o: [ + [0, 0], + [0.553, 0], + ], + v: [ + [-40.11, -1], + [40.11, -1], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [-0.552, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-40.094, 16.875], + [-11.731, 16.875], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0.553, 0], + ], + v: [ + [4.019, 16.875], + [40.125, 16.875], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 4", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 3, + ty: "sh", + ix: 4, + ks: { + a: 0, + k: { + i: [ + [-0.552, 0], + [0, 0], + ], + o: [ + [0, 0], + [0.553, 0], + ], + v: [ + [-40.064, 33.75], + [40.156, 33.75], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 4, + ty: "sh", + ix: 5, + ks: { + a: 0, + k: { + i: [ + [-0.552, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-40.002, 48.125], + [13.269, 48.125], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 5", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 5, + ty: "sh", + ix: 6, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0.553, 0], + ], + v: [ + [23.144, 48.125], + [40.217, 48.125], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 6", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 6, + ty: "sh", + ix: 7, + ks: { + a: 0, + k: { + i: [ + [-0.552, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-40.064, 65], + [-24.856, 65], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 7", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 7, + ty: "sh", + ix: 8, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0.553, 0], + ], + v: [ + [-17.231, 65], + [40.156, 65], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 8", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 8, + ty: "sh", + ix: 9, + ks: { + a: 0, + k: { + i: [ + [-0.552, 0], + [0, 0], + ], + o: [ + [0, 0], + [0.553, 0], + ], + v: [ + [-40.127, 84.25], + [40.092, 84.25], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 9", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 9, + ty: "sh", + ix: 10, + ks: { + a: 0, + k: { + i: [ + [-0.552, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-40.129, 101], + [-0.481, 101], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 10", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 10, + ty: "sh", + ix: 11, + ks: { + a: 0, + k: { + i: [ + [-0.552, 0], + [0, 0], + ], + o: [ + [0, 0], + [0.553, 0], + ], + v: [ + [-40.164, 117.875], + [40.055, 117.875], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 11", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "tm", + s: { a: 0, k: 0, ix: 1 }, + e: { a: 0, k: 80, ix: 2 }, + o: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 0, + s: [117], + }, + { t: 150, s: [1197] }, + ], + ix: 3, + }, + m: 2, + ix: 12, + nm: "Trim Paths 1", + mn: "ADBE Vector Filter - Trim", + hd: false, + }, + { + ty: "st", + c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 2.5, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { + a: 1, + k: [ + { + i: { x: 0, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [7.481, -64.58], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 75, + s: [7.481, -77.58], + to: [0, 0], + ti: [0, 0], + }, + { t: 150, s: [7.481, -64.58] }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 13", + np: 13, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-0.609, 0], + [0, 0], + [0, -1.09], + [0, 0], + [8.168, 0], + [0, 0], + [0, 16.931], + [0, 0], + ], + o: [ + [0, 0], + [1.09, 0], + [0, 0], + [0, 8.168], + [0, 0], + [-16.93, 0], + [0, 0], + [0, -0.609], + ], + v: [ + [-62.181, -104.359], + [61.31, -104.359], + [63.283, -102.385], + [63.283, 89.57], + [48.494, 104.359], + [-32.628, 104.359], + [-63.283, 73.703], + [-63.283, -103.256], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.57647061348, 0.588235318661, 0.811764776707, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [6, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-3.649, 0], + [0, 0], + [0, -2.571], + [0, 0], + [8.869, 0], + [0, 0], + [0, 18.899], + [0, 0], + ], + o: [ + [0, 0], + [2.571, 0], + [0, 0], + [0, 8.869], + [0, 0], + [-18.899, 0], + [0, 0], + [0, -3.649], + ], + v: [ + [-62.845, -104.359], + [64.797, -104.359], + [69.452, -99.704], + [69.452, 88.3], + [53.394, 104.359], + [-35.233, 104.359], + [-69.452, 70.139], + [-69.452, -97.751], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.780392229557, 0.780392229557, 0.937254965305, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 176, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 5, + ty: 4, + nm: "OBJECTS 15", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.33], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.33], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 51, + s: [-11], + }, + { t: 133, s: [0] }, + ], + ix: 10, + }, + p: { a: 0, k: [594.07, 517.85, 0], ix: 2 }, + a: { a: 0, k: [594.07, 517.85, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.236, 0], + [0.031, 0.006], + [0, 0], + [-0.05, 0.272], + [-0.275, -0.054], + [0, 0], + [0.05, -0.272], + ], + o: [ + [-0.03, 0], + [0, 0], + [-0.271, -0.05], + [0.051, -0.272], + [0, 0], + [0.271, 0.05], + [-0.045, 0.241], + ], + v: [ + [9.996, 2.343], + [9.904, 2.335], + [-10.085, -1.35], + [-10.487, -1.932], + [-9.904, -2.333], + [10.085, 1.351], + [10.487, 1.934], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [563.027, 439.315], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [3.061, 0], + [0.395, 0.073], + [0, 0], + [-0.746, 4.051], + [0, 0], + [-0.809, -0.152], + [0.149, -0.815], + [0, 0], + [-2.424, -0.447], + [0, 0], + [-0.347, 1.885], + [0, 0], + [1.944, 0.358], + [0, 0], + [0.382, -2.064], + [0, 0], + [0.805, 0.15], + [-0.15, 0.814], + [0, 0], + [-3.689, -0.682], + [0, 0], + [0.657, -3.571], + [0, 0], + ], + o: [ + [-0.388, 0], + [0, 0], + [-4.05, -0.747], + [0, 0], + [0.15, -0.815], + [0.815, 0.15], + [0, 0], + [-0.447, 2.424], + [0, 0], + [1.885, 0.35], + [0, 0], + [0.358, -1.944], + [0, 0], + [-2.072, -0.381], + [0, 0], + [-0.151, 0.816], + [-0.814, -0.15], + [0, 0], + [0.683, -3.692], + [0, 0], + [3.571, 0.658], + [0, 0], + [-0.575, 3.116], + ], + v: [ + [-1.645, 19.875], + [-2.821, 19.767], + [-3.584, 19.626], + [-9.576, 10.925], + [-7.652, 0.487], + [-5.905, -0.716], + [-4.701, 1.031], + [-6.625, 11.469], + [-3.04, 16.676], + [-2.277, 16.816], + [1.769, 14.028], + [6.64, -12.394], + [3.764, -16.57], + [2.459, -16.811], + [-1.976, -13.756], + [-2.096, -13.105], + [-3.843, -11.901], + [-5.047, -13.648], + [-4.927, -14.3], + [3.002, -19.761], + [4.307, -19.52], + [9.591, -11.85], + [4.72, 14.572], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.243137255311, 0.278431385756, 0.607843160629, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [569.461, 443.971], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [-1.057, -0.195], + [0, 0], + [0.188, -1.018], + ], + o: [ + [0, 0], + [0, 0], + [0.195, -1.057], + [0, 0], + [1.018, 0.188], + [0, 0], + ], + v: [ + [27.043, 8.481], + [-28.048, -1.674], + [-27.087, -6.887], + [-24.821, -8.448], + [26.512, 1.014], + [28.017, 3.199], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.92549020052, 0.945098042488, 0.96862745285, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [580.45, 438.35], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 7, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 2, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [1.089, 0.201], + [0, 0], + [-0.201, 1.089], + [0, 0], + [-1.089, -0.201], + [0, 0], + [0.201, -1.089], + [0, 0], + ], + o: [ + [0, 0], + [-1.089, -0.201], + [0, 0], + [0.201, -1.089], + [0, 0], + [1.089, 0.201], + [0, 0], + [-0.201, 1.089], + ], + v: [ + [20.176, 33.999], + [-30.972, 24.571], + [-32.58, 22.237], + [-22.511, -32.391], + [-20.176, -33.999], + [30.972, -24.571], + [32.58, -22.237], + [22.511, 32.391], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.349019616842, 0.603921592236, 0.949019610882, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [575.863, 463.912], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 2, + cix: 2, + bm: 0, + ix: 4, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [1.089, 0.201], + [0, 0], + [-0.201, 1.089], + [0, 0], + [-1.089, -0.201], + [0, 0], + [0.201, -1.089], + [0, 0], + ], + o: [ + [0, 0], + [-1.089, -0.201], + [0, 0], + [0.201, -1.089], + [0, 0], + [1.089, 0.201], + [0, 0], + [-0.201, 1.089], + ], + v: [ + [21.145, 35.766], + [-32.507, 25.876], + [-34.115, 23.542], + [-23.479, -34.158], + [-21.145, -35.766], + [32.508, -25.876], + [34.115, -23.542], + [23.479, 34.158], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.243137255311, 0.278431385756, 0.607843160629, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [576.866, 465.495], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 14, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 5", + np: 2, + cix: 2, + bm: 0, + ix: 5, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [565.616, 432.495], ix: 2 }, + a: { a: 0, k: [565.616, 432.495], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 0, + s: [0], + }, + { t: 5, s: [0] }, + ], + ix: 6, + }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 5, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-0.55, -0.099], + [0, 0], + ], + o: [ + [0, 0], + [0.543, 0.1], + ], + v: [ + [-15.476, -3.869], + [15.839, 1.902], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [-0.55, -0.099], + [0, 0], + ], + o: [ + [0, 0], + [0.543, 0.1], + ], + v: [ + [-17.476, 7.068], + [13.839, 12.84], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [-0.55, -0.099], + [0, 0], + ], + o: [ + [0, 0], + [0.543, 0.1], + ], + v: [ + [-19.476, 18.006], + [11.839, 23.777], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "tm", + s: { + a: 1, + k: [ + { + i: { x: [0.43], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [1], y: [0] }, + t: 75, + s: [0], + }, + { t: 150, s: [100] }, + ], + ix: 1, + }, + e: { + a: 1, + k: [ + { + i: { x: [0.43], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [1], y: [0] }, + t: 75, + s: [100], + }, + { t: 150, s: [100] }, + ], + ix: 2, + }, + o: { a: 0, k: 0, ix: 3 }, + m: 2, + ix: 4, + nm: "Trim Paths 1", + mn: "ADBE Vector Filter - Trim", + hd: false, + }, + { + ty: "st", + c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 2.5, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [634.648, 467.253], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 9", + np: 5, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-1.672, -0.302], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-93.37, 43.771], + [-46.31, 52.445], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [-1.672, -0.302], + [0, 0], + ], + o: [ + [0, 0], + [1.651, 0.304], + ], + v: [ + [-96.245, 59.146], + [-1.049, 76.692], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 4", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [-1.672, -0.302], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [-99.45, 77.771], + [-55.22, 85.923], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 3, + ty: "sh", + ix: 4, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [1.651, 0.304], + ], + v: [ + [-46.479, 87.534], + [-4.254, 95.317], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 5", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 4, + ty: "sh", + ix: 5, + ks: { + a: 0, + k: { + i: [ + [-1.672, -0.302], + [0, 0], + ], + o: [ + [0, 0], + [1.651, 0.304], + ], + v: [ + [-102.78, 96.271], + [-7.584, 113.817], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 2.5, ix: 5 }, + lc: 2, + lj: 2, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tm", + s: { + a: 1, + k: [ + { + i: { x: [0.43], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [1], y: [0] }, + t: 75, + s: [0], + }, + { t: 150, s: [100] }, + ], + ix: 1, + }, + e: { + a: 1, + k: [ + { + i: { x: [0.43], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [1], y: [0] }, + t: 75, + s: [100], + }, + { t: 150, s: [100] }, + ], + ix: 2, + }, + o: { a: 0, k: 0, ix: 3 }, + m: 2, + ix: 7, + nm: "Trim Paths 1", + mn: "ADBE Vector Filter - Trim", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [634.648, 467.253], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 5", + np: 7, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [1.005, 0.185], + [0, 0], + [-0.185, 1.005], + [0, 0], + [-1.005, -0.185], + [0, 0], + [0.185, -1.005], + [0, 0], + ], + o: [ + [0, 0], + [-1.005, -0.185], + [0, 0], + [0.185, -1.005], + [0, 0], + [1.005, 0.185], + [0, 0], + [-0.185, 1.005], + ], + v: [ + [46.514, 98.515], + [-78.583, 75.456], + [-80.068, 73.3], + [-48.671, -97.03], + [-46.514, -98.515], + [78.583, -75.456], + [80.068, -73.3], + [48.671, 97.03], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.96862745285, 0.662745118141, 0.705882370472, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [589.386, 525.766], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 39, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 6", + np: 2, + cix: 2, + bm: 0, + ix: 4, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [48.335, 98.851], + [-80.403, 75.12], + [-48.335, -98.851], + [80.403, -75.12], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [589.386, 525.766], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 7", + np: 2, + cix: 2, + bm: 0, + ix: 5, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [1.006, 0.185], + [0, 0], + [-0.185, 1.006], + [0, 0], + [-1.005, -0.185], + [0, 0], + [0.185, -1.005], + [0, 0], + ], + o: [ + [0, 0], + [-1.005, -0.185], + [0, 0], + [0.185, -1.005], + [0, 0], + [1.005, 0.185], + [0, 0], + [-0.185, 1.005], + ], + v: [ + [46.514, 98.515], + [-78.583, 75.456], + [-80.068, 73.3], + [-48.671, -97.03], + [-46.514, -98.515], + [78.583, -75.456], + [80.068, -73.3], + [48.671, 97.03], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.243137255311, 0.278431385756, 0.607843160629, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [592.06, 530.557], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 14, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 8", + np: 2, + cix: 2, + bm: 0, + ix: 6, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 176, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 6, + ty: 4, + nm: "OBJECTS 14", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.33], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 11, + s: [-8], + }, + { + i: { x: [0.33], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 83, + s: [1], + }, + { t: 148, s: [-8] }, + ], + ix: 10, + }, + p: { a: 0, k: [598.964, 525.362, 0], ix: 2 }, + a: { a: 0, k: [598.964, 525.362, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.88, 0.521], + [0, 0], + [-0.521, 0.88], + [0, 0], + [-0.88, -0.521], + [0, 0], + [0.521, -0.88], + [0, 0], + ], + o: [ + [0, 0], + [-0.879, -0.521], + [0, 0], + [0.521, -0.88], + [0, 0], + [0.88, 0.521], + [0, 0], + [-0.521, 0.88], + ], + v: [ + [9.601, 108.52], + [-99.818, 43.647], + [-100.467, 41.111], + [-12.137, -107.872], + [-9.601, -108.52], + [99.818, -43.647], + [100.467, -41.111], + [12.137, 107.872], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.96862745285, 0.662745118141, 0.705882370472, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [597.543, 522.377], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.88, 0.521], + [0, 0], + [-0.521, 0.88], + [0, 0], + [-0.88, -0.521], + [0, 0], + [0.521, -0.88], + [0, 0], + ], + o: [ + [0, 0], + [-0.879, -0.521], + [0, 0], + [0.521, -0.88], + [0, 0], + [0.88, 0.521], + [0, 0], + [-0.521, 0.88], + ], + v: [ + [9.601, 108.52], + [-99.818, 43.647], + [-100.467, 41.111], + [-12.137, -107.872], + [-9.601, -108.52], + [99.818, -43.647], + [100.467, -41.111], + [12.137, 107.872], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.243137255311, 0.278431385756, 0.607843160629, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [600.385, 528.346], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 14, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 176, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 7, + ty: 4, + nm: "OBJECTS 16", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [626.887, 381.595, 0], ix: 2 }, + a: { a: 0, k: [626.887, 381.595, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [1.639, 0], + [0, -1.639], + [-1.639, 0], + [0, 1.639], + ], + o: [ + [-1.639, 0], + [0, 1.639], + [1.639, 0], + [0, -1.639], + ], + v: [ + [0, -2.972], + [-2.972, 0], + [0, 2.972], + [2.972, 0], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [1.639, 0], + [0, -1.639], + [-1.639, 0], + [0, 1.639], + ], + o: [ + [-1.639, 0], + [0, 1.639], + [1.639, 0], + [0, -1.639], + ], + v: [ + [15.275, -2.972], + [12.304, 0], + [15.275, 2.972], + [18.247, 0], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [1.639, 0], + [0, -1.639], + [-1.639, 0], + [0, 1.639], + ], + o: [ + [-1.639, 0], + [0, 1.639], + [1.639, 0], + [0, -1.639], + ], + v: [ + [31.661, -2.972], + [28.689, 0], + [31.661, 2.972], + [34.633, 0], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 4", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [100], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 25, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 50, + s: [100], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 75, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 100, + s: [100], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 125, + s: [0], + }, + { t: 150, s: [100] }, + ], + ix: 5, + }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [628.985, 403.692], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 4, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [2.19, 0], + [0, 2.19], + [-2.191, 0], + [0, -2.19], + ], + o: [ + [-2.191, 0], + [0, -2.19], + [2.19, 0], + [0, 2.19], + ], + v: [ + [-15.275, 3.972], + [-19.247, 0], + [-15.275, -3.972], + [-11.304, 0], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [2.191, 0], + [0, 2.19], + [-2.19, 0], + [0, -2.19], + ], + o: [ + [-2.19, 0], + [0, -2.19], + [2.191, 0], + [0, 2.19], + ], + v: [ + [0, 3.972], + [-3.972, 0], + [0, -3.972], + [3.972, 0], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [2.19, 0], + [0, 2.19], + [-2.19, 0], + [0, -2.19], + ], + o: [ + [-2.19, 0], + [0, -2.19], + [2.19, 0], + [0, 2.19], + ], + v: [ + [16.386, 3.972], + [12.414, 0], + [16.386, -3.972], + [20.357, 0], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 4", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 2, ix: 5 }, + lc: 1, + lj: 1, + ml: 4, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [644.261, 403.692], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 4, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-2.489, 0], + [0, 0], + [0, -2.489], + [0, 0], + [2.489, 0], + [0, 0], + [0, 2.489], + [0, 0], + ], + o: [ + [0, 0], + [2.489, 0], + [0, 0], + [0, 2.489], + [0, 0], + [-2.489, 0], + [0, 0], + [0, -2.489], + ], + v: [ + [602.768, 386.506], + [685.144, 386.506], + [689.668, 391.031], + [689.668, 416.265], + [685.144, 420.79], + [602.768, 420.79], + [598.244, 416.265], + [598.244, 391.031], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.57647061348, 0.572549045086, 0.874509871006, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [643.956, 403.648], ix: 2 }, + a: { a: 0, k: [643.956, 403.648], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 2, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "tr", + p: { + a: 1, + k: [ + { + i: { x: 0.21, y: 1 }, + o: { x: 0.333, y: 0 }, + t: -27, + s: [588.956, 403.648], + to: [9.167, 0], + ti: [0, 0], + }, + { + i: { x: 0.21, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 11, + s: [643.956, 403.648], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.21, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 48, + s: [588.956, 403.648], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.21, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 86, + s: [643.956, 403.648], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.21, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 123, + s: [588.956, 403.648], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.21, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 161, + s: [643.956, 403.648], + to: [0, 0], + ti: [9.167, 0], + }, + { t: 198, s: [588.956, 403.648] }, + ], + ix: 2, + }, + a: { a: 0, k: [643.956, 403.648], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [1.841, 0], + [0, 0], + [0, 1.841], + [0, 0], + [-1.841, 0], + [0, 0], + [0, -1.841], + [0, 0], + ], + o: [ + [0, 0], + [-1.841, 0], + [0, 0], + [0, -1.841], + [0, 0], + [1.841, 0], + [0, 0], + [0, 1.841], + ], + v: [ + [37.194, 16.559], + [-37.195, 16.559], + [-40.527, 13.226], + [-40.527, -13.226], + [-37.195, -16.559], + [37.194, -16.559], + [40.527, -13.226], + [40.527, 13.226], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.96862745285, 0.662745118141, 0.705882370472, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { + a: 1, + k: [ + { + i: { x: 0.21, y: 1 }, + o: { x: 0.333, y: 0 }, + t: -30, + s: [610.487, 376.948], + to: [2.167, 0], + ti: [0, 0], + }, + { + i: { x: 0.21, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 8, + s: [623.487, 376.948], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.21, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 45, + s: [610.487, 376.948], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.21, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 83, + s: [623.487, 376.948], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.21, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 120, + s: [610.487, 376.948], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.21, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 158, + s: [623.487, 376.948], + to: [0, 0], + ti: [2.167, 0], + }, + { t: 195, s: [610.487, 376.948] }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [1.841, 0], + [0, 0], + [0, 1.841], + [0, 0], + [-1.841, 0], + [0, 0], + [0, -1.841], + [0, 0], + ], + o: [ + [0, 0], + [-1.841, 0], + [0, 0], + [0, -1.841], + [0, 0], + [1.841, 0], + [0, 0], + [0, 1.841], + ], + v: [ + [26.59, 12.226], + [-26.59, 12.226], + [-29.923, 8.893], + [-29.923, -8.893], + [-26.59, -12.226], + [26.59, -12.226], + [29.923, -8.893], + [29.923, 8.893], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.349019616842, 0.603921592236, 0.949019610882, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { + a: 1, + k: [ + { + i: { x: 0.21, y: 1 }, + o: { x: 0.333, y: 0 }, + t: -33, + s: [625.029, 354.627], + to: [-5.167, 0], + ti: [0, 0], + }, + { + i: { x: 0.21, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 5, + s: [594.029, 354.627], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.21, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 42, + s: [625.029, 354.627], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.21, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 80, + s: [594.029, 354.627], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.21, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 117, + s: [625.029, 354.627], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.21, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 155, + s: [594.029, 354.627], + to: [0, 0], + ti: [-5.167, 0], + }, + { t: 192, s: [625.029, 354.627] }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 2, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 176, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 8, + ty: 4, + nm: "OBJECTS 17", + sr: 1, + ks: { + o: { a: 0, k: 66, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [533.031, 525.909, 0], ix: 2 }, + a: { a: 0, k: [533.031, 525.909, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [16.7, 22.376], + [16.71, 22.376], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [1.303, 0], + [4.7, -3.508], + [-8.878, -11.896], + [-11.898, 8.876], + [0, 0], + [-1.033, 7.116], + [4.301, 5.763], + [7.116, 1.033], + ], + o: [ + [-5.761, 0], + [-11.895, 8.878], + [8.879, 11.896], + [0, 0], + [5.762, -4.301], + [1.034, -7.116], + [-4.301, -5.763], + [-1.312, -0.19], + ], + v: [ + [-0.057, -26.926], + [-16.102, -21.575], + [-21.575, 16.102], + [16.102, 21.574], + [16.102, 21.574], + [26.64, 3.87], + [21.574, -16.102], + [3.87, -26.641], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [6.016, 0], + [5.672, 7.598], + [-12.78, 9.538], + [-7.641, -1.112], + [-4.62, -6.191], + [1.11, -7.645], + [6.191, -4.62], + [0, 0], + ], + o: [ + [-8.824, 0], + [-9.537, -12.781], + [6.191, -4.619], + [7.645, 1.11], + [4.62, 6.191], + [-1.11, 7.645], + [0, 0], + [-5.181, 3.866], + ], + v: [ + [0.036, 28.909], + [-23.178, 17.298], + [-17.297, -23.178], + [4.157, -28.621], + [23.177, -17.297], + [28.62, 4.157], + [17.297, 23.177], + [17.297, 23.177], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 3, + ty: "sh", + ix: 4, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [-5.145, -1.718], + [0, 0], + [0, 0], + [-3.193, -0.465], + [-0.464, 3.194], + [0, 0], + [0, 0], + [-4.846, 2.423], + [0, 0], + [0, 0], + [-1.548, -0.225], + [-1.254, 0.936], + [1.932, 2.586], + [0, 0], + [0, 0], + [-1.718, 5.147], + [0, 0], + [0, 0], + [-0.466, 3.193], + [3.193, 0.465], + [0, 0], + [0, 0], + [2.423, 4.845], + [0, 0], + [0, 0], + [1.931, 2.587], + [1.548, 0.225], + [1.254, -0.935], + [0, 0], + [0, 0], + [0, 0], + [5.145, 1.717], + [0, 0], + [0, 0], + [0.935, 1.253], + [1.547, 0.225], + [0.465, -3.193], + [0, 0], + [0, 0], + [4.847, -2.423], + [0, 0], + [0, 0], + [1.547, 0.225], + [1.253, -0.936], + [0.225, -1.547], + [-0.936, -1.253], + [0, 0], + [0, 0], + [1.717, -5.146], + [0, 0], + [0, 0], + [1.253, -0.934], + [0.225, -1.547], + [-3.193, -0.464], + [0, 0], + [0, 0], + [-2.424, -4.848], + [0, 0], + [0, 0], + [0.225, -1.548], + [-0.936, -1.254], + [-1.547, -0.225], + [-1.254, 0.936], + ], + o: [ + [0, 0], + [3.956, 3.702], + [0, 0], + [0, 0], + [-0.464, 3.193], + [3.194, 0.463], + [0, 0], + [0, 0], + [5.422, -0.182], + [0, 0], + [0, 0], + [0.935, 1.253], + [1.549, 0.227], + [2.586, -1.931], + [0, 0], + [0, 0], + [3.701, -3.955], + [0, 0], + [0, 0], + [3.198, 0.461], + [0.463, -3.193], + [0, 0], + [0, 0], + [-0.182, -5.423], + [0, 0], + [0, 0], + [2.587, -1.93], + [-0.935, -1.253], + [-1.547, -0.227], + [0, 0], + [0, 0], + [0, 0], + [-3.956, -3.703], + [0, 0], + [0, 0], + [0.225, -1.547], + [-0.936, -1.253], + [-3.203, -0.466], + [0, 0], + [0, 0], + [-5.421, 0.182], + [0, 0], + [0, 0], + [-0.935, -1.254], + [-1.546, -0.223], + [-1.254, 0.935], + [-0.225, 1.548], + [0, 0], + [0, 0], + [-3.703, 3.956], + [0, 0], + [0, 0], + [-1.545, -0.222], + [-1.253, 0.935], + [-0.464, 3.194], + [0, 0], + [0, 0], + [0.182, 5.421], + [0, 0], + [0, 0], + [-1.252, 0.935], + [-0.225, 1.547], + [0.935, 1.252], + [1.546, 0.224], + [0, 0], + ], + v: [ + [-26.252, 26.896], + [-25.641, 27.467], + [-11.923, 35.634], + [-11.13, 35.899], + [-12.325, 44.121], + [-7.373, 50.755], + [-0.739, 45.804], + [0.456, 37.581], + [1.292, 37.553], + [16.766, 33.627], + [17.514, 33.253], + [22.484, 39.913], + [26.334, 42.204], + [30.676, 41.102], + [31.865, 32.911], + [26.896, 26.252], + [27.467, 25.64], + [35.634, 11.922], + [35.899, 11.129], + [44.121, 12.324], + [50.755, 7.373], + [45.804, 0.738], + [37.581, -0.456], + [37.553, -1.292], + [33.628, -16.766], + [33.254, -17.514], + [39.912, -22.485], + [41.102, -30.676], + [37.253, -32.967], + [32.91, -31.866], + [32.911, -31.866], + [26.252, -26.896], + [25.64, -27.467], + [11.922, -35.634], + [11.129, -35.899], + [12.324, -44.122], + [11.222, -48.463], + [7.373, -50.755], + [0.738, -45.804], + [-0.456, -37.581], + [-1.292, -37.554], + [-16.766, -33.628], + [-17.514, -33.254], + [-22.485, -39.913], + [-26.333, -42.205], + [-30.675, -41.102], + [-32.967, -37.253], + [-31.866, -32.911], + [-26.896, -26.252], + [-27.467, -25.641], + [-35.634, -11.923], + [-35.899, -11.13], + [-44.121, -12.325], + [-48.463, -11.222], + [-50.755, -7.373], + [-45.804, -0.739], + [-37.581, 0.456], + [-37.554, 1.292], + [-33.627, 16.766], + [-33.253, 17.514], + [-39.913, 22.484], + [-42.204, 26.334], + [-41.102, 30.676], + [-37.253, 32.967], + [-32.911, 31.865], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 4", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 4, + ty: "sh", + ix: 5, + ks: { + a: 0, + k: { + i: [ + [3.835, -0.001], + [0.381, 0.056], + [-0.623, 4.284], + [0, 0], + [3.821, 3.428], + [0, 0], + [2.076, 0.303], + [1.255, 1.682], + [-3.471, 2.59], + [0, 0], + [0.278, 5.131], + [0, 0], + [-0.623, 4.285], + [-1.682, 1.255], + [-2.075, -0.301], + [0, 0], + [-3.429, 3.821], + [0, 0], + [-0.302, 2.075], + [-1.682, 1.255], + [-2.076, -0.301], + [-1.255, -1.682], + [0, 0], + [-5.13, 0.278], + [0, 0], + [-4.273, -0.626], + [-1.255, -1.682], + [0.302, -2.075], + [0, 0], + [-3.821, -3.429], + [0, 0], + [-2.592, -3.473], + [3.471, -2.59], + [0, 0], + [-0.278, -5.132], + [0, 0], + [0.622, -4.284], + [4.275, 0.627], + [0, 0], + [3.428, -3.82], + [0, 0], + [3.47, -2.592], + [2.076, 0.301], + [1.255, 1.682], + [0, 0], + [5.132, -0.278], + [0, 0], + ], + o: [ + [-0.374, 0], + [-4.285, -0.623], + [0, 0], + [-4.841, -1.727], + [0, 0], + [-1.682, 1.255], + [-2.076, -0.301], + [-2.59, -3.471], + [0, 0], + [-2.2, -4.64], + [0, 0], + [-4.285, -0.622], + [0.301, -2.076], + [1.682, -1.254], + [0, 0], + [1.727, -4.841], + [0, 0], + [-1.254, -1.682], + [0.302, -2.076], + [1.681, -1.255], + [2.076, 0.302], + [0, 0], + [4.639, -2.199], + [0, 0], + [0.623, -4.286], + [2.076, 0.301], + [1.255, 1.681], + [0, 0], + [4.841, 1.727], + [0, 0], + [3.468, -2.589], + [2.59, 3.47], + [0, 0], + [2.199, 4.638], + [0, 0], + [4.285, 0.623], + [-0.623, 4.286], + [0, 0], + [-1.728, 4.842], + [0, 0], + [2.59, 3.469], + [-1.682, 1.254], + [-2.076, -0.302], + [0, 0], + [-4.639, 2.199], + [0, 0], + [-0.566, 3.904], + ], + v: [ + [-6.527, 52.817], + [-7.661, 52.734], + [-14.303, 43.834], + [-13.348, 37.257], + [-26.39, 29.495], + [-31.715, 33.468], + [-37.54, 34.946], + [-42.705, 31.872], + [-41.109, 20.88], + [-35.784, 16.907], + [-39.516, 2.196], + [-46.091, 1.24], + [-52.734, -7.661], + [-49.66, -12.826], + [-43.834, -14.303], + [-37.257, -13.348], + [-29.495, -26.39], + [-33.469, -31.714], + [-34.947, -37.54], + [-31.871, -42.706], + [-26.046, -44.184], + [-20.881, -41.109], + [-16.907, -35.785], + [-2.197, -39.516], + [-1.241, -46.091], + [7.66, -52.734], + [12.825, -49.66], + [14.302, -43.834], + [13.347, -37.257], + [26.389, -29.495], + [31.714, -33.469], + [42.706, -31.872], + [41.108, -20.881], + [35.784, -16.907], + [39.515, -2.197], + [46.091, -1.241], + [52.734, 7.66], + [43.834, 14.302], + [37.257, 13.347], + [29.495, 26.389], + [33.468, 31.714], + [31.873, 42.706], + [26.046, 44.183], + [20.88, 41.108], + [16.907, 35.784], + [2.196, 39.515], + [1.24, 46.091], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 5", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 6, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [673.486, 574.02], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 0, + s: [360], + }, + { t: 150, s: [0] }, + ], + ix: 6, + }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 1, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [3.127, 0], + [1.968, -0.623], + [2.433, -4.689], + [-1.595, -5.035], + [-4.688, -2.433], + [-5.032, 1.594], + [-2.433, 4.689], + [1.595, 5.035], + [4.689, 2.433], + ], + o: [ + [-2.008, 0], + [-5.036, 1.595], + [-2.434, 4.688], + [1.595, 5.036], + [4.689, 2.434], + [5.036, -1.595], + [2.434, -4.688], + [-1.595, -5.036], + [-2.855, -1.482], + ], + v: [ + [0.024, -19.784], + [-5.968, -18.852], + [-17.55, -9.109], + [-18.851, 5.969], + [-9.108, 17.551], + [5.97, 18.852], + [17.552, 9.109], + [18.853, -5.969], + [9.11, -17.551], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [2.21, 0], + [3.145, 1.632], + [1.756, 5.545], + [-2.679, 5.163], + [-5.545, 1.756], + [-5.164, -2.679], + [-1.756, -5.544], + [2.68, -5.162], + [5.545, -1.756], + ], + o: [ + [-3.444, 0], + [-5.162, -2.68], + [-1.756, -5.545], + [2.68, -5.162], + [5.546, -1.757], + [5.162, 2.68], + [1.756, 5.545], + [-2.68, 5.162], + [-2.167, 0.686], + ], + v: [ + [-0.024, 21.785], + [-10.03, 19.327], + [-20.757, 6.574], + [-19.326, -10.031], + [-6.573, -20.758], + [10.032, -19.327], + [20.76, -6.574], + [19.328, 10.031], + [6.575, 20.758], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [-0.972, -0.504], + [-1.045, 0.33], + [-0.505, 0.972], + [0.33, 1.044], + [0, 0], + [0, 0], + [-2.439, 3.165], + [0, 0], + [0, 0], + [-1.045, 0.33], + [-0.504, 0.973], + [2.006, 1.042], + [0, 0], + [0, 0], + [0.514, 3.965], + [0, 0], + [0, 0], + [0.682, 2.154], + [0.973, 0.505], + [1.044, -0.33], + [0, 0], + [0, 0], + [3.166, 2.438], + [0, 0], + [0, 0], + [2.006, 1.041], + [1.04, -2.006], + [0, 0], + [0, 0], + [3.966, -0.512], + [0, 0], + [0, 0], + [0.972, 0.504], + [1.047, -0.33], + [-0.682, -2.155], + [0, 0], + [0, 0], + [2.438, -3.165], + [0, 0], + [0, 0], + [1.044, -0.33], + [0.504, -0.973], + [-0.33, -1.044], + [-0.973, -0.504], + [0, 0], + [0, 0], + [-0.514, -3.965], + [0, 0], + [0, 0], + [0.504, -0.972], + [-0.33, -1.044], + [-2.154, 0.684], + [0, 0], + [0, 0], + [-3.165, -2.438], + [0, 0], + [0, 0], + [-0.33, -1.044], + [-0.973, -0.504], + [-1.041, 2.005], + [0, 0], + [0, 0], + [-3.962, 0.512], + ], + o: [ + [0, 0], + [0.331, 1.044], + [0.972, 0.505], + [1.044, -0.331], + [0.505, -0.972], + [0, 0], + [0, 0], + [3.539, -1.862], + [0, 0], + [0, 0], + [0.972, 0.505], + [1.044, -0.331], + [1.041, -2.005], + [0, 0], + [0, 0], + [1.186, -3.816], + [0, 0], + [0, 0], + [2.154, -0.683], + [-0.331, -1.044], + [-0.97, -0.505], + [0, 0], + [0, 0], + [-1.862, -3.539], + [0, 0], + [0, 0], + [1.041, -2.006], + [-2.009, -1.044], + [0, 0], + [0, 0], + [-3.815, -1.186], + [0, 0], + [0, 0], + [-0.33, -1.044], + [-0.972, -0.505], + [-2.154, 0.683], + [0, 0], + [0, 0], + [-3.539, 1.863], + [0, 0], + [0, 0], + [-0.971, -0.505], + [-1.044, 0.331], + [-0.505, 0.972], + [0.331, 1.044], + [0, 0], + [0, 0], + [-1.186, 3.816], + [0, 0], + [0, 0], + [-1.044, 0.33], + [-0.505, 0.972], + [0.683, 2.154], + [0, 0], + [0, 0], + [1.862, 3.539], + [0, 0], + [0, 0], + [-0.505, 0.972], + [0.331, 1.044], + [2.006, 1.042], + [0, 0], + [0, 0], + [3.816, 1.186], + [0, 0], + ], + v: [ + [4.368, 27.368], + [6.298, 33.466], + [8.318, 35.867], + [11.444, 36.136], + [13.845, 34.117], + [14.115, 30.991], + [12.183, 24.893], + [12.923, 24.504], + [21.931, 16.927], + [22.441, 16.265], + [28.119, 19.211], + [31.245, 19.481], + [33.645, 17.461], + [31.895, 11.934], + [26.217, 8.988], + [26.465, 8.189], + [27.477, -3.536], + [27.369, -4.367], + [33.467, -6.297], + [36.138, -11.443], + [34.118, -13.844], + [30.993, -14.114], + [24.895, -12.182], + [24.505, -12.922], + [16.928, -21.93], + [16.265, -22.44], + [19.212, -28.118], + [17.462, -33.644], + [11.936, -31.894], + [8.989, -26.216], + [8.19, -26.464], + [-3.536, -27.476], + [-4.366, -27.368], + [-6.296, -33.466], + [-8.316, -35.867], + [-11.442, -36.137], + [-14.113, -30.991], + [-12.181, -24.894], + [-12.921, -24.504], + [-21.928, -16.927], + [-22.438, -16.264], + [-28.117, -19.211], + [-31.242, -19.481], + [-33.642, -17.46], + [-33.913, -14.335], + [-31.892, -11.935], + [-26.215, -8.988], + [-26.463, -8.189], + [-27.475, 3.537], + [-27.367, 4.367], + [-33.465, 6.298], + [-35.866, 8.317], + [-36.135, 11.443], + [-30.99, 14.114], + [-24.892, 12.182], + [-24.502, 12.923], + [-16.926, 21.929], + [-16.264, 22.439], + [-19.209, 28.118], + [-19.48, 31.243], + [-17.459, 33.643], + [-11.933, 31.893], + [-8.986, 26.216], + [-8.187, 26.465], + [3.538, 27.476], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 3, + ty: "sh", + ix: 4, + ks: { + a: 0, + k: { + i: [ + [0.619, 0], + [0.881, 0.457], + [0.492, 1.554], + [0, 0], + [3.572, 1.003], + [0, 0], + [2.984, 1.549], + [0.492, 1.554], + [-0.751, 1.446], + [0, 0], + [1.819, 3.237], + [0, 0], + [1.015, 3.206], + [-0.75, 1.446], + [-1.553, 0.491], + [0, 0], + [-1.003, 3.573], + [0, 0], + [0.492, 1.554], + [-0.751, 1.446], + [-1.554, 0.492], + [-1.446, -0.75], + [0, 0], + [-3.237, 1.82], + [0, 0], + [-3.206, 1.016], + [-1.446, -0.75], + [-0.491, -1.553], + [0, 0], + [-3.573, -1.003], + [0, 0], + [-2.988, -1.55], + [1.548, -2.985], + [0, 0], + [-1.819, -3.237], + [0, 0], + [-1.446, -0.75], + [-0.492, -1.554], + [3.206, -1.016], + [0, 0], + [1.003, -3.573], + [0, 0], + [1.549, -2.984], + [1.554, -0.491], + [1.448, 0.75], + [0, 0], + [3.237, -1.819], + [0, 0], + [0.75, -1.445], + [1.554, -0.491], + ], + o: [ + [-0.964, 0], + [-1.445, -0.75], + [0, 0], + [-3.695, 0.377], + [0, 0], + [-1.55, 2.984], + [-1.446, -0.75], + [-0.492, -1.553], + [0, 0], + [-2.876, -2.344], + [0, 0], + [-3.207, 1.016], + [-0.492, -1.553], + [0.751, -1.446], + [0, 0], + [-0.376, -3.694], + [0, 0], + [-1.446, -0.75], + [-0.492, -1.553], + [0.75, -1.445], + [1.552, -0.491], + [0, 0], + [2.344, -2.875], + [0, 0], + [-1.015, -3.206], + [1.551, -0.492], + [1.446, 0.751], + [0, 0], + [3.695, -0.378], + [0, 0], + [1.549, -2.984], + [2.983, 1.55], + [0, 0], + [2.876, 2.345], + [0, 0], + [1.554, -0.491], + [1.446, 0.751], + [1.015, 3.206], + [0, 0], + [0.376, 3.694], + [0, 0], + [2.984, 1.55], + [-0.75, 1.446], + [-1.552, 0.492], + [0, 0], + [-2.346, 2.876], + [0, 0], + [0.492, 1.553], + [-0.751, 1.446], + [-0.607, 0.192], + ], + v: [ + [10.199, 38.331], + [7.397, 37.642], + [4.392, 34.07], + [2.962, 29.555], + [-7.976, 28.612], + [-10.158, 32.815], + [-18.381, 35.419], + [-21.386, 31.846], + [-20.985, 27.196], + [-18.804, 22.993], + [-25.872, 14.59], + [-30.386, 16.02], + [-38.041, 12.047], + [-37.641, 7.396], + [-34.069, 4.391], + [-29.554, 2.962], + [-28.611, -7.978], + [-32.814, -10.16], + [-35.819, -13.732], + [-35.417, -18.382], + [-31.845, -21.387], + [-27.195, -20.987], + [-22.992, -18.805], + [-14.589, -25.873], + [-16.019, -30.387], + [-12.045, -38.043], + [-7.395, -37.642], + [-4.39, -34.07], + [-2.96, -29.555], + [7.979, -28.612], + [10.161, -32.816], + [18.384, -35.419], + [20.988, -27.196], + [18.806, -22.994], + [25.875, -14.59], + [30.389, -16.02], + [35.04, -15.619], + [38.044, -12.046], + [34.071, -4.391], + [29.556, -2.961], + [28.613, 7.978], + [32.817, 10.159], + [35.42, 18.382], + [31.848, 21.387], + [27.197, 20.986], + [22.995, 18.805], + [14.591, 25.873], + [16.021, 30.387], + [15.621, 35.038], + [12.047, 38.043], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 4", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 5, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [604.247, 625.836], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 0, + s: [0], + }, + { t: 150, s: [360] }, + ], + ix: 6, + }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 1, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [16.422, 1.254], + [-1.254, 16.422], + [-16.422, -1.254], + [1.254, -16.422], + ], + o: [ + [-16.422, -1.254], + [1.254, -16.422], + [16.422, 1.254], + [-1.254, 16.422], + ], + v: [ + [-2.27, 29.735], + [-29.735, -2.27], + [2.27, -29.735], + [29.735, 2.27], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [4.031, 0.308], + [0, 0], + [2.938, 4.996], + [0, 0], + [2.633, 3.068], + [3.068, -2.633], + [0, 0], + [5.831, 1.512], + [0, 0], + [4.031, 0.308], + [0, 0], + [0.308, -4.031], + [0, 0], + [4.997, -2.938], + [0, 0], + [3.068, -2.633], + [-2.633, -3.068], + [0, 0], + [1.512, -5.831], + [0, 0], + [0.308, -4.031], + [0, 0], + [-4.031, -0.308], + [0, 0], + [-2.937, -4.996], + [0, 0], + [-2.633, -3.068], + [-3.068, 2.633], + [0, 0], + [-5.831, -1.512], + [0, 0], + [-4.031, -0.308], + [0, 0], + [-0.308, 4.031], + [0, 0], + [-4.997, 2.938], + [0, 0], + [-3.068, 2.633], + [2.633, 3.068], + [0, 0], + [-1.512, 5.831], + [0, 0], + [-0.308, 4.031], + [0, 0], + ], + o: [ + [0, 0], + [-0.609, -5.993], + [0, 0], + [3.068, -2.633], + [-2.633, -3.068], + [0, 0], + [-4.493, -3.662], + [0, 0], + [0.308, -4.031], + [0, 0], + [-4.031, -0.308], + [0, 0], + [-5.993, 0.609], + [0, 0], + [-2.633, -3.068], + [-3.068, 2.633], + [0, 0], + [-3.662, 4.493], + [0, 0], + [-4.031, -0.308], + [0, 0], + [-0.308, 4.031], + [0, 0], + [0.609, 5.993], + [0, 0], + [-3.068, 2.633], + [2.633, 3.068], + [0, 0], + [4.493, 3.662], + [0, 0], + [-0.308, 4.031], + [0, 0], + [4.031, 0.308], + [0, 0], + [5.993, -0.609], + [0, 0], + [2.633, 3.068], + [3.068, -2.633], + [0, 0], + [3.662, -4.492], + [0, 0], + [4.031, 0.308], + [0, 0], + [0.308, -4.031], + ], + v: [ + [48.944, -3.604], + [40.986, -4.212], + [35.537, -20.85], + [41.594, -26.048], + [42.382, -36.369], + [32.06, -37.157], + [26.003, -31.96], + [10.385, -39.872], + [10.993, -47.83], + [4.251, -55.686], + [4.251, -55.686], + [-3.604, -48.944], + [-4.212, -40.986], + [-20.85, -35.537], + [-26.048, -41.594], + [-36.37, -42.382], + [-37.158, -32.06], + [-31.96, -26.003], + [-39.872, -10.385], + [-47.83, -10.993], + [-55.686, -4.251], + [-55.686, -4.251], + [-48.944, 3.604], + [-40.986, 4.212], + [-35.537, 20.85], + [-41.594, 26.048], + [-42.382, 36.37], + [-32.06, 37.158], + [-26.003, 31.96], + [-10.385, 39.872], + [-10.993, 47.83], + [-4.251, 55.686], + [-4.251, 55.686], + [3.604, 48.944], + [4.212, 40.986], + [20.85, 35.537], + [26.048, 41.594], + [36.369, 42.382], + [37.157, 32.06], + [31.96, 26.003], + [39.872, 10.385], + [47.83, 10.993], + [55.686, 4.251], + [55.686, 4.251], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [395.468, 443.357], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 0, + s: [360], + }, + { t: 150, s: [0] }, + ], + ix: 6, + }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 1, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 176, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 9, + ty: 4, + nm: "OBJECTS 18", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [426.779, 595.191, 0], ix: 2 }, + a: { a: 0, k: [426.779, 595.191, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-1.392, 0], + [0, 0], + ], + o: [ + [0, 0], + [1.392, 0], + ], + v: [ + [-59.382, -25.279], + [58.961, -25.229], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [-1.392, 0], + [0, 0], + ], + o: [ + [0, 0], + [1.392, 0], + ], + v: [ + [-59.385, -12.466], + [58.957, -12.416], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 4", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [-1.392, 0], + [0, 0], + ], + o: [ + [0, 0], + [1.392, 0], + ], + v: [ + [-59.391, 0.046], + [58.951, 0.096], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 5", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 3, + ty: "sh", + ix: 4, + ks: { + a: 0, + k: { + i: [ + [-1.392, 0], + [0, 0], + ], + o: [ + [0, 0], + [1.392, 0], + ], + v: [ + [-59.404, 13.01], + [58.938, 13.06], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 6", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 4, + ty: "sh", + ix: 5, + ks: { + a: 0, + k: { + i: [ + [-1.392, 0], + [0, 0], + ], + o: [ + [0, 0], + [1.392, 0], + ], + v: [ + [-59.43, 25.221], + [-16.154, 25.22], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 7", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "tm", + s: { a: 0, k: 0, ix: 1 }, + e: { a: 0, k: 91, ix: 2 }, + o: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 0, + s: [220], + }, + { t: 150, s: [1300] }, + ], + ix: 3, + }, + m: 2, + ix: 6, + nm: "Trim Paths 1", + mn: "ADBE Vector Filter - Trim", + hd: false, + }, + { + ind: 6, + ty: "sh", + ix: 7, + ks: { + a: 0, + k: { + i: [ + [1.495, 0], + [0, 0], + [0, 1.495], + [0, 0], + [-1.495, 0], + [0, 0], + [0, -1.495], + [0, 0], + ], + o: [ + [0, 0], + [-1.495, 0], + [0, 0], + [0, -1.495], + [0, 0], + [1.495, 0], + [0, 0], + [0, 1.495], + ], + v: [ + [71.509, 39.929], + [-71.509, 39.929], + [-74.221, 37.217], + [-74.221, -37.217], + [-71.509, -39.929], + [71.509, -39.929], + [74.221, -37.217], + [74.221, 37.217], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 2.5, ix: 5 }, + lc: 1, + lj: 1, + ml: 4, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [486.898, 641.529], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [91, 91], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 8, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-1.392, 0], + [0, 0], + ], + o: [ + [0, 0], + [1.392, 0], + ], + v: [ + [-59.382, -25.279], + [58.961, -25.229], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [-1.392, 0], + [0, 0], + ], + o: [ + [0, 0], + [1.392, 0], + ], + v: [ + [-59.385, -12.466], + [58.957, -12.416], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 4", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [-1.392, 0], + [0, 0], + ], + o: [ + [0, 0], + [1.392, 0], + ], + v: [ + [-59.391, 0.046], + [58.951, 0.096], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 5", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 3, + ty: "sh", + ix: 4, + ks: { + a: 0, + k: { + i: [ + [-1.392, 0], + [0, 0], + ], + o: [ + [0, 0], + [1.392, 0], + ], + v: [ + [-59.404, 13.01], + [58.938, 13.06], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 6", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 4, + ty: "sh", + ix: 5, + ks: { + a: 0, + k: { + i: [ + [-1.392, 0], + [0, 0], + ], + o: [ + [0, 0], + [1.392, 0], + ], + v: [ + [-59.43, 25.221], + [-16.154, 25.22], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 7", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "tm", + s: { a: 0, k: 0, ix: 1 }, + e: { a: 0, k: 91, ix: 2 }, + o: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 0, + s: [220], + }, + { t: 150, s: [1300] }, + ], + ix: 3, + }, + m: 2, + ix: 6, + nm: "Trim Paths 1", + mn: "ADBE Vector Filter - Trim", + hd: false, + }, + { + ind: 6, + ty: "sh", + ix: 7, + ks: { + a: 0, + k: { + i: [ + [1.495, 0], + [0, 0], + [0, 1.495], + [0, 0], + [-1.495, 0], + [0, 0], + [0, -1.495], + [0, 0], + ], + o: [ + [0, 0], + [-1.495, 0], + [0, 0], + [0, -1.495], + [0, 0], + [1.495, 0], + [0, 0], + [0, 1.495], + ], + v: [ + [71.509, 39.929], + [-71.509, 39.929], + [-74.221, 37.217], + [-74.221, -37.217], + [-71.509, -39.929], + [71.509, -39.929], + [74.221, -37.217], + [74.221, 37.217], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { a: 0, k: [1, 1, 1, 1], ix: 3 }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 2.5, ix: 5 }, + lc: 1, + lj: 1, + ml: 4, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [371.898, 556.529], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 8, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 176, + st: 0, + bm: 0, + }, + ], + }, + ], + layers: [ + { + ddd: 0, + ind: 1, + ty: 3, + nm: "Null 1", + sr: 1, + ks: { + o: { a: 0, k: 0, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [250, 250, 0], ix: 2 }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { a: 0, k: [86.5, 86.5, 100], ix: 6 }, + }, + ao: 0, + ip: 0, + op: 176, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 2, + ty: 4, + nm: "OBJECTS 2", + parent: 1, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.16], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.16], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 18, + s: [-19], + }, + { + i: { x: [0.16], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 36, + s: [13.224], + }, + { + i: { x: [0.768], y: [0.989] }, + o: { x: [0.396], y: [0] }, + t: 58, + s: [-28.71], + }, + { + i: { x: [0.738], y: [1.109] }, + o: { x: [0.4], y: [-0.031] }, + t: 70, + s: [22.487], + }, + { + i: { x: [0.581], y: [1] }, + o: { x: [0.167], y: [0.104] }, + t: 90, + s: [-28.937], + }, + { + i: { x: [0.16], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 120, + s: [22.796], + }, + { t: 150, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.16, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [100.192, -7.033, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.16, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 14, + s: [-2.808, -79.033, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.16, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 39, + s: [-2.063, -19.443, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.333, y: 0 }, + t: 56, + s: [-123.178, 129.126, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 69, + s: [-50.998, 74.437, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.16, y: 1 }, + o: { x: 0.167, y: 0.167 }, + t: 91, + s: [5.702, 117.936, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.16, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 115, + s: [87.199, -45.624, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.16, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 131, + s: [124.883, 63.26, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { t: 150, s: [100.192, -7.033, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [600.192, 492.967, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.16, 0.16, 0.16], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [100, 100, 100], + }, + { + i: { x: [0.16, 0.16, 0.16], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 14, + s: [124.717, 124.717, 100], + }, + { + i: { x: [0.16, 0.16, 0.16], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 39, + s: [113.284, 113.284, 100], + }, + { + i: { x: [0.16, 0.16, 0.16], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 56, + s: [68.448, 68.448, 100], + }, + { + i: { x: [0.16, 0.16, 0.16], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 115, + s: [118.576, 118.576, 100], + }, + { t: 150, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [5.288, 5.345], + [0, 0], + [0.818, -0.555], + [3.456, -3.495], + [0, 0], + [3.799, -5.337], + [-1.655, 1.673], + ], + o: [ + [0, 0], + [-0.187, -0.189], + [-2.046, 1.387], + [-1.498, 1.515], + [3.633, 3.673], + [2.097, -0.626], + [5.288, -5.345], + ], + v: [ + [33.63, 14.637], + [-18.381, -37.941], + [-19.956, -37.324], + [-29.104, -29.104], + [28.482, 25.244], + [27.903, 37.442], + [33.63, 33.994], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.243137255311, 0.278431385756, 0.607843160629, 1], + ix: 4, + }, + o: { a: 0, k: 35, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 2", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [5.288, 5.345], + [0, 0], + [0.818, -0.555], + [3.456, -3.495], + [1.147, -1.922], + [-0.164, -0.165], + [0, 0], + [-5.288, 5.345], + ], + o: [ + [0, 0], + [-0.187, -0.189], + [-2.046, 1.387], + [-3.571, 3.611], + [-0.373, 0.625], + [0, 0], + [5.288, 5.345], + [5.288, -5.345], + ], + v: [ + [33.63, 14.637], + [-18.381, -37.941], + [-19.956, -37.324], + [-29.104, -29.104], + [-37.176, -19.808], + [-37.529, -18.584], + [14.482, 33.994], + [33.63, 33.994], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.349019616842, 0.603921592236, 0.949019610882, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [661.549, 554.396], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 4, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [-1.103, -1.103], + [0, 0], + [-2.046, 1.387], + [0, 0], + [1.107, -0.838], + [0.093, -0.093], + ], + o: [ + [-1.103, 1.103], + [0, 0], + [3.456, -3.495], + [0, 0], + [-1.009, -1.009], + [-0.102, 0.078], + [0, 0], + ], + v: [ + [3.323, -8.077], + [3.323, -4.084], + [6.188, -1.219], + [15.336, -9.438], + [12.007, -12.767], + [8.314, -13.012], + [8.014, -12.767], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.274509817362, 0.345098048449, 0.678431391716, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 2", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [-3.571, 3.611], + [0, 0], + [-1.103, 1.103], + [0, 0], + [0, 0], + [-1.103, -1.103], + [0, 0], + ], + o: [ + [0, 0], + [-1.103, -1.103], + [0, 0], + [0, 0], + [-1.103, 1.103], + [0, 0], + [1.147, -1.922], + ], + v: [ + [6.188, -1.219], + [3.323, -4.084], + [3.323, -8.077], + [-5.221, 0.468], + [-5.361, 0.607], + [-5.361, 4.6], + [-1.884, 8.077], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.298039227724, 0.396078437567, 0.729411780834, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [626.257, 526.51], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 4, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [34.348, 0], + [0, -34.348], + [-34.348, 0], + [0, 34.348], + ], + o: [ + [-34.348, 0], + [0, 34.348], + [34.348, 0], + [0, -34.348], + ], + v: [ + [576.097, 406.103], + [513.805, 468.395], + [576.097, 530.687], + [638.389, 468.395], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [16.615, 0], + [0, 41.277], + [-41.277, 0], + [0, -41.277], + [10.201, -13.205], + [0, 0], + [0.044, -0.045], + [0, 0], + ], + o: [ + [-41.277, 0], + [0, -41.277], + [41.277, 0], + [0, 16.702], + [0, 0], + [-0.099, 0.074], + [0, 0], + [-13.183, 10.129], + ], + v: [ + [576.097, 543.253], + [501.238, 468.395], + [576.097, 393.536], + [650.955, 468.395], + [635.362, 514.109], + [635.175, 514.295], + [634.98, 514.448], + [621.646, 527.771], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 4", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.243137255311, 0.278431385756, 0.607843160629, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [576.097, 468.395], ix: 2 }, + a: { a: 0, k: [576.097, 468.395], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 5", + np: 3, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [576.097, 468.395], ix: 2 }, + a: { a: 0, k: [576.097, 468.395], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [2.209, 0], + [0, 2.209], + [-31.929, 0], + [0, -2.209], + [2.209, 0], + [0, -27.517], + ], + o: [ + [-2.209, 0], + [0, -31.929], + [2.209, 0], + [0, 2.209], + [-27.518, 0], + [0, 2.209], + ], + v: [ + [-48.452, 8.452], + [-52.452, 4.452], + [5.452, -53.452], + [9.452, -49.452], + [5.452, -45.452], + [-44.452, 4.452], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 70, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 2", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [34.955, 0], + [0, -34.955], + [-34.955, 0], + [0, 34.955], + ], + o: [ + [-34.955, 0], + [0, 34.955], + [34.955, 0], + [0, -34.955], + ], + v: [ + [0, -63.292], + [-63.292, 0], + [0, 63.292], + [63.292, 0], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "gf", + o: { a: 0, k: 100, ix: 10 }, + r: 1, + bm: 0, + g: { + p: 3, + k: { + a: 0, + k: [ + 0.068, 1, 1, 1, 0.534, 1, 1, 1, 1, 1, 1, 1, 0.172, 0, 0.687, 0.25, + 0.995, 0.5, + ], + ix: 9, + }, + }, + s: { a: 0, k: [0, 0], ix: 5 }, + e: { a: 0, k: [63.5, 0], ix: 6 }, + t: 2, + h: { a: 0, k: 0, ix: 7 }, + a: { a: 0, k: 0, ix: 8 }, + nm: "Gradient Fill 1", + mn: "ADBE Vector Graphic - G-Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 4, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [576.097, 468.395], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 1, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 176, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 3, + ty: 4, + nm: "OBJECTS", + parent: 2, + td: 1, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [600.192, 492.967, 0], ix: 2 }, + a: { a: 0, k: [600.192, 492.967, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [34.955, 0], + [0, -34.955], + [-34.955, 0], + [0, 34.955], + ], + o: [ + [-34.955, 0], + [0, 34.955], + [34.955, 0], + [0, -34.955], + ], + v: [ + [0, -63.292], + [-63.292, 0], + [0, 63.292], + [63.292, 0], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0, 0, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [576.097, 468.395], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 1, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 176, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 4, + ty: 0, + nm: "all", + parent: 1, + tt: 1, + refId: "comp_0", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.22, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [80, -32, 0], + to: [5, 1.833, 0], + ti: [-5, 0.833, 0], + }, + { + i: { x: 0.22, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 14, + s: [110, -21, 0], + to: [5, -0.833, 0], + ti: [-1.667, 4.333, 0], + }, + { + i: { x: 0.22, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 39, + s: [110, -37, 0], + to: [1.667, -4.333, 0], + ti: [3.333, 0, 0], + }, + { + i: { x: 0.22, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 56, + s: [150, -77, 0], + to: [-3.333, 0, 0], + ti: [5, 1.667, 0], + }, + { + i: { x: 0.22, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 69, + s: [110, -37, 0], + to: [-5, -1.667, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.22, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 91, + s: [90, -77, 0], + to: [0, 0, 0], + ti: [0, -6.667, 0], + }, + { + i: { x: 0.22, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 115, + s: [90, -37, 0], + to: [0, 6.667, 0], + ti: [1.667, -0.833, 0], + }, + { + i: { x: 0.22, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 131, + s: [90, -17, 0], + to: [-1.667, 0.833, 0], + ti: [1.667, 2.5, 0], + }, + { t: 150, s: [80, -32, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [580, 468, 0], ix: 1 }, + s: { a: 0, k: [140, 140, 100], ix: 6 }, + }, + ao: 0, + w: 1000, + h: 1000, + ip: 0, + op: 176, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 5, + ty: 0, + nm: "all", + parent: 1, + refId: "comp_0", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [0, 0, 0], ix: 2 }, + a: { a: 0, k: [500, 500, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + w: 1000, + h: 1000, + ip: 0, + op: 176, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 6, + ty: 4, + nm: "BACKGROUND", + parent: 1, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [6.89, -17.736, 0], ix: 2 }, + a: { a: 0, k: [506.89, 482.264, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [9.248, 8.588], + [8.588, -9.248], + [-9.248, -8.588], + [-11.987, 3.948], + ], + o: [ + [-9.248, -8.588], + [-8.588, 9.248], + [9.248, 8.588], + [16.717, -5.507], + ], + v: [ + [16.52, -18.271], + [-15.774, -17.076], + [-20.546, 21.643], + [14.641, 12.257], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.882352948189, 0.886274516582, 0.996078431606, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [313.017, 296.905], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 50, + s: [301.017, 305.905], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 100, + s: [288.01, 333.41], + to: [0, 0], + ti: [0, 0], + }, + { t: 150, s: [313.017, 296.905] }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 50, + s: [12], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 100, + s: [-18], + }, + { t: 150, s: [0] }, + ], + ix: 6, + }, + o: { a: 0, k: 47, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-8.408, -5.428], + [-5.428, 8.408], + [8.407, 5.428], + [8.814, -4.739], + ], + o: [ + [8.408, 5.428], + [5.428, -8.408], + [-8.408, -5.428], + [-12.293, 6.61], + ], + v: [ + [-9.956, 17.35], + [15.095, 11.955], + [13.471, -18.938], + [-12.707, -6.747], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.882352948189, 0.886274516582, 0.996078431606, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [682.659, 671.752], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 50, + s: [663.659, 680.752], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 100, + s: [695.159, 659.252], + to: [0, 0], + ti: [0, 0], + }, + { t: 150, s: [682.659, 671.752] }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 50, + s: [-39], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 100, + s: [11.5], + }, + { t: 150, s: [0] }, + ], + ix: 6, + }, + o: { a: 0, k: 47, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-5.965, 11.62], + [11.62, 5.965], + [5.965, -11.62], + [-7.293, -10.837], + ], + o: [ + [5.965, -11.62], + [-11.62, -5.965], + [-5.965, 11.62], + [10.171, 15.114], + ], + v: [ + [24.368, 10.668], + [14.129, -21.174], + [-25.786, -15.079], + [-6.575, 17.35], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.92549020052, 0.945098042488, 0.96862745285, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [699.145, 321.283], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 50, + s: [674.145, 311.283], + to: [0, 0], + ti: [0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 100, + s: [681.645, 346.283], + to: [0, 0], + ti: [0, 0], + }, + { t: 150, s: [699.145, 321.283] }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 50, + s: [28], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 100, + s: [-26], + }, + { t: 150, s: [0] }, + ], + ix: 6, + }, + o: { a: 0, k: 47, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 2, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 176, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 7, + ty: 4, + nm: "BACKGROUND 2", + parent: 1, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [-8.52, -10.982, 0], ix: 2 }, + a: { a: 0, k: [491.48, 489.018, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.259, -2.915], + [4.029, -14.154], + [5.692, -16.637], + [-10.214, -23.955], + [-9.82, -7.42], + [-18.655, 1.451], + [-27.915, -3.278], + [-7.956, -10.998], + [-13.547, -6.504], + [-25.502, 10.861], + [1.56, 32.025], + [-2.745, 14.557], + [-9.975, 14.885], + [-1.308, 20], + [-0.014, 0.227], + [32.833, 10.798], + [0.003, 0.001], + [65.177, -34.214], + [4.73, -15.211], + ], + o: [ + [-1.27, 14.292], + [-4.824, 16.945], + [-8.411, 24.584], + [4.923, 11.545], + [15.139, 11.439], + [27.764, -2.159], + [15.404, 1.809], + [8.998, 12.439], + [24.952, 11.978], + [27.227, -11.596], + [-0.722, -14.815], + [3.446, -18.269], + [11.016, -16.439], + [0.015, -0.227], + [2.045, -34.503], + [0, 0], + [-70.886, -23.313], + [-14.104, 7.404], + [-0.893, 2.87], + ], + v: [ + [-171.011, -91.868], + [-171.49, -48.694], + [-195.97, -2.419], + [-193.762, 73.668], + [-171.828, 103.363], + [-118.198, 115.859], + [-33.223, 104.958], + [-5.16, 134.437], + [29.639, 163.149], + [110.039, 165.4], + [159.437, 93.462], + [155.53, 49.375], + [182.717, -0.427], + [201.709, -56.47], + [201.752, -57.151], + [149.201, -133.92], + [79.34, -156.896], + [-127.548, -145.224], + [-169.347, -100.55], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.882352948189, 0.886274516582, 0.996078431606, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "tr", + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [492.184, 486.224], + to: [0, 2], + ti: [2.167, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 50, + s: [492.184, 498.224], + to: [-2.167, 0], + ti: [0, 2], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 100, + s: [479.184, 486.224], + to: [0, -2], + ti: [-2.167, 0], + }, + { t: 150, s: [492.184, 486.224] }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [-13], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 50, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 100, + s: [-20], + }, + { t: 150, s: [-13] }, + ], + ix: 6, + }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 1, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [1.842, -4], + [-3.956, -19.29], + [4.899, -24.193], + [1.513, -14.581], + [-24.115, -14.246], + [-22.519, 0.309], + [-19.64, 5.032], + [-19.839, -2.016], + [-15.366, -5.319], + [-33.546, 19.331], + [-6.683, 21.663], + [4.004, 17.675], + [-2.155, 18.908], + [1.104, 13.215], + [4.727, 7.435], + [30.574, 10.015], + [29.956, -2.268], + [63.296, 13.538], + [23.912, -36.092], + ], + o: [ + [-8.245, 17.898], + [4.65, 22.678], + [-2.984, 14.736], + [-3.107, 29.94], + [19.587, 11.57], + [20.268, -0.278], + [18.927, -4.85], + [16.5, 1.677], + [36.685, 12.699], + [21.529, -12.406], + [5.341, -17.312], + [-4.11, -18.147], + [1.502, -13.176], + [-0.734, -8.781], + [-17.262, -27.149], + [-28.773, -9.426], + [-61.936, 4.688], + [-40.863, -8.74], + [-2.439, 3.681], + ], + v: [ + [-212.919, -92.593], + [-219.459, -34.771], + [-205.589, 29.523], + [-210.833, 72.491], + [-170.385, 143.057], + [-105.316, 158.66], + [-45.177, 149.607], + [12.094, 140.383], + [58.82, 154.511], + [173.491, 149.67], + [216.772, 95.453], + [218.787, 44.277], + [209.892, -11.07], + [216.316, -50.178], + [206.989, -74.632], + [130.249, -129.973], + [41.847, -143.956], + [-96.012, -162.644], + [-206.496, -104.136], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.882352948189, 0.886274516582, 0.996078431606, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [482.48, 480.055], + to: [1.5, -1.5], + ti: [-2.333, -1.5], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 50, + s: [491.48, 471.055], + to: [2.333, 1.5], + ti: [1.5, -1.5], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 100, + s: [496.48, 489.055], + to: [-1.5, 1.5], + ti: [2.333, 1.5], + }, + { t: 150, s: [482.48, 480.055] }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 50, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 100, + s: [8], + }, + { t: 150, s: [0] }, + ], + ix: 6, + }, + o: { a: 0, k: 47, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 2, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 176, + st: 0, + bm: 0, + }, + ], + markers: [], +}; + +export const column2Lottie = { + v: "5.5.9", + fr: 60, + ip: 0, + op: 300, + w: 1080, + h: 1080, + nm: "middle-lottie-animation", + ddd: 0, + assets: [], + fonts: { + list: [ + { + fName: "Nunito-Light", + fFamily: "Nunito", + fStyle: "Light", + ascent: 75.7487305440009, + }, + ], + }, + layers: [ + { + ddd: 0, + ind: 1, + ty: 4, + nm: "Layer 1 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [550.587, 825.739, 0], ix: 2 }, + a: { a: 0, k: [447.773, 13.388, 0], ix: 1 }, + s: { a: 0, k: [102.092, 102.092, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.97, 0], + [0, 0], + [0, 0.97], + [0, 0], + [-0.97, 0], + [0, 0], + [0, -0.971], + [0, 0], + ], + o: [ + [0, 0], + [-0.97, 0], + [0, 0], + [0, -0.971], + [0, 0], + [0.97, 0], + [0, 0], + [0, 0.97], + ], + v: [ + [434.717, 2.088], + [-434.716, 2.088], + [-436.473, 0.331], + [-436.473, -0.331], + [-434.716, -2.088], + [434.717, -2.088], + [436.473, -0.331], + [436.473, 0.331], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 4.52, ix: 5 }, + lc: 1, + lj: 1, + ml: 10, + bm: 0, + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [447.773, 13.388], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.97, 0], + [0, 0], + [0, 0.97], + [0, 0], + [-0.97, 0], + [0, 0], + [0, -0.971], + [0, 0], + ], + o: [ + [0, 0], + [-0.97, 0], + [0, 0], + [0, -0.971], + [0, 0], + [0.97, 0], + [0, 0], + [0, 0.97], + ], + v: [ + [434.717, 2.088], + [-434.716, 2.088], + [-436.473, 0.331], + [-436.473, -0.331], + [-434.716, -2.088], + [434.717, -2.088], + [436.473, -0.331], + [436.473, 0.331], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [447.773, 13.388], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 3, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 2, + ty: 4, + nm: "Layer 10 Outlines", + sr: 1, + ks: { + o: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 22, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 44, + s: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 67, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 97, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 119, + s: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 142, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 172, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 194, + s: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 217, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 247, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 269, + s: [100], + }, + { t: 292, s: [0] }, + ], + ix: 11, + }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 22, + s: [758.08, 706.031, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 67, + s: [758.08, 736.031, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 97, + s: [758.08, 706.031, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 142, + s: [758.08, 736.031, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 172, + s: [758.08, 706.031, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 217, + s: [758.08, 736.031, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 247, + s: [758.08, 706.031, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { t: 292, s: [758.08, 736.031, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [19.302, 23.844, 0], ix: 1 }, + s: { a: 0, k: [102.092, 102.092, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [2.08, 0], + [0, 2.08], + [0, 0], + [-2.08, 0], + [0, -2.08], + [0, 0], + ], + o: [ + [-2.08, 0], + [0, 0], + [0, -2.08], + [2.08, 0], + [0, 0], + [0, 2.08], + ], + v: [ + [0, 22.825], + [-3.766, 19.059], + [-3.766, -19.059], + [0, -22.825], + [3.766, -19.059], + [3.766, 19.059], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [19.295, 23.075], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [-1.471, 1.472], + [-1.471, -1.471], + [0, 0], + [0, 0], + [-1.461, -1.48], + [1.483, -1.46], + ], + o: [ + [0, 0], + [-1.471, -1.471], + [1.471, -1.471], + [0, 0], + [0, 0], + [1.485, -1.457], + [1.458, 1.485], + [0, 0], + ], + v: [ + [-0.154, 12.116], + [-17.581, -5.31], + [-17.581, -10.636], + [-12.255, -10.636], + [-0.111, 1.508], + [12.266, -10.659], + [17.594, -10.614], + [17.547, -5.286], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [19.301, 35.321], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 3, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 3, + ty: 4, + nm: "Layer 2 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [752.125, 728.662, 0], ix: 2 }, + a: { a: 0, k: [105.838, 95.55, 0], ix: 1 }, + s: { a: 0, k: [102.092, 102.092, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [4.708, 0], + [0, 0], + [0, 4.465], + [0, 0], + [-2.08, 0], + [0, -2.081], + [0, 0], + [-0.312, 0], + [0, 0], + [0, 0.555], + [0, 0], + [-2.08, 0], + [0, -2.081], + [0, 0], + ], + o: [ + [0, 0], + [-4.465, 0], + [0, 0], + [0, -2.081], + [2.08, 0], + [0, 0], + [0, 0.311], + [0, 0], + [0.555, 0], + [0, 0], + [0, -2.081], + [2.081, 0], + [0, 0], + [0, 4.708], + ], + v: [ + [27.73, 16.087], + [-28.168, 16.087], + [-36.267, 7.988], + [-36.267, -12.32], + [-32.501, -16.087], + [-28.736, -12.32], + [-28.736, 7.988], + [-28.168, 8.554], + [27.73, 8.554], + [28.734, 7.549], + [28.734, -12.32], + [32.501, -16.087], + [36.267, -12.32], + [36.267, 7.549], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [111.788, 126.99], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.833, 0], + [0, 0.833], + [0, 0], + [3.664, 0], + [0, 0], + [0, 0.833], + [-0.833, 0], + [0, 0], + [0, -5.022], + [0, 0], + ], + o: [ + [-0.833, 0], + [0, 0], + [0, -3.361], + [0, 0], + [-0.833, 0], + [0, -0.832], + [0, 0], + [5.325, 0], + [0, 0], + [0, 0.833], + ], + v: [ + [11.372, 15.319], + [9.865, 13.813], + [9.865, -6.212], + [3.221, -12.306], + [-11.372, -12.306], + [-12.878, -13.814], + [-11.372, -15.319], + [3.221, -15.319], + [12.878, -6.212], + [12.878, 13.813], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [188.146, 26.912], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 3, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -4.063], + [4.062, 0], + [0, 4.063], + [-4.063, 0], + ], + o: [ + [0, 4.063], + [-4.063, 0], + [0, -4.063], + [4.062, 0], + ], + v: [ + [7.357, 0], + [0, 7.356], + [-7.357, 0], + [0, -7.356], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [187.021, 166.588], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 3, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [7.25, -0.015], + [0, 0], + [-0.016, -7.251], + [0, 0], + [0, 0], + [-0.023, -11.081], + [0, 0], + [-11.079, 0.024], + [0, 0], + [0.024, 11.081], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [-7.25, 0.015], + [0, 0], + [0, 0], + [-11.079, 0.023], + [0, 0], + [0.024, 11.081], + [0, 0], + [11.078, -0.023], + [0, 0], + [0, 0], + [0, 0], + [-0.015, -7.252], + ], + v: [ + [78.931, -83.265], + [39.831, -83.183], + [26.677, -69.971], + [26.716, -51.256], + [-72.319, -51.048], + [-92.42, -30.859], + [-92.223, 63.16], + [-72.037, 83.264], + [72.319, 82.961], + [92.419, 62.772], + [92.226, -29.321], + [92.222, -31.247], + [92.14, -70.108], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.37254901960784315, 0.6078431372549019, 1, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [113.172, 102.531], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 3, + cix: 2, + bm: 0, + ix: 4, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [88.224, -93.041], + [88.238, -93.041], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [2.36, -2.369], + [-0.007, -3.315], + [0, 0], + [1.248, -0.003], + [0, 0], + [-0.023, -11.167], + [0, 0], + [-11.15, 0], + [0, 0], + [0, 0], + [-3.829, 3.846], + [0.012, 5.385], + [0, 0], + [2.369, 2.359], + [3.305, 0], + ], + o: [ + [0, 0], + [-3.315, 0.008], + [-2.358, 2.369], + [0, 0], + [0.003, 1.248], + [0, 0], + [-11.167, 0.024], + [0, 0], + [0.022, 11.153], + [0, 0], + [0, 0], + [5.385, -0.01], + [3.83, -3.844], + [0, 0], + [-0.006, -3.314], + [-2.362, -2.352], + [0, 0], + ], + v: [ + [88.227, -90.781], + [44.529, -90.689], + [35.728, -87.006], + [32.082, -78.191], + [32.125, -57.278], + [29.87, -55.014], + [-80.814, -54.782], + [-101.023, -34.486], + [-100.802, 70.57], + [-80.549, 90.781], + [-80.508, 90.781], + [80.828, 90.441], + [95.117, 84.459], + [101.038, 70.145], + [100.727, -78.335], + [97.042, -87.133], + [88.255, -90.781], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0.028, 13.642], + [0, 0], + [-13.661, 0.03], + [0, 0], + [0, 0], + [-3.212, 3.223], + [-4.523, 0.011], + [0, 0], + [0, 0], + [-3.217, -3.201], + [-0.009, -4.523], + [0, 0], + [4.682, -4.701], + [6.593, -0.014], + [0, 0], + ], + o: [ + [-13.639, 0], + [0, 0], + [-0.029, -13.658], + [0, 0], + [0, 0], + [-0.01, -4.521], + [3.21, -3.225], + [0, 0], + [0, 0], + [4.51, 0], + [3.223, 3.211], + [0, 0], + [0.014, 6.592], + [-4.681, 4.701], + [0, 0], + [0, 0], + ], + v: [ + [-80.549, 95.3], + [-105.323, 70.579], + [-105.544, -34.477], + [-80.823, -59.301], + [27.602, -59.529], + [27.563, -78.183], + [32.527, -90.193], + [44.519, -95.209], + [88.219, -95.3], + [88.255, -95.3], + [100.232, -90.337], + [105.246, -78.343], + [105.558, 70.136], + [98.32, 87.649], + [80.837, 94.96], + [-80.499, 95.3], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [105.823, 95.55], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 5", + np: 6, + cix: 2, + bm: 0, + ix: 5, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [8.103, -0.017], + [0, 0], + [-0.017, -8.103], + [0, 0], + [0, 0], + [-0.026, -12.382], + [0, 0], + [-12.382, 0.026], + [0, 0], + [0.026, 12.382], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [-8.103, 0.017], + [0, 0], + [0, 0], + [-12.382, 0.026], + [0, 0], + [0.026, 12.381], + [0, 0], + [12.382, -0.026], + [0, 0], + [0, 0], + [0, 0], + [-0.017, -8.102], + ], + v: [ + [88.216, -93.045], + [44.516, -92.952], + [29.815, -78.189], + [29.859, -57.278], + [-80.826, -57.045], + [-103.291, -34.485], + [-103.07, 70.571], + [-80.511, 93.036], + [80.826, 92.697], + [103.291, 70.137], + [103.075, -32.768], + [103.071, -34.92], + [102.979, -78.343], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.23921568627450981, 0.5215686274509804, 0.9921568627450981, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [105.83, 95.554], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 6", + np: 3, + cix: 2, + bm: 0, + ix: 6, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [8.28, 0], + [0, 0], + [0, 0], + [2.844, -2.858], + [-0.009, -4], + [0, 0], + [-8.281, 0], + [0, 0], + [0, 0], + [0.018, 8.297], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [-4, 0.009], + [-2.846, 2.857], + [0, 0], + [0.017, 8.286], + [0, 0], + [0, 0], + [8.296, -0.018], + [0, 0], + [-0.017, -8.284], + ], + v: [ + [86.501, -73.716], + [86.469, -73.716], + [-86.787, -73.353], + [-97.402, -68.909], + [-101.801, -58.275], + [-101.555, 58.7], + [-86.51, 73.716], + [-86.478, 73.716], + [86.778, 73.351], + [101.792, 58.273], + [101.546, -58.702], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0.021, 9.946], + [0, 0], + [-3.413, 3.426], + [-4.805, 0.01], + [0, 0], + [0, 0], + [-0.02, -9.945], + [0, 0], + [9.958, -0.021], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [-9.94, 0], + [0, 0], + [-0.011, -4.805], + [3.412, -3.428], + [0, 0], + [0, 0], + [9.94, 0], + [0, 0], + [0.021, 9.958], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-86.51, 76.729], + [-104.569, 58.706], + [-104.814, -58.269], + [-99.537, -71.035], + [-86.793, -76.366], + [86.463, -76.729], + [86.501, -76.729], + [104.559, -58.708], + [104.805, 58.267], + [86.783, 76.364], + [86.781, 74.857], + [86.783, 76.364], + [-86.472, 76.729], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [105.851, 105.877], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 7", + np: 5, + cix: 2, + bm: 0, + ix: 7, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [9.104, -0.019], + [0, 0], + [0.019, 9.104], + [0, 0], + [-9.104, 0.019], + [0, 0], + [-0.02, -9.104], + [0, 0], + ], + o: [ + [0, 0], + [-9.105, 0.019], + [0, 0], + [-0.019, -9.105], + [0, 0], + [9.104, -0.019], + [0, 0], + [0.019, 9.104], + ], + v: [ + [86.786, 74.858], + [-86.469, 75.223], + [-103.057, 58.704], + [-103.304, -58.271], + [-86.786, -74.858], + [86.471, -75.223], + [103.058, -58.704], + [103.303, 58.271], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [105.845, 105.876], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 8", + np: 3, + cix: 2, + bm: 0, + ix: 8, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0.018, 8.298], + [0, 0], + [8.281, 0], + [0, 0], + [0, 0], + [-0.017, -8.298], + [0, 0], + [-8.28, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [8.296, -0.018], + [0, 0], + [-0.018, -8.285], + [0, 0], + [0, 0], + [-8.296, 0.018], + [0, 0], + [0.018, 8.285], + [0, 0], + [0, 0], + ], + v: [ + [86.783, 73.352], + [86.786, 74.86], + [86.783, 73.352], + [101.797, 58.274], + [101.552, -58.701], + [86.505, -73.715], + [86.474, -73.715], + [-86.782, -73.352], + [-101.797, -58.274], + [-101.55, 58.702], + [-86.505, 73.715], + [-86.472, 73.715], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0.02, 9.946], + [0, 0], + [-9.958, 0.02], + [0, 0], + [0, 0], + [-0.021, -9.946], + [0, 0], + [9.958, -0.02], + [0, 0], + ], + o: [ + [-9.94, 0], + [0, 0], + [-0.021, -9.959], + [0, 0], + [0, 0], + [9.94, 0], + [0, 0], + [0.021, 9.959], + [0, 0], + [0, 0], + ], + v: [ + [-86.505, 76.73], + [-104.563, 58.708], + [-104.81, -58.268], + [-86.787, -76.365], + [86.468, -76.73], + [86.505, -76.73], + [104.565, -58.708], + [104.81, 58.268], + [86.789, 76.365], + [-86.467, 76.73], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [105.845, 96.496], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 9", + np: 5, + cix: 2, + bm: 0, + ix: 9, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [9.104, -0.019], + [0, 0], + [0.019, 9.104], + [0, 0], + [-9.104, 0.019], + [0, 0], + [-0.02, -9.104], + [0, 0], + ], + o: [ + [0, 0], + [-9.105, 0.019], + [0, 0], + [-0.019, -9.104], + [0, 0], + [9.104, -0.019], + [0, 0], + [0.019, 9.104], + ], + v: [ + [86.786, 74.858], + [-86.469, 75.223], + [-103.057, 58.704], + [-103.304, -58.272], + [-86.786, -74.858], + [86.471, -75.223], + [103.058, -58.704], + [103.303, 58.271], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [105.845, 96.496], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 10", + np: 3, + cix: 2, + bm: 0, + ix: 10, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [12.382, -0.026], + [0, 0], + [0.026, 12.382], + [0, 0], + [-12.382, 0.026], + [0, 0], + [-0.026, -12.382], + [0, 0], + ], + o: [ + [0, 0], + [-12.382, 0.026], + [0, 0], + [-0.026, -12.382], + [0, 0], + [12.382, -0.026], + [0, 0], + [0.026, 12.381], + ], + v: [ + [80.826, 74.871], + [-80.511, 75.21], + [-103.071, 52.745], + [-103.291, -52.312], + [-80.826, -74.871], + [80.511, -75.21], + [103.07, -52.745], + [103.291, 52.312], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [105.845, 87.116], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 11", + np: 3, + cix: 2, + bm: 0, + ix: 11, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [11.148, 0], + [0, 0], + [0, 0], + [-0.022, -11.167], + [0, 0], + [-3.845, -3.83], + [-5.368, 0], + [0, 0], + [0, 0], + [-3.831, 3.844], + [0.012, 5.385], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [-11.166, 0.024], + [0, 0], + [0.012, 5.385], + [3.835, 3.819], + [0, 0], + [0, 0], + [5.383, -0.012], + [3.829, -3.846], + [0, 0], + [-0.023, -11.152], + ], + v: [ + [80.557, -72.95], + [80.516, -72.95], + [-80.822, -72.612], + [-101.032, -52.316], + [-100.811, 52.741], + [-94.83, 67.03], + [-80.561, 72.95], + [-80.516, 72.95], + [80.822, 72.612], + [95.111, 66.631], + [101.031, 52.317], + [100.81, -52.741], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [80.826, 74.872], + [80.841, 74.872], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [4.688, 4.668], + [0.015, 6.592], + [0, 0], + [-13.66, 0.029], + [0, 0], + [0, 0], + [-0.029, -13.642], + [0, 0], + [13.66, -0.029], + [0, 0], + ], + o: [ + [-6.572, 0], + [-4.7, -4.682], + [0, 0], + [-0.028, -13.659], + [0, 0], + [0, 0], + [13.636, 0], + [0, 0], + [0.029, 13.658], + [0, 0], + [0, 0], + ], + v: [ + [-80.561, 77.47], + [-98.019, 70.233], + [-105.331, 52.75], + [-105.552, -52.307], + [-80.831, -77.131], + [80.507, -77.47], + [80.557, -77.47], + [105.33, -52.749], + [105.551, 52.308], + [80.831, 77.131], + [-80.508, 77.47], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [105.846, 87.116], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 12", + np: 6, + cix: 2, + bm: 0, + ix: 12, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [12.382, -0.026], + [0, 0], + [0.026, 12.382], + [0, 0], + [-12.382, 0.026], + [0, 0], + [-0.026, -12.382], + [0, 0], + ], + o: [ + [0, 0], + [-12.382, 0.026], + [0, 0], + [-0.026, -12.382], + [0, 0], + [12.382, -0.026], + [0, 0], + [0.026, 12.381], + ], + v: [ + [80.826, 74.871], + [-80.511, 75.21], + [-103.071, 52.745], + [-103.291, -52.312], + [-80.826, -74.871], + [80.511, -75.21], + [103.07, -52.745], + [103.291, 52.312], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.23921568627450981, 0.5215686274509804, 0.9921568627450981, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [105.846, 87.116], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 13", + np: 3, + cix: 2, + bm: 0, + ix: 13, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [11.148, 0], + [0, 0], + [0, 0], + [-0.022, -11.167], + [0, 0], + [-3.845, -3.83], + [-5.368, 0], + [0, 0], + [0, 0], + [-3.831, 3.844], + [0.012, 5.385], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [-11.166, 0.024], + [0, 0], + [0.012, 5.385], + [3.835, 3.819], + [0, 0], + [0, 0], + [5.383, -0.012], + [3.829, -3.846], + [0, 0], + [-0.023, -11.152], + ], + v: [ + [80.557, -72.95], + [80.516, -72.95], + [-80.822, -72.612], + [-101.032, -52.316], + [-100.811, 52.741], + [-94.83, 67.03], + [-80.561, 72.95], + [-80.516, 72.95], + [80.822, 72.612], + [95.111, 66.631], + [101.031, 52.317], + [100.81, -52.741], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [80.826, 74.872], + [80.841, 74.872], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [4.688, 4.668], + [0.015, 6.592], + [0, 0], + [-13.66, 0.029], + [0, 0], + [0, 0], + [-0.029, -13.642], + [0, 0], + [13.66, -0.029], + [0, 0], + ], + o: [ + [-6.572, 0], + [-4.7, -4.682], + [0, 0], + [-0.028, -13.659], + [0, 0], + [0, 0], + [13.636, 0], + [0, 0], + [0.029, 13.658], + [0, 0], + [0, 0], + ], + v: [ + [-80.561, 77.47], + [-98.019, 70.233], + [-105.331, 52.75], + [-105.552, -52.307], + [-80.831, -77.131], + [80.507, -77.47], + [80.557, -77.47], + [105.33, -52.749], + [105.551, 52.308], + [80.831, 77.131], + [-80.508, 77.47], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [105.846, 87.116], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 14", + np: 6, + cix: 2, + bm: 0, + ix: 14, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [12.382, -0.026], + [0, 0], + [0.026, 12.382], + [0, 0], + [-12.382, 0.026], + [0, 0], + [-0.026, -12.382], + [0, 0], + ], + o: [ + [0, 0], + [-12.382, 0.026], + [0, 0], + [-0.026, -12.382], + [0, 0], + [12.382, -0.026], + [0, 0], + [0.026, 12.381], + ], + v: [ + [80.826, 74.871], + [-80.511, 75.21], + [-103.071, 52.745], + [-103.291, -52.312], + [-80.826, -74.871], + [80.511, -75.21], + [103.07, -52.745], + [103.291, 52.312], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.238999998803, 0.522000002394, 0.991999966491, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [105.846, 87.116], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 15", + np: 3, + cix: 2, + bm: 0, + ix: 15, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 4, + ty: 4, + nm: "Layer 9 Outlines", + parent: 5, + sr: 1, + ks: { + o: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 0, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 22, + s: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 45, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 75, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 97, + s: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 120, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 150, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 172, + s: [100], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 195, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 225, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 247, + s: [100], + }, + { t: 270, s: [0] }, + ], + ix: 11, + }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 0, + s: [107.059, 101.262, 0], + to: [0, -4.571, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 45, + s: [107.059, 73.836, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 75, + s: [107.059, 101.262, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 120, + s: [107.059, 73.836, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 150, + s: [107.059, 101.262, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 195, + s: [107.059, 73.836, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 225, + s: [107.059, 101.262, 0], + to: [0, 0, 0], + ti: [0, 4.571, 0], + }, + { t: 270, s: [107.059, 73.836, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [19.301, 23.844, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [2.08, 0], + [0, 2.08], + [0, 0], + [-2.08, 0], + [0, -2.08], + [0, 0], + ], + o: [ + [-2.08, 0], + [0, 0], + [0, -2.08], + [2.08, 0], + [0, 0], + [0, 2.08], + ], + v: [ + [0, 22.825], + [-3.767, 19.059], + [-3.767, -19.059], + [0, -22.825], + [3.767, -19.059], + [3.767, 19.059], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [19.308, 24.613], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.953, 0], + [0.739, 0.748], + [-1.483, 1.46], + [0, 0], + [0, 0], + [1.471, -1.472], + [1.471, 1.471], + [0, 0], + [0, 0], + ], + o: [ + [-0.974, 0], + [-1.458, -1.485], + [0, 0], + [0, 0], + [1.471, 1.471], + [-1.471, 1.471], + [0, 0], + [0, 0], + [-0.734, 0.721], + ], + v: [ + [-14.906, 11.743], + [-17.593, 10.618], + [-17.548, 5.291], + [0.154, -12.111], + [17.581, 5.314], + [17.581, 10.64], + [12.255, 10.64], + [0.111, -1.503], + [-12.265, 10.663], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [19.301, 12.362], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 3, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 5, + ty: 4, + nm: "Layer 4 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 0, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 5, + s: [4], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 10, + s: [-3], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 14, + s: [2], + }, + { t: 19, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 0, + s: [334.844, 728.662, 0], + to: [-3.333, 0, 0], + ti: [-3.333, 0, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 5, + s: [314.844, 728.662, 0], + to: [3.333, 0, 0], + ti: [-3.333, 0, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 10, + s: [354.844, 728.662, 0], + to: [3.333, 0, 0], + ti: [3.333, 0, 0], + }, + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 14, + s: [334.844, 728.662, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { t: 19, s: [334.844, 728.662, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [105.83, 95.55, 0], ix: 1 }, + s: { a: 0, k: [102.092, 102.092, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [4.708, 0], + [0, 0], + [0, 4.465], + [0, 0], + [-2.08, 0], + [0, -2.081], + [0, 0], + [-0.312, 0], + [0, 0], + [0, 0.555], + [0, 0], + [-2.08, 0], + [0, -2.081], + [0, 0], + ], + o: [ + [0, 0], + [-4.465, 0], + [0, 0], + [0, -2.081], + [2.08, 0], + [0, 0], + [0, 0.311], + [0, 0], + [0.555, 0], + [0, 0], + [0, -2.081], + [2.081, 0], + [0, 0], + [0, 4.708], + ], + v: [ + [27.73, 16.087], + [-28.169, 16.087], + [-36.268, 7.988], + [-36.268, -12.32], + [-32.502, -16.087], + [-28.736, -12.32], + [-28.736, 7.988], + [-28.169, 8.554], + [27.73, 8.554], + [28.734, 7.549], + [28.734, -12.32], + [32.501, -16.087], + [36.268, -12.32], + [36.268, 7.549], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [107.09, 126.99], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.833, 0], + [0, 0.833], + [0, 0], + [3.665, 0], + [0, 0], + [0, 0.833], + [-0.833, 0], + [0, 0], + [0, -5.022], + [0, 0], + ], + o: [ + [-0.833, 0], + [0, 0], + [0, -3.361], + [0, 0], + [-0.833, 0], + [0, -0.832], + [0, 0], + [5.326, 0], + [0, 0], + [0, 0.833], + ], + v: [ + [11.372, 15.319], + [9.864, 13.813], + [9.864, -6.212], + [3.219, -12.306], + [-11.372, -12.306], + [-12.878, -13.814], + [-11.372, -15.319], + [3.219, -15.319], + [12.878, -6.212], + [12.878, 13.813], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [188.571, 26.912], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 3, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -4.063], + [4.063, 0], + [0, 4.063], + [-4.062, 0], + ], + o: [ + [0, 4.063], + [-4.062, 0], + [0, -4.063], + [4.063, 0], + ], + v: [ + [7.357, 0], + [-0.001, 7.356], + [-7.357, 0], + [-0.001, -7.356], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [187.445, 166.588], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 3, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [7.25, -0.015], + [0, 0], + [-0.015, -7.251], + [0, 0], + [0, 0], + [-0.023, -11.081], + [0, 0], + [-11.079, 0.024], + [0, 0], + [0.024, 11.081], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [-7.25, 0.015], + [0, 0], + [0, 0], + [-11.078, 0.023], + [0, 0], + [0.023, 11.081], + [0, 0], + [11.078, -0.023], + [0, 0], + [0, 0], + [0, 0], + [-0.015, -7.252], + ], + v: [ + [78.931, -83.265], + [39.831, -83.183], + [26.676, -69.971], + [26.716, -51.256], + [-72.32, -51.048], + [-92.42, -30.859], + [-92.222, 63.16], + [-72.037, 83.264], + [72.319, 82.961], + [92.419, 62.772], + [92.226, -29.321], + [92.222, -31.247], + [92.14, -70.108], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.1450980392156863, 0.5058823529411764, 0.5764705882352941, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [113.597, 102.531], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 3, + cix: 2, + bm: 0, + ix: 4, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [88.216, -93.041], + [88.231, -93.041], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [2.359, -2.369], + [-0.007, -3.315], + [0, 0], + [0.424, -0.426], + [0.6, -0.002], + [0, 0], + [-0.023, -11.167], + [0, 0], + [-11.147, 0], + [0, 0], + [0, 0], + [0.022, 11.169], + [0, 0], + [6.865, 0], + ], + o: [ + [0, 0], + [-3.315, 0.008], + [-2.359, 2.369], + [0, 0], + [0.002, 0.599], + [-0.422, 0.423], + [0, 0], + [-11.167, 0.024], + [0, 0], + [0.023, 11.153], + [0, 0], + [0, 0], + [11.165, -0.022], + [0, 0], + [-0.014, -6.867], + [0, 0], + ], + v: [ + [88.22, -90.781], + [44.521, -90.689], + [35.722, -87.006], + [32.075, -78.191], + [32.119, -57.278], + [31.46, -55.679], + [29.864, -55.014], + [-80.821, -54.782], + [-101.031, -34.486], + [-100.81, 70.57], + [-80.557, 90.781], + [-80.515, 90.781], + [80.823, 90.441], + [101.032, 70.145], + [100.72, -78.335], + [88.248, -90.781], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0.03, 13.642], + [0, 0], + [-13.661, 0.03], + [0, 0], + [0, 0], + [-3.211, 3.223], + [-4.523, 0.011], + [0, 0], + [0, 0], + [-0.021, -9.359], + [0, 0], + [13.658, -0.028], + [0, 0], + ], + o: [ + [-13.635, 0], + [0, 0], + [-0.029, -13.658], + [0, 0], + [0, 0], + [-0.01, -4.521], + [3.21, -3.225], + [0, 0], + [0, 0], + [9.353, 0], + [0, 0], + [0.028, 13.66], + [0, 0], + [0, 0], + ], + v: [ + [-80.557, 95.3], + [-105.33, 70.579], + [-105.551, -34.477], + [-80.83, -59.301], + [27.595, -59.529], + [27.555, -78.183], + [32.52, -90.193], + [44.512, -95.209], + [88.212, -95.3], + [88.248, -95.3], + [105.24, -78.343], + [105.552, 70.136], + [80.832, 94.96], + [-80.507, 95.3], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.11372549019607843, 0.4470588235294118, 0.5137254901960784, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [105.83, 95.55], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 5", + np: 6, + cix: 2, + bm: 0, + ix: 5, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [8.103, -0.017], + [0, 0], + [-0.017, -8.103], + [0, 0], + [0, 0], + [-0.026, -12.382], + [0, 0], + [-12.382, 0.026], + [0, 0], + [0.026, 12.382], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [-8.103, 0.017], + [0, 0], + [0, 0], + [-12.382, 0.026], + [0, 0], + [0.026, 12.381], + [0, 0], + [12.382, -0.026], + [0, 0], + [0, 0], + [0, 0], + [-0.017, -8.102], + ], + v: [ + [88.216, -93.045], + [44.516, -92.952], + [29.815, -78.189], + [29.859, -57.278], + [-80.826, -57.045], + [-103.291, -34.485], + [-103.071, 70.571], + [-80.511, 93.036], + [80.826, 92.697], + [103.291, 70.137], + [103.075, -32.768], + [103.07, -34.92], + [102.979, -78.343], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.07450980392156863, 0.41568627450980394, 0.4823529411764706, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [105.83, 95.554], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 6", + np: 3, + cix: 2, + bm: 0, + ix: 6, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [8.282, 0], + [0, 0], + [0, 0], + [2.844, -2.858], + [-0.009, -4], + [0, 0], + [-2.857, -2.846], + [-3.989, 0], + [0, 0], + [0, 0], + [0.018, 8.297], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [-4, 0.009], + [-2.846, 2.857], + [0, 0], + [0.008, 4], + [2.85, 2.838], + [0, 0], + [0, 0], + [8.296, -0.018], + [0, 0], + [-0.018, -8.284], + ], + v: [ + [86.5, -73.716], + [86.468, -73.716], + [-86.788, -73.353], + [-97.403, -68.909], + [-101.802, -58.275], + [-101.556, 58.7], + [-97.113, 69.317], + [-86.511, 73.716], + [-86.479, 73.716], + [86.777, 73.351], + [101.792, 58.273], + [101.547, -58.702], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [3.419, 3.404], + [0.011, 4.805], + [0, 0], + [-3.413, 3.426], + [-4.805, 0.01], + [0, 0], + [0, 0], + [-0.021, -9.945], + [0, 0], + [9.959, -0.021], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [-4.791, 0], + [-3.427, -3.414], + [0, 0], + [-0.011, -4.805], + [3.412, -3.428], + [0, 0], + [0, 0], + [9.941, 0], + [0, 0], + [0.02, 9.958], + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-86.511, 76.729], + [-99.239, 71.452], + [-104.57, 58.706], + [-104.815, -58.269], + [-99.538, -71.035], + [-86.794, -76.366], + [86.462, -76.729], + [86.5, -76.729], + [104.56, -58.708], + [104.806, 58.267], + [86.783, 76.364], + [86.78, 74.857], + [86.783, 76.364], + [-86.473, 76.729], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.11372549019607843, 0.4470588235294118, 0.5137254901960784, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [105.851, 105.877], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 7", + np: 5, + cix: 2, + bm: 0, + ix: 7, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [9.104, -0.019], + [0, 0], + [0.019, 9.104], + [0, 0], + [-9.104, 0.019], + [0, 0], + [-0.02, -9.104], + [0, 0], + ], + o: [ + [0, 0], + [-9.104, 0.019], + [0, 0], + [-0.019, -9.105], + [0, 0], + [9.104, -0.019], + [0, 0], + [0.019, 9.104], + ], + v: [ + [86.786, 74.858], + [-86.47, 75.223], + [-103.057, 58.704], + [-103.303, -58.271], + [-86.785, -74.858], + [86.471, -75.223], + [103.058, -58.704], + [103.303, 58.271], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [105.846, 105.876], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 8", + np: 3, + cix: 2, + bm: 0, + ix: 8, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 6, + ty: 4, + nm: "Layer 11 Outlines 2", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 139, + s: [-360], + }, + { t: 259, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 139, + s: [321.137, 729.512, 0], + to: [-73, -418.667, 0], + ti: [-13, -487.333, 0], + }, + { t: 259, s: [747.137, 725.512, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [63.201, 77.748, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 139, + s: [71.076, 71.076, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 199.201, + s: [100, 100, 100], + }, + { t: 259, s: [67.078, 67.078, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.733, 0], + [0.078, 0.012], + [0, 0], + [-0.125, 0.824], + [-0.839, -0.126], + [0, 0], + [0.125, -0.824], + ], + o: [ + [-0.075, 0], + [0, 0], + [-0.822, -0.123], + [0.124, -0.823], + [0, 0], + [0.823, 0.124], + [-0.111, 0.746], + ], + v: [ + [20.603, 4.685], + [20.374, 4.668], + [-20.828, -1.582], + [-22.09, -3.297], + [-20.374, -4.56], + [20.827, 1.69], + [22.09, 3.405], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [40.775, 117.451], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.733, 0], + [0.076, 0.012], + [0, 0], + [-0.125, 0.824], + [-0.826, -0.127], + [0, 0], + [0.125, -0.824], + ], + o: [ + [-0.075, 0], + [0, 0], + [-0.823, -0.124], + [0.125, -0.822], + [0, 0], + [0.823, 0.124], + [-0.113, 0.746], + ], + v: [ + [36.637, 7.119], + [36.408, 7.101], + [-36.861, -4.014], + [-38.124, -5.73], + [-36.408, -6.992], + [36.861, 4.123], + [38.124, 5.839], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [60.589, 94.971], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 3, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.733, 0], + [0.076, 0.012], + [0, 0], + [-0.125, 0.823], + [-0.825, -0.128], + [0, 0], + [0.125, -0.824], + ], + o: [ + [-0.075, 0], + [0, 0], + [-0.823, -0.124], + [0.126, -0.823], + [0, 0], + [0.823, 0.124], + [-0.113, 0.746], + ], + v: [ + [20.872, 4.728], + [20.644, 4.71], + [-21.096, -1.622], + [-22.359, -3.337], + [-20.643, -4.6], + [21.097, 1.732], + [22.359, 3.448], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [48.38, 69.133], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 3, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.733, 0], + [0.076, 0.012], + [0, 0], + [-0.125, 0.824], + [-0.828, -0.13], + [0, 0], + [0.125, -0.824], + ], + o: [ + [-0.075, 0], + [0, 0], + [-0.822, -0.124], + [0.125, -0.822], + [0, 0], + [0.823, 0.124], + [-0.113, 0.746], + ], + v: [ + [18.319, 4.342], + [18.091, 4.324], + [-18.544, -1.234], + [-19.806, -2.95], + [-18.091, -4.212], + [18.544, 1.346], + [19.806, 3.062], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [49.608, 43.833], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 3, + cix: 2, + bm: 0, + ix: 4, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.733, 0], + [0.076, 0.012], + [0, 0], + [-0.125, 0.824], + [-0.826, -0.128], + [0, 0], + [0.125, -0.824], + ], + o: [ + [-0.075, 0], + [0, 0], + [-0.822, -0.124], + [0.125, -0.822], + [0, 0], + [0.823, 0.124], + [-0.113, 0.746], + ], + v: [ + [10.727, 3.189], + [10.498, 3.171], + [-10.952, -0.083], + [-12.214, -1.799], + [-10.499, -3.061], + [10.951, 0.193], + [12.214, 1.909], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [93.835, 50.543], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 5", + np: 3, + cix: 2, + bm: 0, + ix: 5, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.733, 0], + [0.076, 0.012], + [0, 0], + [-0.125, 0.824], + [-0.821, -0.131], + [0, 0], + [0.126, -0.824], + ], + o: [ + [-0.075, 0], + [0, 0], + [-0.823, -0.124], + [0.125, -0.822], + [0, 0], + [0.823, 0.124], + [-0.113, 0.746], + ], + v: [ + [9.341, 2.98], + [9.113, 2.962], + [-9.566, 0.129], + [-10.829, -1.587], + [-9.113, -2.849], + [9.566, -0.016], + [10.828, 1.7], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [46.729, 23.157], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 6", + np: 3, + cix: 2, + bm: 0, + ix: 6, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-58.264, 58.268], + [38.378, 72.932], + [58.265, -58.149], + [-38.378, -72.812], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [0.886, 0], + [0.212, 0.033], + [0, 0], + [0.662, 0.901], + [-0.169, 1.107], + [0, 0], + [-0.901, 0.662], + [-1.103, -0.166], + [0, 0], + [-0.663, -0.901], + [0.166, -1.105], + [0, 0], + [0.9, -0.662], + ], + o: [ + [-0.211, 0], + [0, 0], + [-1.105, -0.167], + [-0.663, -0.901], + [0, 0], + [0.168, -1.105], + [0.899, -0.662], + [0, 0], + [1.105, 0.168], + [0.663, 0.9], + [0, 0], + [-0.167, 1.105], + [-0.727, 0.535], + ], + v: [ + [38.668, 77.497], + [38.032, 77.45], + [-59.273, 62.687], + [-62.016, 61.031], + [-62.782, 57.919], + [-42.797, -73.82], + [-41.141, -76.562], + [-38.033, -77.332], + [59.274, -62.568], + [62.016, -60.912], + [62.785, -57.804], + [42.796, 73.941], + [41.141, 76.682], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [63.201, 77.748], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 7", + np: 5, + cix: 2, + bm: 0, + ix: 7, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [1.051, 0.159], + [0, 0], + [-0.16, 1.05], + [0, 0], + [-1.051, -0.16], + [0, 0], + [0.159, -1.051], + [0, 0], + ], + o: [ + [0, 0], + [-1.051, -0.16], + [0, 0], + [0.159, -1.051], + [0, 0], + [1.051, 0.16], + [0, 0], + [-0.159, 1.051], + ], + v: [ + [38.371, 75.156], + [-58.935, 60.393], + [-60.549, 58.202], + [-40.561, -73.541], + [-38.37, -75.155], + [58.936, -60.392], + [60.55, -58.201], + [40.562, 73.542], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.226999993418, 0.681999954523, 0.834999952129, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [63.201, 77.807], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 8", + np: 3, + cix: 2, + bm: 0, + ix: 8, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 139, + op: 439, + st: 139, + bm: 0, + }, + { + ddd: 0, + ind: 7, + ty: 4, + nm: "Layer 11 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 31, + s: [-360], + }, + { t: 151, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 31, + s: [321.137, 729.512, 0], + to: [-73, -418.667, 0], + ti: [-13, -487.333, 0], + }, + { t: 151, s: [747.137, 725.512, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [63.201, 77.748, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 31, + s: [71.076, 71.076, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 91.201, + s: [100, 100, 100], + }, + { t: 151, s: [67.078, 67.078, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.733, 0], + [0.078, 0.012], + [0, 0], + [-0.125, 0.824], + [-0.839, -0.126], + [0, 0], + [0.125, -0.824], + ], + o: [ + [-0.075, 0], + [0, 0], + [-0.822, -0.123], + [0.124, -0.823], + [0, 0], + [0.823, 0.124], + [-0.111, 0.746], + ], + v: [ + [20.603, 4.685], + [20.374, 4.668], + [-20.828, -1.582], + [-22.09, -3.297], + [-20.374, -4.56], + [20.827, 1.69], + [22.09, 3.405], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [40.775, 117.451], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.733, 0], + [0.076, 0.012], + [0, 0], + [-0.125, 0.824], + [-0.826, -0.127], + [0, 0], + [0.125, -0.824], + ], + o: [ + [-0.075, 0], + [0, 0], + [-0.823, -0.124], + [0.125, -0.822], + [0, 0], + [0.823, 0.124], + [-0.113, 0.746], + ], + v: [ + [36.637, 7.119], + [36.408, 7.101], + [-36.861, -4.014], + [-38.124, -5.73], + [-36.408, -6.992], + [36.861, 4.123], + [38.124, 5.839], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [60.589, 94.971], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 3, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.733, 0], + [0.076, 0.012], + [0, 0], + [-0.125, 0.823], + [-0.825, -0.128], + [0, 0], + [0.125, -0.824], + ], + o: [ + [-0.075, 0], + [0, 0], + [-0.823, -0.124], + [0.126, -0.823], + [0, 0], + [0.823, 0.124], + [-0.113, 0.746], + ], + v: [ + [20.872, 4.728], + [20.644, 4.71], + [-21.096, -1.622], + [-22.359, -3.337], + [-20.643, -4.6], + [21.097, 1.732], + [22.359, 3.448], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [48.38, 69.133], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 3, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.733, 0], + [0.076, 0.012], + [0, 0], + [-0.125, 0.824], + [-0.828, -0.13], + [0, 0], + [0.125, -0.824], + ], + o: [ + [-0.075, 0], + [0, 0], + [-0.822, -0.124], + [0.125, -0.822], + [0, 0], + [0.823, 0.124], + [-0.113, 0.746], + ], + v: [ + [18.319, 4.342], + [18.091, 4.324], + [-18.544, -1.234], + [-19.806, -2.95], + [-18.091, -4.212], + [18.544, 1.346], + [19.806, 3.062], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [49.608, 43.833], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 3, + cix: 2, + bm: 0, + ix: 4, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.733, 0], + [0.076, 0.012], + [0, 0], + [-0.125, 0.824], + [-0.826, -0.128], + [0, 0], + [0.125, -0.824], + ], + o: [ + [-0.075, 0], + [0, 0], + [-0.822, -0.124], + [0.125, -0.822], + [0, 0], + [0.823, 0.124], + [-0.113, 0.746], + ], + v: [ + [10.727, 3.189], + [10.498, 3.171], + [-10.952, -0.083], + [-12.214, -1.799], + [-10.499, -3.061], + [10.951, 0.193], + [12.214, 1.909], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [93.835, 50.543], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 5", + np: 3, + cix: 2, + bm: 0, + ix: 5, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.733, 0], + [0.076, 0.012], + [0, 0], + [-0.125, 0.824], + [-0.821, -0.131], + [0, 0], + [0.126, -0.824], + ], + o: [ + [-0.075, 0], + [0, 0], + [-0.823, -0.124], + [0.125, -0.822], + [0, 0], + [0.823, 0.124], + [-0.113, 0.746], + ], + v: [ + [9.341, 2.98], + [9.113, 2.962], + [-9.566, 0.129], + [-10.829, -1.587], + [-9.113, -2.849], + [9.566, -0.016], + [10.828, 1.7], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [46.729, 23.157], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 6", + np: 3, + cix: 2, + bm: 0, + ix: 6, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-58.264, 58.268], + [38.378, 72.932], + [58.265, -58.149], + [-38.378, -72.812], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [0.886, 0], + [0.212, 0.033], + [0, 0], + [0.662, 0.901], + [-0.169, 1.107], + [0, 0], + [-0.901, 0.662], + [-1.103, -0.166], + [0, 0], + [-0.663, -0.901], + [0.166, -1.105], + [0, 0], + [0.9, -0.662], + ], + o: [ + [-0.211, 0], + [0, 0], + [-1.105, -0.167], + [-0.663, -0.901], + [0, 0], + [0.168, -1.105], + [0.899, -0.662], + [0, 0], + [1.105, 0.168], + [0.663, 0.9], + [0, 0], + [-0.167, 1.105], + [-0.727, 0.535], + ], + v: [ + [38.668, 77.497], + [38.032, 77.45], + [-59.273, 62.687], + [-62.016, 61.031], + [-62.782, 57.919], + [-42.797, -73.82], + [-41.141, -76.562], + [-38.033, -77.332], + [59.274, -62.568], + [62.016, -60.912], + [62.785, -57.804], + [42.796, 73.941], + [41.141, 76.682], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [63.201, 77.748], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 7", + np: 5, + cix: 2, + bm: 0, + ix: 7, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [1.051, 0.159], + [0, 0], + [-0.16, 1.05], + [0, 0], + [-1.051, -0.16], + [0, 0], + [0.159, -1.051], + [0, 0], + ], + o: [ + [0, 0], + [-1.051, -0.16], + [0, 0], + [0.159, -1.051], + [0, 0], + [1.051, 0.16], + [0, 0], + [-0.159, 1.051], + ], + v: [ + [38.371, 75.156], + [-58.935, 60.393], + [-60.549, 58.202], + [-40.561, -73.541], + [-38.37, -75.155], + [58.936, -60.392], + [60.55, -58.201], + [40.562, 73.542], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.226999993418, 0.681999954523, 0.834999952129, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [63.201, 77.807], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 8", + np: 3, + cix: 2, + bm: 0, + ix: 8, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 31, + op: 331, + st: 31, + bm: 0, + }, + { + ddd: 0, + ind: 8, + ty: 4, + nm: "Layer 12 Outlines 5", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 83, + s: [360], + }, + { t: 203, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 83, + s: [318.45, 739.698, 0], + to: [77, -535.667, 0], + ti: [45, -224.333, 0], + }, + { t: 203, s: [756.45, 729.698, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [75.522, 85.003, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 83, + s: [53.907, 53.907, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 143.201, + s: [100, 100, 100], + }, + { t: 203, s: [66.459, 66.459, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-1.238, -1.261], + [1.262, -1.237], + [1.238, 1.261], + [-1.262, 1.238], + ], + o: [ + [1.238, 1.261], + [-1.261, 1.238], + [-1.238, -1.262], + [1.261, -1.238], + ], + v: [ + [2.284, -2.241], + [2.241, 2.284], + [-2.284, 2.242], + [-2.241, -2.284], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [54.56, 25.871], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.48, 0], + [0.424, 0.168], + [0.378, 0.874], + [0, 0], + [-0.381, 0.166], + [-0.166, -0.381], + [0, 0], + [-0.51, -0.201], + [-0.502, 0.218], + [0, 0], + [0.349, 0.803], + [0, 0], + [0.831, -0.356], + [0, 0], + [-0.382, -0.882], + [0, 0], + [0.381, -0.166], + [0.166, 0.383], + [0, 0], + [-1.645, 0.712], + [0, 0], + [-0.69, -1.59], + [0, 0], + [1.566, -0.68], + [0, 0], + ], + o: [ + [-0.443, 0], + [-0.886, -0.35], + [0, 0], + [-0.165, -0.383], + [0.384, -0.166], + [0, 0], + [0.218, 0.504], + [0.515, 0.205], + [0, 0], + [0.804, -0.349], + [0, 0], + [-0.359, -0.829], + [0, 0], + [-0.883, 0.381], + [0, 0], + [0.166, 0.383], + [-0.378, 0.168], + [0, 0], + [-0.714, -1.648], + [0, 0], + [1.587, -0.686], + [0, 0], + [0.677, 1.565], + [0, 0], + [-0.453, 0.197], + ], + v: [ + [2.373, 9.217], + [1.062, 8.965], + [-0.898, 7.067], + [-2.884, 2.486], + [-2.493, 1.494], + [-1.501, 1.886], + [0.485, 6.469], + [1.615, 7.563], + [3.188, 7.538], + [3.523, 7.394], + [4.349, 5.305], + [-0.677, -6.295], + [-2.835, -7.148], + [-3.406, -6.899], + [-4.314, -4.606], + [-4.19, -4.322], + [-4.579, -3.33], + [-5.57, -3.719], + [-5.695, -4.005], + [-4.005, -8.282], + [-3.434, -8.531], + [0.706, -6.895], + [5.732, 4.706], + [4.122, 8.777], + [3.787, 8.921], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [33.101, 31.531], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 3, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [27.882, 14.726], + [27.897, 14.726], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [0.586, 0], + [0.195, -0.084], + [0, 0], + [0.149, -0.377], + [-0.16, -0.371], + [0, 0], + [-0.377, -0.149], + [-0.374, 0.158], + [0, 0], + [-0.149, 0.375], + [0.161, 0.371], + [0, 0], + ], + o: [ + [-0.2, 0], + [0, 0], + [-0.371, 0.161], + [-0.149, 0.375], + [0, 0], + [0.16, 0.371], + [0.374, 0.15], + [0, 0], + [0.371, -0.16], + [0.149, -0.376], + [0, 0], + [-0.248, -0.569], + ], + v: [ + [9.747, -28.637], + [9.147, -28.515], + [-27.283, -12.73], + [-28.088, -11.898], + [-28.071, -10.739], + [-11.136, 28.342], + [-10.305, 29.146], + [-9.147, 29.128], + [27.283, 13.343], + [28.088, 12.512], + [28.07, 11.355], + [11.138, -27.727], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [0.61, 0], + [0.539, 0.213], + [0.481, 1.109], + [0, 0], + [-0.444, 1.124], + [-1.109, 0.481], + [0, 0], + [-0.992, -2.292], + [0, 0], + [0.444, -1.124], + [1.109, -0.48], + [0, 0], + [0, 0], + ], + o: [ + [-0.564, 0], + [-1.125, -0.445], + [0, 0], + [-0.48, -1.109], + [0.444, -1.126], + [0, 0], + [2.29, -0.99], + [0, 0], + [0.479, 1.11], + [-0.444, 1.124], + [0, 0], + [0, 0], + [-0.577, 0.25], + ], + v: [ + [-9.747, 32.269], + [-11.413, 31.95], + [-13.902, 29.54], + [-30.835, -9.542], + [-30.891, -13.006], + [-28.481, -15.494], + [7.949, -31.278], + [13.902, -28.925], + [30.835, 10.157], + [30.891, 13.62], + [28.481, 16.109], + [28.481, 16.11], + [-7.949, 31.894], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [46.445, 46.724], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 6, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [1.53, -0.663], + [0, 0], + [0.663, 1.53], + [0, 0], + [-1.53, 0.663], + [0, 0], + [-0.664, -1.53], + [0, 0], + ], + o: [ + [0, 0], + [-1.53, 0.663], + [0, 0], + [-0.663, -1.531], + [0, 0], + [1.531, -0.663], + [0, 0], + [0.663, 1.53], + ], + v: [ + [27.882, 14.419], + [-8.549, 30.204], + [-12.52, 28.633], + [-29.452, -10.447], + [-27.882, -14.42], + [8.548, -30.204], + [12.52, -28.633], + [29.452, 10.449], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [46.446, 47.031], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 3, + cix: 2, + bm: 0, + ix: 4, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.19, 0], + [0.239, 0.584], + [-0.771, 0.314], + [0, 0], + [-0.315, -0.773], + [0.771, -0.315], + [0, 0], + ], + o: [ + [-0.593, 0], + [-0.315, -0.77], + [0, 0], + [0.764, -0.316], + [0.314, 0.769], + [0, 0], + [-0.185, 0.077], + ], + v: [ + [-21.127, 10.24], + [-22.522, 9.303], + [-21.696, 7.339], + [20.558, -9.924], + [22.523, -9.098], + [21.697, -7.134], + [-20.558, 10.128], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [71.61, 119.104], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 5", + np: 3, + cix: 2, + bm: 0, + ix: 5, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.19, 0], + [0.239, 0.584], + [-0.771, 0.314], + [0, 0], + [-0.315, -0.771], + [0.771, -0.315], + [0, 0], + ], + o: [ + [-0.593, 0], + [-0.315, -0.77], + [0, 0], + [0.764, -0.316], + [0.315, 0.769], + [0, 0], + [-0.185, 0.077], + ], + v: [ + [-8.345, 5.018], + [-9.74, 4.082], + [-8.914, 2.118], + [7.777, -4.702], + [9.741, -3.876], + [8.916, -1.913], + [-7.777, 4.906], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [53.443, 105.821], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 6", + np: 3, + cix: 2, + bm: 0, + ix: 6, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.19, 0], + [0.239, 0.584], + [-0.771, 0.315], + [0, 0], + [-0.315, -0.771], + [0.771, -0.315], + [0, 0], + ], + o: [ + [-0.593, 0], + [-0.315, -0.77], + [0, 0], + [0.768, -0.318], + [0.315, 0.77], + [0, 0], + [-0.186, 0.077], + ], + v: [ + [-13.634, 7.179], + [-15.029, 6.242], + [-14.203, 4.278], + [13.065, -6.861], + [15.029, -6.036], + [14.204, -4.072], + [-13.065, 7.067], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [100.067, 86.774], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 7", + np: 3, + cix: 2, + bm: 0, + ix: 7, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.19, 0], + [0.239, 0.584], + [-0.771, 0.314], + [0, 0], + [-0.315, -0.773], + [0.771, -0.315], + [0, 0], + ], + o: [ + [-0.593, 0], + [-0.315, -0.77], + [0, 0], + [0.764, -0.317], + [0.315, 0.769], + [0, 0], + [-0.185, 0.077], + ], + v: [ + [-34.301, 15.622], + [-35.696, 14.686], + [-34.87, 12.722], + [33.732, -15.305], + [35.696, -14.479], + [34.871, -12.516], + [-33.732, 15.51], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [72.916, 79.347], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 8", + np: 3, + cix: 2, + bm: 0, + ix: 8, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.19, 0], + [0.239, 0.584], + [-0.771, 0.315], + [0, 0], + [-0.316, -0.77], + [0.771, -0.315], + [0, 0], + ], + o: [ + [-0.593, 0], + [-0.315, -0.77], + [0, 0], + [0.762, -0.316], + [0.315, 0.77], + [0, 0], + [-0.185, 0.077], + ], + v: [ + [-7.833, 4.809], + [-9.229, 3.873], + [-8.402, 1.909], + [7.265, -4.493], + [9.229, -3.669], + [8.404, -1.703], + [-7.265, 4.697], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [89.856, 45.21], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 9", + np: 3, + cix: 2, + bm: 0, + ix: 9, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [70.399, 43.036], + [70.396, 43.036], + [70.399, 43.035], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [71.255, 45.127], + [71.269, 45.127], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-70.538, -42.605], + [-20.398, 80.128], + [70.092, 43.161], + [19.95, -79.572], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 3, + ty: "sh", + ix: 4, + ks: { + a: 0, + k: { + i: [ + [0.536, 0], + [0.521, 0.219], + [0.422, 1.035], + [0, 0], + [-0.433, 1.031], + [-1.035, 0.422], + [0, 0], + [-0.872, -2.134], + [0, 0], + [2.134, -0.874], + [0, 0], + [0, 0], + ], + o: [ + [-0.548, 0], + [-1.032, -0.433], + [0, 0], + [-0.424, -1.033], + [0.432, -1.031], + [0, 0], + [2.142, -0.87], + [0, 0], + [0.871, 2.135], + [0, 0.002], + [0, 0], + [-0.51, 0.209], + ], + v: [ + [-20.583, 84.753], + [-22.202, 84.423], + [-24.456, 82.148], + [-74.848, -41.206], + [-74.833, -44.409], + [-72.557, -46.663], + [18.553, -83.883], + [24.007, -81.592], + [74.402, 41.762], + [72.111, 47.217], + [72.11, 47.219], + [-19.001, 84.439], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 4", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [75.522, 85.003], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 10", + np: 7, + cix: 2, + bm: 0, + ix: 10, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.984, -0.402], + [0, 0], + [0.402, 0.984], + [0, 0], + [-0.983, 0.402], + [0, 0], + [-0.402, -0.984], + [0, 0], + ], + o: [ + [0, 0], + [-0.984, 0.402], + [0, 0], + [-0.402, -0.984], + [0, 0], + [0.984, -0.402], + [0, 0], + [0.402, 0.984], + ], + v: [ + [71.479, 44.848], + [-19.631, 82.068], + [-22.141, 81.016], + [-72.533, -42.339], + [-71.48, -44.849], + [19.631, -82.069], + [22.14, -81.014], + [72.533, 42.34], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [75.299, 85.281], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 11", + np: 3, + cix: 2, + bm: 0, + ix: 11, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 83, + op: 383, + st: 83, + bm: 0, + }, + { + ddd: 0, + ind: 9, + ty: 4, + nm: "Layer 12 Outlines 2", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [360], + }, + { t: 120, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [318.45, 739.698, 0], + to: [77, -535.667, 0], + ti: [45, -224.333, 0], + }, + { t: 120, s: [756.45, 729.698, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [75.522, 85.003, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [53.907, 53.907, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 60.201, + s: [100, 100, 100], + }, + { t: 120, s: [66.459, 66.459, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-1.238, -1.261], + [1.262, -1.237], + [1.238, 1.261], + [-1.262, 1.238], + ], + o: [ + [1.238, 1.261], + [-1.261, 1.238], + [-1.238, -1.262], + [1.261, -1.238], + ], + v: [ + [2.284, -2.241], + [2.241, 2.284], + [-2.284, 2.242], + [-2.241, -2.284], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [54.56, 25.871], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.48, 0], + [0.424, 0.168], + [0.378, 0.874], + [0, 0], + [-0.381, 0.166], + [-0.166, -0.381], + [0, 0], + [-0.51, -0.201], + [-0.502, 0.218], + [0, 0], + [0.349, 0.803], + [0, 0], + [0.831, -0.356], + [0, 0], + [-0.382, -0.882], + [0, 0], + [0.381, -0.166], + [0.166, 0.383], + [0, 0], + [-1.645, 0.712], + [0, 0], + [-0.69, -1.59], + [0, 0], + [1.566, -0.68], + [0, 0], + ], + o: [ + [-0.443, 0], + [-0.886, -0.35], + [0, 0], + [-0.165, -0.383], + [0.384, -0.166], + [0, 0], + [0.218, 0.504], + [0.515, 0.205], + [0, 0], + [0.804, -0.349], + [0, 0], + [-0.359, -0.829], + [0, 0], + [-0.883, 0.381], + [0, 0], + [0.166, 0.383], + [-0.378, 0.168], + [0, 0], + [-0.714, -1.648], + [0, 0], + [1.587, -0.686], + [0, 0], + [0.677, 1.565], + [0, 0], + [-0.453, 0.197], + ], + v: [ + [2.373, 9.217], + [1.062, 8.965], + [-0.898, 7.067], + [-2.884, 2.486], + [-2.493, 1.494], + [-1.501, 1.886], + [0.485, 6.469], + [1.615, 7.563], + [3.188, 7.538], + [3.523, 7.394], + [4.349, 5.305], + [-0.677, -6.295], + [-2.835, -7.148], + [-3.406, -6.899], + [-4.314, -4.606], + [-4.19, -4.322], + [-4.579, -3.33], + [-5.57, -3.719], + [-5.695, -4.005], + [-4.005, -8.282], + [-3.434, -8.531], + [0.706, -6.895], + [5.732, 4.706], + [4.122, 8.777], + [3.787, 8.921], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [33.101, 31.531], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 3, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [27.882, 14.726], + [27.897, 14.726], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [0.586, 0], + [0.195, -0.084], + [0, 0], + [0.149, -0.377], + [-0.16, -0.371], + [0, 0], + [-0.377, -0.149], + [-0.374, 0.158], + [0, 0], + [-0.149, 0.375], + [0.161, 0.371], + [0, 0], + ], + o: [ + [-0.2, 0], + [0, 0], + [-0.371, 0.161], + [-0.149, 0.375], + [0, 0], + [0.16, 0.371], + [0.374, 0.15], + [0, 0], + [0.371, -0.16], + [0.149, -0.376], + [0, 0], + [-0.248, -0.569], + ], + v: [ + [9.747, -28.637], + [9.147, -28.515], + [-27.283, -12.73], + [-28.088, -11.898], + [-28.071, -10.739], + [-11.136, 28.342], + [-10.305, 29.146], + [-9.147, 29.128], + [27.283, 13.343], + [28.088, 12.512], + [28.07, 11.355], + [11.138, -27.727], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [0.61, 0], + [0.539, 0.213], + [0.481, 1.109], + [0, 0], + [-0.444, 1.124], + [-1.109, 0.481], + [0, 0], + [-0.992, -2.292], + [0, 0], + [0.444, -1.124], + [1.109, -0.48], + [0, 0], + [0, 0], + ], + o: [ + [-0.564, 0], + [-1.125, -0.445], + [0, 0], + [-0.48, -1.109], + [0.444, -1.126], + [0, 0], + [2.29, -0.99], + [0, 0], + [0.479, 1.11], + [-0.444, 1.124], + [0, 0], + [0, 0], + [-0.577, 0.25], + ], + v: [ + [-9.747, 32.269], + [-11.413, 31.95], + [-13.902, 29.54], + [-30.835, -9.542], + [-30.891, -13.006], + [-28.481, -15.494], + [7.949, -31.278], + [13.902, -28.925], + [30.835, 10.157], + [30.891, 13.62], + [28.481, 16.109], + [28.481, 16.11], + [-7.949, 31.894], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [46.445, 46.724], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 6, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [1.53, -0.663], + [0, 0], + [0.663, 1.53], + [0, 0], + [-1.53, 0.663], + [0, 0], + [-0.664, -1.53], + [0, 0], + ], + o: [ + [0, 0], + [-1.53, 0.663], + [0, 0], + [-0.663, -1.531], + [0, 0], + [1.531, -0.663], + [0, 0], + [0.663, 1.53], + ], + v: [ + [27.882, 14.419], + [-8.549, 30.204], + [-12.52, 28.633], + [-29.452, -10.447], + [-27.882, -14.42], + [8.548, -30.204], + [12.52, -28.633], + [29.452, 10.449], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [46.446, 47.031], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 3, + cix: 2, + bm: 0, + ix: 4, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.19, 0], + [0.239, 0.584], + [-0.771, 0.314], + [0, 0], + [-0.315, -0.773], + [0.771, -0.315], + [0, 0], + ], + o: [ + [-0.593, 0], + [-0.315, -0.77], + [0, 0], + [0.764, -0.316], + [0.314, 0.769], + [0, 0], + [-0.185, 0.077], + ], + v: [ + [-21.127, 10.24], + [-22.522, 9.303], + [-21.696, 7.339], + [20.558, -9.924], + [22.523, -9.098], + [21.697, -7.134], + [-20.558, 10.128], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [71.61, 119.104], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 5", + np: 3, + cix: 2, + bm: 0, + ix: 5, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.19, 0], + [0.239, 0.584], + [-0.771, 0.314], + [0, 0], + [-0.315, -0.771], + [0.771, -0.315], + [0, 0], + ], + o: [ + [-0.593, 0], + [-0.315, -0.77], + [0, 0], + [0.764, -0.316], + [0.315, 0.769], + [0, 0], + [-0.185, 0.077], + ], + v: [ + [-8.345, 5.018], + [-9.74, 4.082], + [-8.914, 2.118], + [7.777, -4.702], + [9.741, -3.876], + [8.916, -1.913], + [-7.777, 4.906], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [53.443, 105.821], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 6", + np: 3, + cix: 2, + bm: 0, + ix: 6, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.19, 0], + [0.239, 0.584], + [-0.771, 0.315], + [0, 0], + [-0.315, -0.771], + [0.771, -0.315], + [0, 0], + ], + o: [ + [-0.593, 0], + [-0.315, -0.77], + [0, 0], + [0.768, -0.318], + [0.315, 0.77], + [0, 0], + [-0.186, 0.077], + ], + v: [ + [-13.634, 7.179], + [-15.029, 6.242], + [-14.203, 4.278], + [13.065, -6.861], + [15.029, -6.036], + [14.204, -4.072], + [-13.065, 7.067], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [100.067, 86.774], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 7", + np: 3, + cix: 2, + bm: 0, + ix: 7, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.19, 0], + [0.239, 0.584], + [-0.771, 0.314], + [0, 0], + [-0.315, -0.773], + [0.771, -0.315], + [0, 0], + ], + o: [ + [-0.593, 0], + [-0.315, -0.77], + [0, 0], + [0.764, -0.317], + [0.315, 0.769], + [0, 0], + [-0.185, 0.077], + ], + v: [ + [-34.301, 15.622], + [-35.696, 14.686], + [-34.87, 12.722], + [33.732, -15.305], + [35.696, -14.479], + [34.871, -12.516], + [-33.732, 15.51], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [72.916, 79.347], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 8", + np: 3, + cix: 2, + bm: 0, + ix: 8, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.19, 0], + [0.239, 0.584], + [-0.771, 0.315], + [0, 0], + [-0.316, -0.77], + [0.771, -0.315], + [0, 0], + ], + o: [ + [-0.593, 0], + [-0.315, -0.77], + [0, 0], + [0.762, -0.316], + [0.315, 0.77], + [0, 0], + [-0.185, 0.077], + ], + v: [ + [-7.833, 4.809], + [-9.229, 3.873], + [-8.402, 1.909], + [7.265, -4.493], + [9.229, -3.669], + [8.404, -1.703], + [-7.265, 4.697], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [89.856, 45.21], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 9", + np: 3, + cix: 2, + bm: 0, + ix: 9, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [70.399, 43.036], + [70.396, 43.036], + [70.399, 43.035], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [71.255, 45.127], + [71.269, 45.127], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-70.538, -42.605], + [-20.398, 80.128], + [70.092, 43.161], + [19.95, -79.572], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 3, + ty: "sh", + ix: 4, + ks: { + a: 0, + k: { + i: [ + [0.536, 0], + [0.521, 0.219], + [0.422, 1.035], + [0, 0], + [-0.433, 1.031], + [-1.035, 0.422], + [0, 0], + [-0.872, -2.134], + [0, 0], + [2.134, -0.874], + [0, 0], + [0, 0], + ], + o: [ + [-0.548, 0], + [-1.032, -0.433], + [0, 0], + [-0.424, -1.033], + [0.432, -1.031], + [0, 0], + [2.142, -0.87], + [0, 0], + [0.871, 2.135], + [0, 0.002], + [0, 0], + [-0.51, 0.209], + ], + v: [ + [-20.583, 84.753], + [-22.202, 84.423], + [-24.456, 82.148], + [-74.848, -41.206], + [-74.833, -44.409], + [-72.557, -46.663], + [18.553, -83.883], + [24.007, -81.592], + [74.402, 41.762], + [72.111, 47.217], + [72.11, 47.219], + [-19.001, 84.439], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 4", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [75.522, 85.003], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 10", + np: 7, + cix: 2, + bm: 0, + ix: 10, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.984, -0.402], + [0, 0], + [0.402, 0.984], + [0, 0], + [-0.983, 0.402], + [0, 0], + [-0.402, -0.984], + [0, 0], + ], + o: [ + [0, 0], + [-0.984, 0.402], + [0, 0], + [-0.402, -0.984], + [0, 0], + [0.984, -0.402], + [0, 0], + [0.402, 0.984], + ], + v: [ + [71.479, 44.848], + [-19.631, 82.068], + [-22.141, 81.016], + [-72.533, -42.339], + [-71.48, -44.849], + [19.631, -82.069], + [22.14, -81.014], + [72.533, 42.34], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [75.299, 85.281], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 11", + np: 3, + cix: 2, + bm: 0, + ix: 11, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 10, + ty: 3, + nm: "Layer 12 Outlines 7", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 162, + s: [0], + }, + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 201, + s: [-56], + }, + { t: 282, s: [53.642] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.833, y: 0.833 }, + o: { x: 0.167, y: 0.167 }, + t: 162, + s: [318.45, 739.698, 0], + to: [77, -535.667, 0], + ti: [45, -224.333, 0], + }, + { t: 282, s: [756.45, 729.698, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [75.522, 85.003, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.833, 0.833, 0.833], y: [0.833, 0.833, 0.833] }, + o: { x: [0.167, 0.167, 0.167], y: [0.167, 0.167, 0.167] }, + t: 162, + s: [53.907, 53.907, 100], + }, + { + i: { x: [0.833, 0.833, 0.833], y: [0.833, 0.833, 0.833] }, + o: { x: [0.167, 0.167, 0.167], y: [0.167, 0.167, 0.167] }, + t: 222.201, + s: [62.999, 62.999, 100], + }, + { t: 282, s: [66.459, 66.459, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 162, + op: 462, + st: 162, + bm: 0, + }, + { + ddd: 0, + ind: 11, + ty: 5, + nm: "tookaa.ir", + cl: "ir", + parent: 10, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [103.339, 87.764, 0], ix: 2 }, + a: { a: 0, k: [-1.961, -22.467, 0], ix: 1 }, + s: { a: 0, k: [102.643, 102.643, 100], ix: 6 }, + }, + ao: 0, + t: { + d: { + k: [ + { + s: { + s: 63, + f: "Nunito-Light", + t: "tookaa.ir", + j: 2, + tr: -25, + lh: 75.6, + ls: 0, + fc: [1, 0.706, 0.31], + }, + t: 0, + }, + ], + }, + p: {}, + m: { g: 1, a: { a: 0, k: [0, 0], ix: 2 } }, + a: [], + }, + ip: 162, + op: 462, + st: 162, + bm: 0, + }, + { + ddd: 0, + ind: 12, + ty: 3, + nm: "Layer 12 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 33, + s: [360], + }, + { t: 153, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 33, + s: [318.45, 739.698, 0], + to: [77, -535.667, 0], + ti: [45, -224.333, 0], + }, + { t: 153, s: [756.45, 729.698, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [75.522, 85.003, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 33, + s: [53.907, 53.907, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 93.201, + s: [100, 100, 100], + }, + { t: 153, s: [66.459, 66.459, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 33, + op: 333, + st: 33, + bm: 0, + }, + { + ddd: 0, + ind: 13, + ty: 4, + nm: "Layer 6 Outlines", + parent: 12, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [94.176, 72.558, 0], ix: 2 }, + a: { a: 0, k: [76.107, 85.049, 0], ix: 1 }, + s: { a: 0, k: [91.425, 91.425, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.197, 0], + [0.244, 0.574], + [-0.766, 0.325], + [0, 0], + [-0.327, -0.766], + [0.767, -0.325], + [0, 0], + ], + o: [ + [-0.586, 0], + [-0.326, -0.765], + [0, 0], + [0.761, -0.322], + [0.325, 0.765], + [0, 0], + [-0.191, 0.081], + ], + v: [ + [-21.008, 10.527], + [-22.395, 9.609], + [-21.597, 7.633], + [20.42, -10.205], + [22.396, -9.406], + [21.597, -7.43], + [-20.42, 10.408], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [73.109, 118.977], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.197, 0], + [0.244, 0.574], + [-0.766, 0.325], + [0, 0], + [-0.327, -0.766], + [0.766, -0.325], + [0, 0], + ], + o: [ + [-0.586, 0], + [-0.326, -0.765], + [0, 0], + [0.759, -0.321], + [0.325, 0.765], + [0, 0], + [-0.191, 0.081], + ], + v: [ + [-8.298, 5.13], + [-9.686, 4.213], + [-8.888, 2.237], + [7.71, -4.809], + [9.686, -4.01], + [8.887, -2.034], + [-7.711, 5.012], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [54.763, 105.943], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 3, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.197, 0], + [0.244, 0.574], + [-0.767, 0.325], + [0, 0], + [-0.327, -0.767], + [0.766, -0.325], + [0, 0], + ], + o: [ + [-0.586, 0], + [-0.326, -0.766], + [0, 0], + [0.759, -0.324], + [0.325, 0.766], + [0, 0], + [-0.191, 0.082], + ], + v: [ + [-13.557, 7.364], + [-14.944, 6.446], + [-14.145, 4.47], + [12.969, -7.04], + [14.945, -6.243], + [14.146, -4.267], + [-12.969, 7.243], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [101.122, 86.262], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 3, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.197, 0], + [0.244, 0.574], + [-0.766, 0.325], + [0, 0], + [-0.327, -0.766], + [0.766, -0.325], + [0, 0], + ], + o: [ + [-0.586, 0], + [-0.326, -0.766], + [0, 0], + [0.758, -0.323], + [0.325, 0.766], + [0, 0], + [-0.191, 0.082], + ], + v: [ + [-34.107, 16.088], + [-35.495, 15.17], + [-34.697, 13.194], + [33.52, -15.765], + [35.496, -14.967], + [34.697, -12.993], + [-33.52, 15.967], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [73.873, 79.206], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 3, + cix: 2, + bm: 0, + ix: 4, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.197, 0], + [0.244, 0.574], + [-0.767, 0.325], + [0, 0], + [-0.326, -0.767], + [0.767, -0.325], + [0, 0], + ], + o: [ + [-0.586, 0], + [-0.326, -0.766], + [0, 0], + [0.759, -0.323], + [0.325, 0.766], + [0, 0], + [-0.191, 0.082], + ], + v: [ + [-7.788, 4.915], + [-9.176, 3.997], + [-8.376, 2.022], + [7.201, -4.592], + [9.177, -3.794], + [8.378, -1.819], + [-7.201, 4.795], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [90.344, 44.84], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 5", + np: 3, + cix: 2, + bm: 0, + ix: 5, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + ], + v: [ + [-70.665, -41.864], + [-18.856, 80.174], + [71.12, 41.975], + [19.311, -80.062], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [0.555, 0], + [0.507, 0.205], + [0.437, 1.029], + [0, 0], + [-2.123, 0.902], + [0, 0], + [-1.039, -0.418], + [-0.436, -1.029], + [0, 0], + [0.418, -1.036], + [1.03, -0.437], + [0, 0], + ], + o: [ + [-0.529, 0], + [-1.037, -0.419], + [0, 0], + [-0.9, -2.124], + [0, 0], + [1.027, -0.437], + [1.036, 0.42], + [0, 0], + [0.437, 1.029], + [-0.42, 1.037], + [0, 0], + [-0.525, 0.222], + ], + v: [ + [-19.035, 84.799], + [-20.601, 84.493], + [-22.885, 82.248], + [-74.958, -40.406], + [-72.742, -45.893], + [17.854, -84.354], + [21.057, -84.381], + [23.339, -82.135], + [75.412, 40.518], + [75.439, 43.72], + [73.193, 46.005], + [-17.399, 84.465], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [76.107, 85.049], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 6", + np: 5, + cix: 2, + bm: 0, + ix: 6, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.978, -0.415], + [0, 0], + [0.415, 0.978], + [0, 0], + [-0.978, 0.415], + [0, 0], + [-0.416, -0.978], + [0, 0], + ], + o: [ + [0, 0], + [-0.978, 0.415], + [0, 0], + [-0.416, -0.978], + [0, 0], + [0.979, -0.415], + [0, 0], + [0.416, 0.978], + ], + v: [ + [72.085, 43.869], + [-18.51, 82.329], + [-21.033, 81.31], + [-73.104, -41.346], + [-72.085, -43.869], + [18.509, -82.329], + [21.033, -81.31], + [73.103, 41.346], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [76.334, 85.106], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 7", + np: 3, + cix: 2, + bm: 0, + ix: 7, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 33, + op: 333, + st: 33, + bm: 0, + }, + { + ddd: 0, + ind: 14, + ty: 3, + nm: "Layer 12 Outlines 4", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 68, + s: [720], + }, + { t: 188, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 68, + s: [318.45, 739.698, 0], + to: [77, -535.667, 0], + ti: [45, -224.333, 0], + }, + { t: 188, s: [756.45, 729.698, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [75.522, 85.003, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 68, + s: [53.907, 53.907, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 128.201, + s: [68.999, 68.999, 100], + }, + { t: 188, s: [66.459, 66.459, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 68, + op: 368, + st: 68, + bm: 0, + }, + { + ddd: 0, + ind: 15, + ty: 4, + nm: "Layer 15 Outlines 2", + parent: 14, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [97.398, 86.2, 0], ix: 2 }, + a: { a: 0, k: [84.806, 97.839, 0], ix: 1 }, + s: { a: 0, k: [103.714, 103.714, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.01, 0], + [0.015, -0.045], + [0, 0], + [-0.054, -0.018], + [0, 0], + [0, 0], + [-0.017, 0.054], + [0, 0], + [0.054, 0.018], + [0, 0], + ], + o: [ + [-0.051, 0], + [0, 0], + [-0.019, 0.054], + [0, 0], + [0, 0], + [0.051, 0.017], + [0, 0], + [0.019, -0.055], + [0, 0], + [-0.011, -0.002], + ], + v: [ + [-29.016, -92.914], + [-29.141, -92.833], + [-79.878, 55.763], + [-79.803, 55.917], + [28.987, 93.062], + [28.989, 93.062], + [29.14, 92.987], + [79.877, -55.61], + [79.801, -55.764], + [-28.986, -92.909], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [1.93, 0], + [0.494, 0.169], + [0, 0], + [0.548, 1.113], + [-0.4, 1.173], + [0, 0], + [-1.114, 0.546], + [-1.175, -0.402], + [0, 0], + [-0.547, -1.112], + [0.402, -1.173], + [0, 0], + ], + o: [ + [-0.496, 0], + [0, 0], + [-1.173, -0.4], + [-0.546, -1.113], + [0, 0], + [0.401, -1.173], + [1.112, -0.546], + [0, 0], + [1.174, 0.401], + [0.546, 1.114], + [0, 0], + [-0.659, 1.925], + ], + v: [ + [29.023, 97.589], + [27.528, 97.34], + [-81.262, 60.195], + [-83.93, 57.849], + [-84.156, 54.302], + [-33.419, -94.294], + [-31.071, -96.961], + [-27.526, -97.186], + [81.262, -60.042], + [83.929, -57.695], + [84.154, -54.149], + [33.419, 94.448], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [84.806, 97.839], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 5, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [1.245, 0.425], + [0, 0], + [-0.425, 1.245], + [0, 0], + [-1.244, -0.425], + [0, 0], + [0.425, -1.245], + [0, 0], + ], + o: [ + [0, 0], + [-1.245, -0.425], + [0, 0], + [0.425, -1.245], + [0, 0], + [1.245, 0.425], + [0, 0], + [-0.425, 1.244], + ], + v: [ + [28.258, 95.124], + [-80.532, 57.979], + [-82.016, 54.956], + [-31.281, -93.641], + [-28.257, -95.125], + [80.532, -57.98], + [82.016, -54.957], + [31.28, 93.641], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [0.372549019608, 0.607843137255, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [84.806, 97.915], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 3, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 68, + op: 368, + st: 68, + bm: 0, + }, + { + ddd: 0, + ind: 16, + ty: 3, + nm: "Layer 12 Outlines 6", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 13, + s: [360], + }, + { t: 133, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 13, + s: [318.45, 739.698, 0], + to: [77, -535.667, 0], + ti: [45, -224.333, 0], + }, + { t: 133, s: [756.45, 729.698, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [75.522, 85.003, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 13, + s: [53.907, 53.907, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 73.201, + s: [100, 100, 100], + }, + { t: 133, s: [66.459, 66.459, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 13, + op: 313, + st: 13, + bm: 0, + }, + { + ddd: 0, + ind: 17, + ty: 4, + nm: "Layer 15 Outlines 3", + parent: 16, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [97.398, 86.2, 0], ix: 2 }, + a: { a: 0, k: [84.806, 97.839, 0], ix: 1 }, + s: { a: 0, k: [103.714, 103.714, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.01, 0], + [0.015, -0.045], + [0, 0], + [-0.054, -0.018], + [0, 0], + [0, 0], + [-0.017, 0.054], + [0, 0], + [0.054, 0.018], + [0, 0], + ], + o: [ + [-0.051, 0], + [0, 0], + [-0.019, 0.054], + [0, 0], + [0, 0], + [0.051, 0.017], + [0, 0], + [0.019, -0.055], + [0, 0], + [-0.011, -0.002], + ], + v: [ + [-29.016, -92.914], + [-29.141, -92.833], + [-79.878, 55.763], + [-79.803, 55.917], + [28.987, 93.062], + [28.989, 93.062], + [29.14, 92.987], + [79.877, -55.61], + [79.801, -55.764], + [-28.986, -92.909], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [1.93, 0], + [0.494, 0.169], + [0, 0], + [0.548, 1.113], + [-0.4, 1.173], + [0, 0], + [-1.114, 0.546], + [-1.175, -0.402], + [0, 0], + [-0.547, -1.112], + [0.402, -1.173], + [0, 0], + ], + o: [ + [-0.496, 0], + [0, 0], + [-1.173, -0.4], + [-0.546, -1.113], + [0, 0], + [0.401, -1.173], + [1.112, -0.546], + [0, 0], + [1.174, 0.401], + [0.546, 1.114], + [0, 0], + [-0.659, 1.925], + ], + v: [ + [29.023, 97.589], + [27.528, 97.34], + [-81.262, 60.195], + [-83.93, 57.849], + [-84.156, 54.302], + [-33.419, -94.294], + [-31.071, -96.961], + [-27.526, -97.186], + [81.262, -60.042], + [83.929, -57.695], + [84.154, -54.149], + [33.419, 94.448], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [84.806, 97.839], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 5, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [1.245, 0.425], + [0, 0], + [-0.425, 1.245], + [0, 0], + [-1.244, -0.425], + [0, 0], + [0.425, -1.245], + [0, 0], + ], + o: [ + [0, 0], + [-1.245, -0.425], + [0, 0], + [0.425, -1.245], + [0, 0], + [1.245, 0.425], + [0, 0], + [-0.425, 1.244], + ], + v: [ + [28.258, 95.124], + [-80.532, 57.979], + [-82.016, 54.956], + [-31.281, -93.641], + [-28.257, -95.125], + [80.532, -57.98], + [82.016, -54.957], + [31.28, 93.641], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [84.806, 97.915], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 3, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 13, + op: 313, + st: 13, + bm: 0, + }, + { + ddd: 0, + ind: 18, + ty: 3, + nm: "Layer 12 Outlines 3", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 97, + s: [360], + }, + { t: 217, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 97, + s: [318.45, 739.698, 0], + to: [77, -535.667, 0], + ti: [45, -224.333, 0], + }, + { t: 217, s: [756.45, 729.698, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [75.522, 85.003, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 97, + s: [53.907, 53.907, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 157.201, + s: [100, 100, 100], + }, + { t: 217, s: [66.459, 66.459, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 97, + op: 397, + st: 97, + bm: 0, + }, + { + ddd: 0, + ind: 19, + ty: 4, + nm: "Layer 15 Outlines", + parent: 18, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [97.398, 86.2, 0], ix: 2 }, + a: { a: 0, k: [84.806, 97.839, 0], ix: 1 }, + s: { a: 0, k: [103.714, 103.714, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.01, 0], + [0.015, -0.045], + [0, 0], + [-0.054, -0.018], + [0, 0], + [0, 0], + [-0.017, 0.054], + [0, 0], + [0.054, 0.018], + [0, 0], + ], + o: [ + [-0.051, 0], + [0, 0], + [-0.019, 0.054], + [0, 0], + [0, 0], + [0.051, 0.017], + [0, 0], + [0.019, -0.055], + [0, 0], + [-0.011, -0.002], + ], + v: [ + [-29.016, -92.914], + [-29.141, -92.833], + [-79.878, 55.763], + [-79.803, 55.917], + [28.987, 93.062], + [28.989, 93.062], + [29.14, 92.987], + [79.877, -55.61], + [79.801, -55.764], + [-28.986, -92.909], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [1.93, 0], + [0.494, 0.169], + [0, 0], + [0.548, 1.113], + [-0.4, 1.173], + [0, 0], + [-1.114, 0.546], + [-1.175, -0.402], + [0, 0], + [-0.547, -1.112], + [0.402, -1.173], + [0, 0], + ], + o: [ + [-0.496, 0], + [0, 0], + [-1.173, -0.4], + [-0.546, -1.113], + [0, 0], + [0.401, -1.173], + [1.112, -0.546], + [0, 0], + [1.174, 0.401], + [0.546, 1.114], + [0, 0], + [-0.659, 1.925], + ], + v: [ + [29.023, 97.589], + [27.528, 97.34], + [-81.262, 60.195], + [-83.93, 57.849], + [-84.156, 54.302], + [-33.419, -94.294], + [-31.071, -96.961], + [-27.526, -97.186], + [81.262, -60.042], + [83.929, -57.695], + [84.154, -54.149], + [33.419, 94.448], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [84.806, 97.839], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 5, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [1.245, 0.425], + [0, 0], + [-0.425, 1.245], + [0, 0], + [-1.244, -0.425], + [0, 0], + [0.425, -1.245], + [0, 0], + ], + o: [ + [0, 0], + [-1.245, -0.425], + [0, 0], + [0.425, -1.245], + [0, 0], + [1.245, 0.425], + [0, 0], + [-0.425, 1.244], + ], + v: [ + [28.258, 95.124], + [-80.532, 57.979], + [-82.016, 54.956], + [-31.281, -93.641], + [-28.257, -95.125], + [80.532, -57.98], + [82.016, -54.957], + [31.28, 93.641], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [84.806, 97.915], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 3, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 97, + op: 397, + st: 97, + bm: 0, + }, + { + ddd: 0, + ind: 20, + ty: 4, + nm: "Layer 5 Outlines", + parent: 5, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [105.839, 87.289, 0], ix: 2 }, + a: { a: 0, k: [105.823, 77.72, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [12.382, -0.026], + [0, 0], + [0.026, 12.382], + [0, 0], + [-12.382, 0.026], + [0, 0], + [-0.026, -12.382], + [0, 0], + ], + o: [ + [0, 0], + [-12.382, 0.026], + [0, 0], + [-0.026, -12.382], + [0, 0], + [12.381, -0.026], + [0, 0], + [0.026, 12.381], + ], + v: [ + [80.826, 74.871], + [-80.511, 75.21], + [-103.071, 52.745], + [-103.291, -52.312], + [-80.826, -74.871], + [80.511, -75.21], + [103.07, -52.745], + [103.291, 52.312], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [105.83, 77.72], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [11.149, 0], + [0, 0], + [0, 0], + [-0.024, -11.167], + [0, 0], + [-11.147, 0], + [0, 0], + [0, 0], + [-3.83, 3.844], + [0.012, 5.385], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + [-11.167, 0.024], + [0, 0], + [0.023, 11.152], + [0, 0], + [0, 0], + [5.385, -0.012], + [3.829, -3.846], + [0, 0], + [-0.022, -11.152], + ], + v: [ + [80.564, -72.951], + [80.523, -72.951], + [-80.814, -72.613], + [-101.023, -52.317], + [-100.804, 52.741], + [-80.552, 72.949], + [-80.508, 72.949], + [80.829, 72.611], + [95.118, 66.63], + [101.038, 52.316], + [100.817, -52.742], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + ], + o: [ + [0, 0], + [0, 0], + ], + v: [ + [80.833, 74.872], + [80.848, 74.872], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0.029, 13.643], + [0, 0], + [-13.661, 0.029], + [0, 0], + [0, 0], + [-0.028, -13.642], + [0, 0], + [4.681, -4.701], + [6.592, -0.014], + [0, 0], + ], + o: [ + [-13.636, 0.001], + [0, 0], + [-0.03, -13.659], + [0, 0], + [0, 0], + [13.639, 0], + [0, 0], + [0.015, 6.591], + [-4.682, 4.701], + [0, 0], + [0, 0], + ], + v: [ + [-80.552, 77.469], + [-105.324, 52.749], + [-105.543, -52.308], + [-80.823, -77.132], + [80.514, -77.471], + [80.564, -77.471], + [105.337, -52.749], + [105.558, 52.308], + [98.321, 69.818], + [80.838, 77.13], + [-80.499, 77.469], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [105.823, 77.721], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 6, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [12.382, -0.026], + [0, 0], + [0.026, 12.382], + [0, 0], + [-12.382, 0.026], + [0, 0], + [-0.026, -12.382], + [0, 0], + ], + o: [ + [0, 0], + [-12.382, 0.026], + [0, 0], + [-0.026, -12.382], + [0, 0], + [12.381, -0.026], + [0, 0], + [0.026, 12.381], + ], + v: [ + [80.826, 74.871], + [-80.511, 75.21], + [-103.071, 52.745], + [-103.291, -52.312], + [-80.826, -74.871], + [80.511, -75.21], + [103.07, -52.745], + [103.291, 52.312], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.238999998803, 0.522000002394, 0.991999966491, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [105.83, 77.721], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 3, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 21, + ty: 4, + nm: "Layer 18 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 0, + s: [-1080], + }, + { t: 299, s: [0] }, + ], + ix: 10, + }, + p: { a: 0, k: [600.604, 632.19, 0], ix: 2 }, + a: { a: 0, k: [81.813, 80.779, 0], ix: 1 }, + s: { a: 0, k: [102.092, 102.092, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [5.953, 0], + [4.966, -1.898], + [4.768, -10.515], + [-3.977, -10.766], + [-10.384, -4.711], + [-9.843, 21.698], + [21.442, 9.727], + ], + o: [ + [-5.142, 0], + [-10.721, 4.1], + [-4.772, 10.514], + [3.974, 10.761], + [21.447, 9.733], + [9.844, -21.7], + [-5.572, -2.529], + ], + v: [ + [0.4, -42.968], + [-14.866, -40.124], + [-38.887, -17.461], + [-40.119, 15.541], + [-17.853, 39.535], + [38.889, 17.825], + [17.854, -39.171], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [17.499, 0], + [6.047, 2.743], + [4.255, 11.522], + [-5.099, 11.24], + [-11.467, 4.384], + [-11.122, -5.042], + [10.53, -23.214], + ], + o: [ + [-6.259, 0], + [-11.125, -5.047], + [-4.254, -11.517], + [5.101, -11.242], + [11.471, -4.387], + [22.957, 10.415], + [-7.757, 17.097], + ], + v: [ + [-0.449, 46.321], + [-19.097, 42.28], + [-42.945, 16.586], + [-41.633, -18.705], + [-15.941, -42.937], + [19.098, -41.916], + [41.634, 19.07], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [-2.27, -1.03], + [-2.339, 0.896], + [1.801, 4.875], + [0, 0], + [0, 0], + [-4.92, 7.167], + [0, 0], + [0, 0], + [-2.161, 4.753], + [4.692, 2.127], + [0, 0], + [0, 0], + [1.522, 8.538], + [0, 0], + [0, 0], + [1.801, 4.874], + [2.27, 1.03], + [2.344, -0.894], + [0, 0], + [0, 0], + [7.065, 4.888], + [0, 0], + [0, 0], + [0.872, 2.36], + [2.27, 1.028], + [2.158, -4.755], + [0, 0], + [0, 0], + [8.482, -1.607], + [0, 0], + [0, 0], + [2.272, 1.03], + [2.344, -0.896], + [-1.802, -4.876], + [0, 0], + [0, 0], + [4.918, -7.167], + [0, 0], + [0, 0], + [2.346, -0.897], + [1.046, -2.307], + [-4.692, -2.129], + [0, 0], + [0, 0], + [-1.521, -8.538], + [0, 0], + [0, 0], + [-1.802, -4.875], + [-2.27, -1.03], + [-2.34, 0.894], + [0, 0], + [0, 0], + [-7.068, -4.891], + [0, 0], + [0, 0], + [-4.692, -2.13], + [-2.343, 0.897], + [-1.046, 2.307], + [0, 0], + [0, 0], + [-8.48, 1.604], + ], + o: [ + [0, 0], + [0.868, 2.354], + [2.27, 1.033], + [4.854, -1.857], + [0, 0], + [0, 0], + [7.424, -4.477], + [0, 0], + [0, 0], + [4.689, 2.132], + [2.157, -4.755], + [0, 0], + [0, 0], + [2.153, -8.419], + [0, 0], + [0, 0], + [4.854, -1.857], + [-0.868, -2.354], + [-2.269, -1.031], + [0, 0], + [0, 0], + [-4.379, -7.442], + [0, 0], + [0, 0], + [1.048, -2.307], + [-0.87, -2.354], + [-4.692, -2.133], + [0, 0], + [0, 0], + [-8.334, -2.096], + [0, 0], + [0, 0], + [-0.869, -2.354], + [-2.267, -1.029], + [-4.855, 1.857], + [0, 0], + [0, 0], + [-7.427, 4.477], + [0, 0], + [0, 0], + [-2.272, -1.032], + [-2.349, 0.899], + [-2.157, 4.755], + [0, 0], + [0, 0], + [-2.154, 8.419], + [0, 0], + [0, 0], + [-4.855, 1.856], + [0.868, 2.354], + [2.273, 1.03], + [0, 0], + [0, 0], + [4.374, 7.439], + [0, 0], + [0, 0], + [-2.158, 4.755], + [2.274, 1.03], + [2.349, -0.899], + [0, 0], + [0, 0], + [8.332, 2.095], + [0, 0], + ], + v: [ + [11.723, 59.076], + [16.287, 71.435], + [21.155, 76.683], + [28.31, 76.892], + [33.848, 64.683], + [29.294, 52.35], + [30.361, 51.707], + [48.964, 34.16], + [49.677, 33.119], + [61.604, 38.527], + [74.027, 33.765], + [69.428, 21.281], + [57.503, 15.87], + [57.817, 14.646], + [58.768, -10.909], + [58.549, -12.136], + [70.828, -16.831], + [76.366, -29.038], + [71.498, -34.286], + [64.343, -34.493], + [52.037, -29.787], + [51.39, -30.886], + [34.145, -49.468], + [33.111, -50.183], + [38.575, -62.228], + [38.846, -69.466], + [33.978, -74.712], + [21.554, -69.95], + [16.091, -57.904], + [14.871, -58.212], + [-10.468, -58.95], + [-11.722, -58.714], + [-16.286, -71.072], + [-21.156, -76.32], + [-28.309, -76.528], + [-33.847, -64.319], + [-29.293, -51.987], + [-30.36, -51.344], + [-48.963, -33.796], + [-49.676, -32.754], + [-61.602, -38.164], + [-68.759, -38.372], + [-74.024, -33.402], + [-69.428, -20.915], + [-57.502, -15.507], + [-57.815, -14.283], + [-58.767, 11.272], + [-58.548, 12.499], + [-70.827, 17.194], + [-76.365, 29.402], + [-71.498, 34.65], + [-64.343, 34.858], + [-52.036, 30.151], + [-51.389, 31.25], + [-34.144, 49.831], + [-33.11, 50.546], + [-38.574, 62.593], + [-33.978, 75.078], + [-26.821, 75.284], + [-21.556, 70.314], + [-16.09, 58.269], + [-14.87, 58.576], + [10.469, 59.313], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 3, + ty: "sh", + ix: 4, + ks: { + a: 0, + k: { + i: [ + [1.489, 0], + [1.617, 0.734], + [1.151, 3.114], + [0, 0], + [7.956, 1.83], + [0, 0], + [3.096, -1.185], + [3.01, 1.365], + [-2.843, 6.268], + [0, 0], + [4.296, 6.98], + [0, 0], + [3.011, 1.366], + [1.151, 3.115], + [-6.388, 2.442], + [0, 0], + [-1.892, 8.041], + [0, 0], + [-2.842, 6.27], + [-3.096, 1.184], + [-3.01, -1.365], + [0, 0], + [-6.978, 4.392], + [0, 0], + [-6.388, 2.444], + [-3.007, -1.365], + [-1.152, -3.116], + [0, 0], + [-7.96, -1.834], + [0, 0], + [-6.201, -2.817], + [-1.152, -3.115], + [1.375, -3.033], + [0, 0], + [-4.299, -6.982], + [0, 0], + [-3.01, -1.365], + [-1.15, -3.114], + [6.389, -2.441], + [0, 0], + [1.891, -8.04], + [0, 0], + [2.842, -6.267], + [6.204, 2.819], + [0, 0], + [6.975, -4.392], + [0, 0], + [6.387, -2.442], + ], + o: [ + [-1.725, 0], + [-3.009, -1.365], + [0, 0], + [-8.085, 1.362], + [0, 0], + [-1.377, 3.033], + [-3.098, 1.184], + [-6.205, -2.816], + [0, 0], + [-6.622, -4.782], + [0, 0], + [-3.103, 1.187], + [-3.009, -1.365], + [-2.37, -6.418], + [0, 0], + [-1.29, -8.143], + [0, 0], + [-6.204, -2.816], + [1.377, -3.033], + [3.098, -1.185], + [0, 0], + [4.806, -6.719], + [0, 0], + [-2.37, -6.418], + [3.105, -1.187], + [3.01, 1.364], + [0, 0], + [8.08, -1.364], + [0, 0], + [2.844, -6.268], + [3.009, 1.364], + [1.147, 3.11], + [0, 0], + [6.619, 4.78], + [0, 0], + [3.103, -1.187], + [3.011, 1.365], + [2.369, 6.417], + [0, 0], + [1.29, 8.145], + [0, 0], + [6.206, 2.815], + [-2.846, 6.269], + [0, 0], + [-4.807, 6.719], + [0, 0], + [2.368, 6.416], + [-1.436, 0.55], + ], + v: [ + [24.969, 80.529], + [19.909, 79.427], + [13.459, 72.48], + [9.774, 62.499], + [-14.38, 61.794], + [-18.81, 71.559], + [-25.746, 78.099], + [-35.222, 77.822], + [-41.319, 61.348], + [-36.888, 51.582], + [-53.328, 33.872], + [-63.266, 37.671], + [-72.743, 37.394], + [-79.193, 30.447], + [-71.904, 14.381], + [-61.941, 10.57], + [-61.036, -13.801], + [-70.673, -18.171], + [-76.77, -34.647], + [-69.834, -41.186], + [-60.358, -40.91], + [-50.721, -36.537], + [-32.979, -53.27], + [-36.675, -63.274], + [-29.386, -79.342], + [-19.911, -79.064], + [-13.458, -72.117], + [-9.772, -62.136], + [14.382, -61.43], + [18.811, -71.194], + [35.222, -77.456], + [41.674, -70.51], + [41.321, -60.984], + [36.889, -51.219], + [53.329, -33.508], + [63.266, -37.307], + [72.742, -37.03], + [79.194, -30.083], + [71.905, -14.018], + [61.942, -10.207], + [61.037, 14.164], + [70.672, 18.537], + [76.771, 35.009], + [60.359, 41.271], + [50.722, 36.902], + [32.98, 53.633], + [36.676, 63.639], + [29.387, 79.705], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 4", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [81.813, 80.779], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 7, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 22, + ty: 4, + nm: "Layer 19 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 0, + s: [1080], + }, + { t: 299, s: [0] }, + ], + ix: 10, + }, + p: { a: 0, k: [524.181, 745.808, 0], ix: 2 }, + a: { a: 0, k: [68.121, 68.168, 0], ix: 1 }, + s: { a: 0, k: [102.092, 102.092, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [13.547, 0], + [4.88, -2.231], + [-8.139, -17.801], + [-18.013, 8.234], + [-3.382, 8.922], + [3.942, 8.62], + ], + o: [ + [-5.032, 0], + [-18.016, 8.237], + [8.14, 17.802], + [8.73, -3.992], + [3.38, -8.917], + [-5.935, -12.979], + ], + v: [ + [0.269, -34.893], + [-14.76, -31.605], + [-32.671, 15.617], + [14.761, 32.962], + [33.543, 12.936], + [32.672, -14.259], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [5.451, 0], + [6.44, 14.085], + [-19.525, 8.928], + [-8.828, -19.311], + [3.666, -9.676], + [9.456, -4.322], + ], + o: [ + [-14.691, 0], + [-8.83, -19.312], + [19.53, -8.929], + [4.278, 9.358], + [-3.665, 9.668], + [-5.284, 2.416], + ], + v: [ + [-0.265, 39.262], + [-35.411, 16.87], + [-16.014, -34.345], + [35.412, -15.512], + [36.361, 14.004], + [16.014, 35.701], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [-6.206, -3.626], + [0, 0], + [0, 0], + [-0.841, -1.838], + [-1.91, -0.699], + [-1.494, 3.94], + [0, 0], + [0, 0], + [-7.011, 1.814], + [0, 0], + [0, 0], + [-1.911, -0.698], + [-1.87, 0.853], + [-0.724, 1.909], + [0.84, 1.837], + [0, 0], + [0, 0], + [-3.712, 6.195], + [0, 0], + [0, 0], + [-1.492, 3.94], + [0.838, 1.838], + [1.911, 0.699], + [0, 0], + [0, 0], + [1.765, 6.936], + [0, 0], + [0, 0], + [-0.724, 1.908], + [0.84, 1.837], + [1.911, 0.698], + [1.871, -0.855], + [0, 0], + [0, 0], + [6.207, 3.628], + [0, 0], + [0, 0], + [0.84, 1.837], + [1.912, 0.699], + [1.492, -3.943], + [0, 0], + [0, 0], + [7.008, -1.813], + [0, 0], + [0, 0], + [3.851, -1.764], + [0.723, -1.909], + [-0.84, -1.837], + [0, 0], + [0, 0], + [3.711, -6.196], + [0, 0], + [0, 0], + [1.492, -3.944], + [-0.842, -1.837], + [-1.909, -0.699], + [0, 0], + [0, 0], + [-1.766, -6.935], + [0, 0], + [0, 0], + [0.724, -1.909], + [-0.84, -1.837], + [-3.85, 1.757], + ], + o: [ + [0, 0], + [4.09, 5.873], + [0, 0], + [0, 0], + [-0.723, 1.902], + [0.84, 1.836], + [3.956, 1.451], + [0, 0], + [0, 0], + [7.112, 1.247], + [0, 0], + [0, 0], + [0.84, 1.838], + [1.916, 0.702], + [1.869, -0.855], + [0.721, -1.903], + [0, 0], + [0, 0], + [5.957, -4.113], + [0, 0], + [0, 0], + [3.956, 1.452], + [0.723, -1.903], + [-0.84, -1.838], + [0, 0], + [0, 0], + [1.317, -7.067], + [0, 0], + [0, 0], + [1.87, -0.855], + [0.721, -1.903], + [-0.84, -1.838], + [-1.914, -0.702], + [0, 0], + [0, 0], + [-4.09, -5.872], + [0, 0], + [0, 0], + [0.721, -1.902], + [-0.84, -1.838], + [-3.956, -1.452], + [0, 0], + [0, 0], + [-7.112, -1.251], + [0, 0], + [0, 0], + [-1.737, -3.797], + [-1.87, 0.855], + [-0.721, 1.902], + [0, 0], + [0, 0], + [-5.959, 4.114], + [0, 0], + [0, 0], + [-3.959, -1.451], + [-0.722, 1.903], + [0.84, 1.837], + [0, 0], + [0, 0], + [-1.318, 7.067], + [0, 0], + [0, 0], + [-1.869, 0.854], + [-0.721, 1.903], + [1.738, 3.8], + [0, 0], + ], + v: [ + [-41.989, 28.208], + [-41.271, 29.241], + [-25.753, 43.555], + [-24.654, 44.199], + [-28.634, 54.706], + [-28.449, 60.507], + [-24.185, 64.438], + [-14.294, 59.917], + [-10.323, 49.437], + [-9.096, 49.652], + [12.188, 48.797], + [13.41, 48.479], + [18.054, 58.635], + [22.319, 62.568], + [28.189, 62.333], + [32.209, 58.047], + [32.025, 52.248], + [27.382, 42.092], + [28.42, 41.374], + [42.992, 25.838], + [43.632, 24.768], + [54.156, 28.62], + [64.044, 24.099], + [63.862, 18.299], + [59.595, 14.365], + [49.045, 10.504], + [49.277, 9.251], + [48.602, -11.852], + [48.291, -13.072], + [58.545, -17.759], + [62.566, -22.043], + [62.38, -27.843], + [58.115, -31.777], + [52.245, -31.54], + [41.99, -26.85], + [41.272, -27.883], + [25.753, -42.2], + [24.652, -42.843], + [28.635, -53.35], + [28.451, -59.147], + [24.184, -63.082], + [14.296, -58.559], + [10.322, -48.08], + [9.095, -48.295], + [-12.187, -47.44], + [-13.409, -47.124], + [-18.053, -57.279], + [-28.188, -60.975], + [-32.209, -56.69], + [-32.024, -50.891], + [-27.381, -40.736], + [-28.419, -40.018], + [-42.991, -24.481], + [-43.631, -23.412], + [-54.155, -27.262], + [-64.045, -22.742], + [-63.859, -16.94], + [-59.596, -13.008], + [-49.045, -9.146], + [-49.278, -7.893], + [-48.602, 13.208], + [-48.292, 14.428], + [-58.545, 19.116], + [-62.565, 23.4], + [-62.381, 29.2], + [-52.245, 32.896], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 3, + ty: "sh", + ix: 4, + ks: { + a: 0, + k: { + i: [ + [4.345, 0], + [1.207, 0.441], + [1.177, 2.575], + [-1.008, 2.663], + [0, 0], + [3.975, 5.43], + [0, 0], + [2.427, 5.311], + [-1.009, 2.662], + [-2.593, 1.186], + [0, 0], + [-1.078, 6.668], + [0, 0], + [1.177, 2.575], + [-1.007, 2.663], + [-5.503, -2.012], + [0, 0], + [-5.513, 3.999], + [0, 0], + [-1.008, 2.661], + [-2.595, 1.186], + [-2.429, -5.312], + [0, 0], + [-6.719, -1.02], + [0, 0], + [-5.501, -2.006], + [-1.177, -2.575], + [1.008, -2.662], + [0, 0], + [-3.976, -5.428], + [0, 0], + [-2.669, -0.977], + [-1.177, -2.574], + [1.008, -2.662], + [2.595, -1.185], + [0, 0], + [1.079, -6.667], + [0, 0], + [-1.177, -2.576], + [1.009, -2.66], + [5.504, 2.006], + [0, 0], + [5.513, -3.999], + [0, 0], + [1.01, -2.662], + [2.594, -1.186], + [2.665, 0.975], + [1.177, 2.575], + [0, 0], + [6.72, 1.018], + [0, 0], + ], + o: [ + [-1.22, 0], + [-2.672, -0.979], + [-1.178, -2.576], + [0, 0], + [-5.749, -3.545], + [0, 0], + [-5.36, 2.454], + [-1.179, -2.575], + [1.006, -2.656], + [0, 0], + [-1.505, -6.559], + [0, 0], + [-2.672, -0.978], + [-1.179, -2.576], + [2.078, -5.477], + [0, 0], + [3.624, -5.748], + [0, 0], + [-1.178, -2.576], + [1.006, -2.655], + [5.358, -2.456], + [0, 0], + [6.629, -1.552], + [0, 0], + [2.074, -5.481], + [2.674, 0.978], + [1.178, 2.576], + [0, 0], + [5.749, 3.547], + [0, 0], + [2.594, -1.189], + [2.672, 0.979], + [1.178, 2.576], + [-1.006, 2.654], + [0, 0], + [1.505, 6.561], + [0, 0], + [2.673, 0.98], + [1.177, 2.576], + [-2.075, 5.477], + [0, 0], + [-3.625, 5.748], + [0, 0], + [1.179, 2.575], + [-1.006, 2.656], + [-2.598, 1.187], + [-2.672, -0.979], + [0, 0], + [-6.63, 1.555], + [0, 0], + [-1.623, 4.277], + ], + v: [ + [-21.559, 67.919], + [-25.221, 67.269], + [-31.19, 61.76], + [-31.453, 53.637], + [-28.369, 45.499], + [-43.01, 31.988], + [-50.992, 35.636], + [-65.12, 30.452], + [-65.382, 22.333], + [-59.799, 16.376], + [-51.819, 12.727], + [-52.46, -7.188], + [-60.631, -10.178], + [-66.6, -15.686], + [-66.864, -23.809], + [-53.119, -30.093], + [-44.921, -27.093], + [-31.165, -41.768], + [-34.764, -49.637], + [-35.027, -57.758], + [-29.442, -63.714], + [-15.313, -58.532], + [-11.713, -50.66], + [8.383, -51.464], + [11.479, -59.627], + [25.22, -65.912], + [31.191, -60.401], + [31.454, -52.281], + [28.369, -44.143], + [43.011, -30.631], + [50.991, -34.28], + [59.151, -34.607], + [65.12, -29.097], + [65.383, -20.975], + [59.798, -15.02], + [51.818, -11.371], + [52.459, 8.544], + [60.631, 11.534], + [66.601, 17.047], + [66.862, 25.167], + [53.12, 31.451], + [44.922, 28.449], + [31.166, 43.124], + [34.764, 50.995], + [35.026, 59.115], + [29.443, 65.072], + [21.283, 65.399], + [15.314, 59.889], + [11.714, 52.016], + [-8.384, 52.822], + [-11.476, 60.985], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 4", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [68.121, 68.169], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 7, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 23, + ty: 4, + nm: "Layer 20 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 0, + s: [1080], + }, + { t: 299, s: [0] }, + ], + ix: 10, + }, + p: { a: 0, k: [476.665, 634.427, 0], ix: 2 }, + a: { a: 0, k: [56.471, 56.458, 0], ix: 1 }, + s: { a: 0, k: [102.092, 102.092, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [7.225, 0], + [0.153, -0.003], + [5.21, -5.32], + [-10.847, -10.624], + [-7.408, 0.077], + [-5.211, 5.321], + [0, 0], + [0.034, 7.402], + [5.252, 5.143], + ], + o: [ + [-0.152, 0], + [-7.402, 0.12], + [-10.754, 10.977], + [5.25, 5.145], + [7.4, -0.119], + [0, 0], + [5.211, -5.319], + [-0.033, -7.397], + [-5.143, -5.039], + ], + v: [ + [0.345, -27.706], + [-0.111, -27.701], + [-19.67, -19.266], + [-19.502, 19.907], + [0.11, 27.702], + [19.667, 19.266], + [19.669, 19.266], + [27.697, -0.462], + [19.5, -19.908], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [0.17, 0], + [5.713, 5.594], + [-11.915, 12.165], + [-8.2, 0.133], + [-5.83, -5.71], + [-0.039, -8.207], + [5.771, -5.891], + [8.2, -0.131], + ], + o: [ + [-8.018, 0], + [-12.032, -11.788], + [5.77, -5.889], + [8.259, -0.159], + [5.831, 5.713], + [0.038, 8.202], + [-5.769, 5.891], + [-0.168, 0.003], + ], + v: [ + [-0.35, 30.718], + [-21.612, 22.061], + [-21.824, -21.377], + [-0.16, -30.714], + [21.609, -22.062], + [30.711, -0.477], + [21.82, 21.376], + [0.157, 30.714], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 2, + ty: "sh", + ix: 3, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [0, 0], + [-5.523, -0.901], + [0, 0], + [0, 0], + [-1.069, -1.048], + [-1.474, 0], + [-0.031, 0], + [0.015, 3.131], + [0, 0], + [0, 0], + [-4.588, 3.275], + [0, 0], + [0, 0], + [-1.517, 0.056], + [-1.068, 1.09], + [2.214, 2.17], + [0, 0], + [0, 0], + [-0.966, 5.539], + [0, 0], + [0, 0], + [0.015, 3.132], + [1.07, 1.049], + [1.474, 0], + [0.031, 0], + [0, 0], + [0, 0], + [3.22, 4.546], + [0, 0], + [0, 0], + [2.214, 2.168], + [1.533, -0.097], + [1.068, -1.09], + [0, 0], + [0, 0], + [0, 0], + [5.522, 0.902], + [0, 0], + [0, 0], + [1.069, 1.049], + [1.475, 0], + [0.031, 0], + [-0.015, -3.131], + [0, 0], + [0, 0], + [4.586, -3.276], + [0, 0], + [0, 0], + [1.515, -0.031], + [1.068, -1.09], + [-0.007, -1.517], + [-1.07, -1.047], + [0, 0], + [0, 0], + [0.965, -5.537], + [0, 0], + [0, 0], + [-0.015, -3.131], + [-1.07, -1.047], + [-1.528, -0.006], + [0, 0], + [0, 0], + [-3.217, -4.543], + [0, 0], + [0, 0], + [-0.007, -1.516], + [-1.07, -1.048], + [-1.536, 0.051], + [-1.07, 1.092], + ], + o: [ + [0, 0], + [4.609, 3.125], + [0, 0], + [0, 0], + [0.007, 1.509], + [1.048, 1.027], + [0.032, 0], + [3.131, -0.05], + [0, 0], + [0, 0], + [5.516, -1.08], + [0, 0], + [0, 0], + [1.071, 1.049], + [1.516, -0.024], + [2.201, -2.247], + [0, 0], + [0, 0], + [3.178, -4.651], + [0, 0], + [0, 0], + [3.132, -0.05], + [-0.007, -1.51], + [-1.047, -1.025], + [-0.032, 0], + [0, 0], + [0, 0], + [-1.015, -5.501], + [0, 0], + [0, 0], + [2.201, -2.247], + [-1.069, -1.05], + [-1.516, 0.024], + [0, 0], + [0, 0], + [0, 0], + [-4.609, -3.123], + [0, 0], + [0, 0], + [-0.007, -1.51], + [-1.048, -1.026], + [-0.032, 0], + [-3.131, 0.05], + [0, 0], + [0, 0], + [-5.516, 1.08], + [0, 0], + [0, 0], + [-1.069, -1.048], + [-1.516, 0.025], + [-1.069, 1.092], + [0.006, 1.51], + [0, 0], + [0, 0], + [-3.179, 4.652], + [0, 0], + [0, 0], + [-3.13, 0.052], + [0.007, 1.509], + [1.068, 1.049], + [0, 0], + [0, 0], + [1.017, 5.502], + [0, 0], + [0, 0], + [-1.069, 1.09], + [0.006, 1.509], + [1.069, 1.05], + [1.516, -0.024], + [0, 0], + ], + v: [ + [-23.054, 31.567], + [-22.013, 32.273], + [-6.744, 38.339], + [-5.486, 38.545], + [-5.444, 47.639], + [-3.775, 51.604], + [0.133, 53.193], + [0.227, 53.192], + [5.88, 47.423], + [5.837, 38.359], + [7.06, 38.119], + [22.285, 31.555], + [23.311, 30.821], + [29.766, 37.143], + [33.766, 38.731], + [37.773, 37.002], + [37.749, 28.993], + [31.295, 22.673], + [32.008, 21.63], + [38.255, 6.273], + [38.47, 5.045], + [47.532, 4.899], + [53.184, -0.87], + [51.514, -4.839], + [47.608, -6.428], + [47.514, -6.426], + [38.423, -6.279], + [38.192, -7.533], + [31.81, -22.674], + [31.083, -23.701], + [37.464, -30.215], + [37.44, -38.223], + [33.44, -39.812], + [29.434, -38.083], + [29.434, -38.081], + [23.051, -31.568], + [22.01, -32.273], + [6.742, -38.339], + [5.484, -38.546], + [5.441, -47.637], + [3.772, -51.605], + [-0.135, -53.193], + [-0.229, -53.193], + [-5.881, -47.421], + [-5.84, -38.36], + [-7.063, -38.119], + [-22.288, -31.555], + [-23.315, -30.821], + [-29.771, -37.144], + [-33.769, -38.731], + [-37.776, -37.003], + [-39.422, -32.96], + [-37.752, -28.994], + [-31.296, -22.671], + [-32.01, -21.628], + [-38.257, -6.271], + [-38.472, -5.046], + [-47.535, -4.9], + [-53.187, 0.872], + [-51.517, 4.837], + [-47.516, 6.426], + [-38.427, 6.281], + [-38.195, 7.535], + [-31.813, 22.674], + [-31.086, 23.7], + [-37.467, 30.215], + [-39.113, 34.257], + [-37.443, 38.222], + [-33.443, 39.811], + [-29.435, 38.083], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 3", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 3, + ty: "sh", + ix: 4, + ks: { + a: 0, + k: { + i: [ + [0.047, 0], + [1.617, 1.583], + [0.011, 2.319], + [0, 0], + [4.342, 2.755], + [0, 0], + [2.313, -0.037], + [1.65, 1.617], + [0.01, 2.321], + [-1.625, 1.661], + [0, 0], + [1.091, 5.045], + [0, 0], + [1.651, 1.615], + [0.01, 2.318], + [-4.773, 0.078], + [0, 0], + [-2.811, 4.382], + [0, 0], + [0.01, 2.322], + [-1.627, 1.661], + [-2.314, 0.038], + [-1.649, -1.616], + [0, 0], + [-5.067, 1.147], + [0, 0], + [-4.774, 0.077], + [-1.649, -1.616], + [-0.011, -2.32], + [0, 0], + [-4.342, -2.754], + [0, 0], + [0, 0], + [-2.314, 0.037], + [-1.652, -1.617], + [3.361, -3.434], + [0, 0], + [-1.089, -5.044], + [0, 0], + [-1.648, -1.616], + [-0.011, -2.32], + [4.775, -0.077], + [0, 0], + [2.809, -4.381], + [0, 0], + [3.364, -3.432], + [2.314, -0.037], + [1.65, 1.619], + [0, 0], + [5.066, -1.146], + [0, 0], + [4.775, -0.076], + ], + o: [ + [-2.269, 0], + [-1.65, -1.617], + [0, 0], + [-5.069, -0.986], + [0, 0], + [-1.628, 1.661], + [-2.39, 0.076], + [-1.649, -1.615], + [-0.011, -2.313], + [0, 0], + [-2.843, -4.283], + [0, 0], + [-2.282, -0.009], + [-1.65, -1.617], + [-0.021, -4.775], + [0, 0], + [1.041, -5.088], + [0, 0], + [-1.65, -1.617], + [-0.011, -2.314], + [1.626, -1.661], + [2.379, -0.009], + [0, 0], + [4.322, -2.901], + [0, 0], + [-0.02, -4.776], + [2.341, -0.002], + [1.651, 1.615], + [0, 0], + [5.067, 0.986], + [0, 0], + [0, 0], + [1.627, -1.662], + [2.328, -0.073], + [3.4, 3.333], + [0, 0], + [2.844, 4.286], + [0, 0], + [2.362, 0.019], + [1.65, 1.615], + [0.023, 4.774], + [0, 0], + [-1.043, 5.089], + [0, 0], + [3.402, 3.334], + [-1.626, 1.661], + [-2.307, 0.059], + [0, 0], + [-4.324, 2.9], + [0, 0], + [0.021, 4.776], + [-0.047, 0], + ], + v: [ + [0.133, 56.208], + [-5.884, 53.755], + [-8.458, 47.652], + [-8.487, 41.089], + [-22.65, 35.459], + [-27.283, 40.191], + [-33.394, 42.824], + [-39.552, 40.374], + [-42.126, 34.27], + [-39.621, 28.107], + [-34.986, 23.376], + [-40.907, 9.335], + [-47.468, 9.439], + [-53.627, 6.99], + [-56.2, 0.887], + [-47.583, -7.913], + [-40.993, -8.019], + [-35.196, -22.273], + [-39.86, -26.84], + [-42.435, -32.947], + [-39.928, -39.111], + [-33.818, -41.744], + [-27.661, -39.295], + [-22.998, -34.727], + [-8.865, -40.818], + [-8.895, -47.408], + [-0.276, -56.206], + [5.88, -53.756], + [8.455, -47.652], + [8.486, -41.089], + [22.647, -35.46], + [27.28, -40.191], + [27.28, -40.189], + [33.391, -42.825], + [39.55, -40.377], + [39.618, -28.107], + [34.983, -23.376], + [40.904, -9.334], + [47.466, -9.439], + [53.623, -6.99], + [56.198, -0.886], + [47.579, 7.912], + [40.992, 8.018], + [35.195, 22.273], + [39.857, 26.84], + [39.925, 39.11], + [33.815, 41.744], + [27.658, 39.294], + [22.995, 34.727], + [8.862, 40.818], + [8.893, 47.407], + [0.274, 56.205], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 4", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [56.471, 56.458], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 7, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 24, + ty: 4, + nm: "Layer 21 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [-16.5] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [17.383] }, + t: 150, + s: [0], + }, + { t: 299, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 0.854 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [937.859, 643.802, 0], + to: [-3.706, -0.549, 0], + ti: [10.259, 1.52, 0], + }, + { + i: { x: 0.667, y: 0.888 }, + o: { x: 0.333, y: 0.112 }, + t: 69, + s: [942.084, 696.28, 0], + to: [-14.655, -2.171, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 0.875 }, + o: { x: 0.333, y: 0.125 }, + t: 150, + s: [883.859, 635.802, 0], + to: [0, 0, 0], + ti: [-14.739, -2.184, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0.11 }, + t: 231, + s: [924.375, 574.323, 0], + to: [10.153, 1.504, 0], + ti: [-3.671, -0.544, 0], + }, + { t: 299, s: [937.859, 643.802, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [8.854, 8.854, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [0.028, 0.028, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [100, 100, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [-0.966, -0.966, 0] }, + t: 150, + s: [136, 136, 100], + }, + { t: 299, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -4.752], + [4.752, 0], + [0, 4.752], + [-4.752, 0], + ], + o: [ + [0, 4.752], + [-4.752, 0], + [0, -4.752], + [4.752, 0], + ], + v: [ + [8.604, 0], + [0, 8.604], + [-8.604, 0], + [0, -8.604], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [8.854, 8.854], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 25, + ty: 4, + nm: "Layer 22 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [-16.5] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [17.383] }, + t: 150, + s: [0], + }, + { t: 299, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 0.835 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [868.658, 585.792, 0], + to: [2.333, -3.157, 0], + ti: [-6.459, 8.739, 0], + }, + { + i: { x: 0.667, y: 0.834 }, + o: { x: 0.333, y: 0.166 }, + t: 69, + s: [847.628, 543.538, 0], + to: [9.227, -12.484, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 0.847 }, + o: { x: 0.333, y: 0.153 }, + t: 150, + s: [902.658, 539.792, 0], + to: [0, 0, 0], + ti: [9.28, -12.555, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0.091 }, + t: 231, + s: [861.444, 499.786, 0], + to: [-6.393, 8.649, 0], + ti: [2.311, -3.127, 0], + }, + { t: 299, s: [868.658, 585.792, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [4.922, 4.921, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [0.028, 0.028, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [100, 100, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [-0.966, -0.966, 0] }, + t: 150, + s: [136, 136, 100], + }, + { t: 299, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -2.58], + [2.58, 0], + [0, 2.58], + [-2.58, 0], + ], + o: [ + [0, 2.58], + [-2.58, 0], + [0, -2.58], + [2.58, 0], + ], + v: [ + [4.672, 0], + [0, 4.671], + [-4.672, 0], + [0, -4.671], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [4.921, 4.921], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 26, + ty: 4, + nm: "Layer 23 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [-16.5] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [17.383] }, + t: 150, + s: [0], + }, + { t: 299, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 0.875 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [838.774, 417.517, 0], + to: [0, 3.432, 0], + ti: [0, -9.499, 0], + }, + { + i: { x: 0.667, y: 0.801 }, + o: { x: 0.333, y: 0.199 }, + t: 69, + s: [882.774, 463.532, 0], + to: [0, 13.569, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 0.888 }, + o: { x: 0.333, y: 0.112 }, + t: 150, + s: [838.774, 467.517, 0], + to: [0, 0, 0], + ti: [0, 13.647, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0.1 }, + t: 231, + s: [762.774, 435.262, 0], + to: [0, -9.401, 0], + ti: [0, 3.399, 0], + }, + { t: 299, s: [838.774, 417.517, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [4.921, 4.922, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [0.028, 0.028, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [100, 100, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [-0.966, -0.966, 0] }, + t: 150, + s: [136, 136, 100], + }, + { t: 299, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -2.58], + [2.58, 0], + [0, 2.58], + [-2.58, 0], + ], + o: [ + [0, 2.58], + [-2.58, 0], + [0, -2.58], + [2.58, 0], + ], + v: [ + [4.672, -0.001], + [0, 4.672], + [-4.672, -0.001], + [0, -4.672], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.238999998803, 0.522000002394, 0.991999966491, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [4.921, 4.922], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 27, + ty: 4, + nm: "Layer 24 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [0.682] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [-0.316] }, + t: 150, + s: [55], + }, + { t: 299, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 0.778 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [743.514, 409.106, 0], + to: [2.058, -1.921, 0], + ti: [-5.697, 5.317, 0], + }, + { + i: { x: 0.667, y: 0.821 }, + o: { x: 0.333, y: 0.179 }, + t: 69, + s: [768.716, 432.784, 0], + to: [8.143, -7.6, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 0.9 }, + o: { x: 0.333, y: 0.1 }, + t: 150, + s: [773.514, 381.106, 0], + to: [0, 0, 0], + ti: [8.19, -7.644, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0.1 }, + t: 231, + s: [682.554, 360.935, 0], + to: [-5.638, 5.262, 0], + ti: [2.039, -1.903, 0], + }, + { t: 299, s: [743.514, 409.106, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [31.219, 26.944, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [0.028, 0.028, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [100, 100, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [-0.966, -0.966, 0] }, + t: 150, + s: [136, 136, 100], + }, + { t: 299, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.154, 0], + [0.631, 0.491], + [0, 0], + [-0.765, 0.985], + [-0.985, -0.765], + [0, 0], + [0, 0], + [-0.992, -0.761], + [0.759, -0.99], + [0, 0], + [0.949, -0.122], + ], + o: [ + [-0.787, 0], + [0, 0], + [-0.986, -0.766], + [0.763, -0.986], + [0, 0], + [0, 0], + [0.76, -0.989], + [0.99, 0.76], + [0, 0], + [-0.582, 0.758], + [-0.154, 0.019], + ], + v: [ + [-3.118, 11.866], + [-5.295, 11.116], + [-13.438, 4.797], + [-13.836, 1.626], + [-10.667, 1.225], + [-3.284, 6.957], + [10.255, -10.689], + [13.424, -11.105], + [13.843, -7.936], + [-0.281, 10.472], + [-2.656, 11.837], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [32.535, 24.45], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.82, 0], + [0.06, -0.006], + [0, 0], + [-0.1, -0.894], + [0, 0], + [-0.34, -0.272], + [-0.429, 0.046], + [0, 0], + [0, 0], + [0.1, 0.894], + [0, 0], + ], + o: [ + [-0.06, 0], + [0, 0], + [-0.895, 0.1], + [0, 0], + [0.047, 0.432], + [0.34, 0.272], + [0, 0], + [0, 0], + [0.893, -0.099], + [0, 0], + [-0.093, -0.832], + ], + v: [ + [20.511, -21.836], + [20.329, -21.826], + [-24.662, -16.826], + [-26.103, -15.025], + [-22.129, 20.723], + [-21.528, 21.816], + [-20.329, 22.163], + [24.663, 17.163], + [24.663, 17.163], + [26.103, 15.363], + [22.131, -20.384], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [0.229, 0], + [1.102, 0.881], + [0.181, 1.634], + [0, 0], + [-3.371, 0.373], + [0, 0], + [-0.378, -3.368], + [0, 0], + [3.37, -0.374], + [0, 0], + ], + o: [ + [-1.389, 0], + [-1.283, -1.026], + [0, 0], + [-0.374, -3.372], + [0, 0], + [3.381, -0.377], + [0, 0], + [0.373, 3.372], + [0, 0], + [-0.233, 0.026], + ], + v: [ + [-20.522, 26.694], + [-24.351, 25.345], + [-26.624, 21.221], + [-30.595, -14.525], + [-25.16, -21.316], + [19.829, -26.318], + [26.624, -20.886], + [30.597, 14.863], + [25.161, 21.655], + [-19.829, 26.655], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [31.219, 26.945], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 5, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [2.136, -0.237], + [0, 0], + [0.237, 2.135], + [0, 0], + [-2.135, 0.237], + [0, 0], + [-0.238, -2.135], + [0, 0], + ], + o: [ + [0, 0], + [-2.135, 0.237], + [0, 0], + [-0.237, -2.136], + [0, 0], + [2.136, -0.237], + [0, 0], + [0.238, 2.136], + ], + v: [ + [24.912, 19.24], + [-20.08, 24.24], + [-24.376, 20.803], + [-28.35, -14.944], + [-24.913, -19.241], + [20.079, -24.241], + [24.376, -20.803], + [28.348, 14.943], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.226999993418, 0.681999954523, 0.834999952129, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [31.22, 27.114], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 3, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 28, + ty: 4, + nm: "Layer 25 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [-16.5] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [17.383] }, + t: 150, + s: [0], + }, + { t: 299, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 0.871 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [664.045, 366.181, 0], + to: [-5.489, -4.528, 0], + ti: [15.194, 12.535, 0], + }, + { + i: { x: 0.667, y: 0.918 }, + o: { x: 0.333, y: 0.082 }, + t: 69, + s: [696.834, 319.132, 0], + to: [-21.714, -17.914, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 0.889 }, + o: { x: 0.333, y: 0.111 }, + t: 150, + s: [584.045, 300.181, 0], + to: [0, 0, 0], + ti: [-21.839, -18.017, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0.094 }, + t: 231, + s: [583.266, 381.488, 0], + to: [15.037, 12.405, 0], + ti: [-5.437, -4.485, 0], + }, + { t: 299, s: [664.045, 366.181, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [10.425, 10.425, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [0.028, 0.028, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [100, 100, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [-0.966, -0.966, 0] }, + t: 150, + s: [136, 136, 100], + }, + { t: 299, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -5.62], + [5.62, 0], + [0, 5.62], + [-5.62, 0], + ], + o: [ + [0, 5.62], + [-5.62, 0], + [0, -5.62], + [5.62, 0], + ], + v: [ + [10.175, 0], + [0, 10.175], + [-10.175, 0], + [0, -10.175], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [10.425, 10.425], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 29, + ty: 4, + nm: "Layer 26 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [-16.5] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [17.383] }, + t: 150, + s: [0], + }, + { t: 299, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 0.901 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [549.243, 291.294, 0], + to: [-4.255, 2.882, 0], + ti: [11.779, -7.979, 0], + }, + { + i: { x: 0.667, y: 0.895 }, + o: { x: 0.333, y: 0.105 }, + t: 69, + s: [483.945, 245.786, 0], + to: [-16.826, 11.398, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 0.86 }, + o: { x: 0.333, y: 0.14 }, + t: 150, + s: [487.243, 333.294, 0], + to: [0, 0, 0], + ti: [-16.922, 11.463, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0.132 }, + t: 231, + s: [550.28, 349.559, 0], + to: [11.657, -7.897, 0], + ti: [-4.215, 2.855, 0], + }, + { t: 299, s: [549.243, 291.294, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [12.548, 12.548, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [0.028, 0.028, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [100, 100, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [-0.966, -0.966, 0] }, + t: 150, + s: [136, 136, 100], + }, + { t: 299, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -6.792], + [6.792, 0], + [0, 6.792], + [-6.791, 0], + ], + o: [ + [0, 6.792], + [-6.791, 0], + [0, -6.792], + [6.792, 0], + ], + v: [ + [12.298, 0], + [-0.001, 12.298], + [-12.298, 0], + [-0.001, -12.298], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.226999993418, 0.681999954523, 0.834999952129, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [12.547, 12.548], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 30, + ty: 4, + nm: "Layer 27 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [-16.5] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [17.383] }, + t: 150, + s: [0], + }, + { t: 299, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 0.873 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [394.833, 324.785, 0], + to: [2.333, -2.471, 0], + ti: [-6.459, 6.839, 0], + }, + { + i: { x: 0.667, y: 0.882 }, + o: { x: 0.333, y: 0.118 }, + t: 69, + s: [439.803, 366.934, 0], + to: [9.227, -9.77, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 0.847 }, + o: { x: 0.333, y: 0.153 }, + t: 150, + s: [428.833, 288.785, 0], + to: [0, 0, 0], + ti: [9.28, -9.826, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0.133 }, + t: 231, + s: [371.619, 271.128, 0], + to: [-6.393, 6.769, 0], + ti: [2.311, -2.447, 0], + }, + { t: 299, s: [394.833, 324.785, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [4.922, 4.921, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [0.028, 0.028, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [100, 100, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [-0.966, -0.966, 0] }, + t: 150, + s: [136, 136, 100], + }, + { t: 299, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -2.58], + [2.58, 0], + [0, 2.58], + [-2.58, 0], + ], + o: [ + [0, 2.58], + [-2.58, 0], + [0, -2.58], + [2.58, 0], + ], + v: [ + [4.672, 0], + [0, 4.671], + [-4.672, 0], + [0, -4.671], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.238999998803, 0.522000002394, 0.991999966491, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [4.922, 4.921], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 31, + ty: 4, + nm: "Layer 28 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1.365] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0.362] }, + t: 150, + s: [-48], + }, + { t: 299, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 0.902 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [371.861, 398.399, 0], + to: [-3.981, -1.784, 0], + ti: [11.019, 4.94, 0], + }, + { + i: { x: 0.667, y: 0.846 }, + o: { x: 0.333, y: 0.154 }, + t: 69, + s: [342.324, 322.951, 0], + to: [-15.74, -7.056, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 0.815 }, + o: { x: 0.333, y: 0.185 }, + t: 150, + s: [313.861, 372.399, 0], + to: [0, 0, 0], + ti: [-15.83, -7.096, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0.083 }, + t: 231, + s: [276.637, 397.091, 0], + to: [10.905, 4.888, 0], + ti: [-3.943, -1.768, 0], + }, + { t: 299, s: [371.861, 398.399, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [33.193, 29.435, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [0.028, 0.028, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [100, 100, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [-0.966, -0.966, 0] }, + t: 150, + s: [136, 136, 100], + }, + { t: 299, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0.677, 0], + [0.255, 0.055], + [0.515, 0.806], + [0, 0], + [-1.052, 0.67], + [-0.672, -1.054], + [0, 0], + [0, 0], + [-0.678, -1.051], + [1.049, -0.676], + [0, 0], + ], + o: [ + [-0.255, 0], + [-0.934, -0.204], + [0, 0], + [-0.669, -1.052], + [1.051, -0.668], + [0, 0], + [0, 0], + [1.045, -0.678], + [0.677, 1.049], + [0, 0], + [-0.581, 0.376], + ], + v: [ + [-6.779, 8.809], + [-7.546, 8.727], + [-9.792, 7.162], + [-15.329, -1.538], + [-14.636, -4.658], + [-11.515, -3.965], + [-6.498, 3.921], + [12.197, -8.132], + [15.321, -7.457], + [14.646, -4.332], + [-4.856, 8.24], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 1, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [36.391, 29.202], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [-0.206, 0.874], + [0, 0], + [0.876, 0.208], + [0, 0], + [0.207, -0.875], + [0, 0], + [-0.874, -0.208], + [0, 0], + ], + o: [ + [0.884, 0.208], + [0, 0], + [0.208, -0.875], + [0, 0], + [-0.872, -0.214], + [0, 0], + [-0.207, 0.876], + [0, 0], + [0, 0], + ], + v: [ + [17.492, 24.619], + [19.455, 23.41], + [27.764, -11.585], + [26.553, -13.549], + [-17.492, -24.004], + [-19.456, -22.793], + [-27.763, 12.199], + [-26.554, 14.163], + [17.493, 24.619], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [2.785, 0], + [0.476, 0.112], + [0, 0], + [0, 0], + [-0.782, 3.3], + [0, 0], + [-3.293, -0.782], + [0, 0], + [0.781, -3.3], + [0, 0], + ], + o: [ + [-0.468, 0], + [0, 0], + [0, 0], + [-3.298, -0.782], + [0, 0], + [0.784, -3.298], + [0, 0], + [3.299, 0.783], + [0, 0], + [-0.669, 2.823], + ], + v: [ + [17.869, 29.184], + [16.45, 29.017], + [16.449, 29.017], + [-27.597, 18.561], + [-32.161, 11.157], + [-23.852, -23.838], + [-16.449, -28.402], + [27.598, -17.947], + [32.162, -10.541], + [23.852, 24.454], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 2", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 1, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 2", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.136999990426, 0.219999994016, 0.388000009574, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [33.193, 29.435], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 5, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [2.091, 0.496], + [0, 0], + [-0.496, 2.091], + [0, 0], + [-2.091, -0.497], + [0, 0], + [0.497, -2.091], + [0, 0], + ], + o: [ + [0, 0], + [-2.09, -0.496], + [0, 0], + [0.496, -2.091], + [0, 0], + [2.09, 0.496], + [0, 0], + [-0.496, 2.091], + ], + v: [ + [16.97, 26.511], + [-27.075, 16.055], + [-29.962, 11.371], + [-21.654, -23.623], + [-16.97, -26.51], + [27.075, -16.054], + [29.961, -11.37], + [21.654, 23.624], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [33.193, 29.742], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 3, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 32, + ty: 4, + nm: "Layer 29 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [-16.5] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [17.383] }, + t: 150, + s: [0], + }, + { t: 299, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 0.871 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [300.95, 458.458, 0], + to: [4.118, 0.137, 0], + ti: [-11.399, -0.38, 0], + }, + { + i: { x: 0.667, y: 0.801 }, + o: { x: 0.333, y: 0.199 }, + t: 69, + s: [345.367, 501.338, 0], + to: [16.283, 0.543, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 0.872 }, + o: { x: 0.333, y: 0.128 }, + t: 150, + s: [360.95, 460.458, 0], + to: [0, 0, 0], + ti: [16.376, 0.546, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0.096 }, + t: 231, + s: [347.043, 391.327, 0], + to: [-11.281, -0.376, 0], + ti: [4.079, 0.136, 0], + }, + { t: 299, s: [300.95, 458.458, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [4.921, 4.922, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [0.028, 0.028, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [100, 100, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [-0.966, -0.966, 0] }, + t: 150, + s: [136, 136, 100], + }, + { t: 299, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -2.58], + [2.58, 0], + [0, 2.58], + [-2.58, 0], + ], + o: [ + [0, 2.58], + [-2.58, 0], + [0, -2.58], + [2.58, 0], + ], + v: [ + [4.672, 0], + [0, 4.672], + [-4.672, 0], + [0, -4.672], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.238999998803, 0.522000002394, 0.991999966491, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [4.921, 4.922], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 33, + ty: 4, + nm: "Layer 30 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [-16.5] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [17.383] }, + t: 150, + s: [0], + }, + { t: 299, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 0.847 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [226.972, 461.222, 0], + to: [-4.284, 0.811, 0], + ti: [11.537, -2.183, 0], + }, + { + i: { x: 0.667, y: 0.867 }, + o: { x: 0.333, y: 0.133 }, + t: 69, + s: [212.913, 510.152, 0], + to: [-21.676, 4.101, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 0.845 }, + o: { x: 0.333, y: 0.155 }, + t: 150, + s: [152.972, 475.222, 0], + to: [0, 0, 0], + ti: [-21.832, 4.13, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0.1 }, + t: 231, + s: [159.758, 419.992, 0], + to: [11.19, -2.117, 0], + ti: [-4.179, 0.791, 0], + }, + { t: 299, s: [226.972, 461.222, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [12.548, 12.548, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [0.028, 0.028, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [100, 100, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [-0.966, -0.966, 0] }, + t: 150, + s: [136, 136, 100], + }, + { t: 299, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -6.792], + [6.792, 0], + [0, 6.792], + [-6.791, 0], + ], + o: [ + [0, 6.792], + [-6.791, 0], + [0, -6.792], + [6.792, 0], + ], + v: [ + [12.298, 0], + [-0.001, 12.298], + [-12.298, 0], + [-0.001, -12.298], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.226999993418, 0.681999954523, 0.834999952129, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [12.548, 12.548], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 34, + ty: 4, + nm: "Layer 8 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [-16.5] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [17.383] }, + t: 150, + s: [0], + }, + { t: 299, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 0.823 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [241.041, 545.566, 0], + to: [3.705, 0.347, 0], + ti: [-9.978, -0.935, 0], + }, + { + i: { x: 0.667, y: 0.839 }, + o: { x: 0.333, y: 0.161 }, + t: 69, + s: [259.578, 585.679, 0], + to: [18.747, 1.758, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 0.876 }, + o: { x: 0.333, y: 0.124 }, + t: 150, + s: [305.041, 551.566, 0], + to: [0, 0, 0], + ti: [18.882, 1.77, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0.127 }, + t: 231, + s: [264.847, 489.611, 0], + to: [-9.678, -0.907, 0], + ti: [3.615, 0.339, 0], + }, + { t: 299, s: [241.041, 545.566, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [4.922, 4.921, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [0.028, 0.028, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [100, 100, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [-0.966, -0.966, 0] }, + t: 150, + s: [136, 136, 100], + }, + { t: 299, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -2.58], + [2.58, 0], + [0, 2.58], + [-2.58, 0], + ], + o: [ + [0, 2.58], + [-2.58, 0], + [0, -2.58], + [2.58, 0], + ], + v: [ + [4.672, 0], + [0.001, 4.671], + [-4.672, 0], + [0.001, -4.671], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.705999995213, 0.310000011968, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [4.922, 4.921], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 35, + ty: 4, + nm: "Layer 31 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [1008.503, 482.727, 0], + to: [-9.333, 2.667, 0], + ti: [-1, 10.667, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 60, + s: [952.503, 498.727, 0], + to: [1, -10.667, 0], + ti: [-9.333, 2.667, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 120, + s: [1014.503, 418.727, 0], + to: [9.333, -2.667, 0], + ti: [10.333, -13.333, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 180, + s: [1008.503, 482.727, 0], + to: [-10.333, 13.333, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 240, + s: [952.503, 498.727, 0], + to: [0, 0, 0], + ti: [-9.333, 2.667, 0], + }, + { t: 299, s: [1008.503, 482.727, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [46.217, 46.216, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -25.525], + [25.524, 0], + [0, 25.525], + [-25.525, 0], + ], + o: [ + [0, 25.525], + [-25.525, 0], + [0, -25.525], + [25.524, 0], + ], + v: [ + [46.216, 0], + [0, 46.216], + [-46.216, 0], + [0, -46.216], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.921568627451, 0.976470588235, 0.996078431373, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [46.216, 46.217], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 36, + ty: 4, + nm: "Layer 32 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [816.41, 282.466, 0], + to: [11.333, 0, 0], + ti: [-11, -7.333, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 60, + s: [884.41, 282.466, 0], + to: [11, 7.333, 0], + ti: [11.333, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 120, + s: [882.41, 326.466, 0], + to: [-11.333, 0, 0], + ti: [-0.333, 7.333, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 180, + s: [816.41, 282.466, 0], + to: [0.333, -7.333, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 240, + s: [884.41, 282.466, 0], + to: [0, 0, 0], + ti: [11.333, 0, 0], + }, + { t: 299, s: [816.41, 282.466, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [14.04, 14.04, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-5.483, -5.483], + [5.483, -5.483], + [5.483, 5.483], + [-5.483, 5.483], + ], + o: [ + [5.483, 5.483], + [-5.483, 5.483], + [-5.483, -5.483], + [5.483, -5.483], + ], + v: [ + [9.928, -9.927], + [9.928, 9.928], + [-9.927, 9.928], + [-9.927, -9.927], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.921568627451, 0.976470588235, 0.996078431373, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [14.039, 14.04], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 37, + ty: 4, + nm: "Layer 33 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [455.367, 239.317, 0], + to: [-14.667, -4.333, 0], + ti: [-14.667, 4.333, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 60, + s: [367.367, 213.317, 0], + to: [14.667, -4.333, 0], + ti: [-14.667, -4.333, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 120, + s: [543.367, 213.317, 0], + to: [14.667, 4.333, 0], + ti: [29.333, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 180, + s: [455.367, 239.317, 0], + to: [-29.333, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 240, + s: [367.367, 213.317, 0], + to: [0, 0, 0], + ti: [-14.667, -4.333, 0], + }, + { t: 299, s: [455.367, 239.317, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [20.465, 20.465, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -11.303], + [11.303, 0], + [0, 11.302], + [-11.303, 0], + ], + o: [ + [0, 11.302], + [-11.303, 0], + [0, -11.303], + [11.303, 0], + ], + v: [ + [20.465, 0], + [0, 20.465], + [-20.465, 0], + [0, -20.465], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.921568627451, 0.976470588235, 0.996078431373, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [20.465, 20.465], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 38, + ty: 4, + nm: "Layer 34 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [82.13, 571.278, 0], + to: [-2, -14, 0], + ti: [2.333, -10.333, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 60, + s: [70.13, 487.278, 0], + to: [-2.333, 10.333, 0], + ti: [-2, -14, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 120, + s: [68.13, 633.278, 0], + to: [2, 14, 0], + ti: [-0.333, 24.333, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 180, + s: [82.13, 571.278, 0], + to: [0.333, -24.333, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 240, + s: [70.13, 487.278, 0], + to: [0, 0, 0], + ti: [-2, -14, 0], + }, + { t: 299, s: [82.13, 571.278, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [46.216, 46.216, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -25.524], + [25.524, 0], + [0, 25.525], + [-25.525, 0], + ], + o: [ + [0, 25.525], + [-25.525, 0], + [0, -25.524], + [25.524, 0], + ], + v: [ + [46.216, 0], + [0, 46.216], + [-46.216, 0], + [0, -46.216], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.921568627451, 0.976470588235, 0.996078431373, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [46.216, 46.216], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 39, + ty: 4, + nm: "Shape Layer 6", + sr: 1, + ks: { + o: { a: 0, k: 50, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [540, 540, 0], ix: 2 }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { a: 0, k: [142.202, 142.202, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + d: 1, + ty: "el", + s: { a: 0, k: [394, 394], ix: 2 }, + p: { a: 0, k: [0, 0], ix: 3 }, + nm: "Ellipse Path 1", + mn: "ADBE Vector Shape - Ellipse", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.227450980392, 0.682352941176, 0.835294117647, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 2, ix: 5 }, + lc: 1, + lj: 1, + ml: 4, + bm: 0, + d: [ + { n: "d", nm: "dash", v: { a: 0, k: 31, ix: 1 } }, + { n: "o", nm: "offset", v: { a: 0, k: 0, ix: 7 } }, + ], + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [13, 27], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Ellipse 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "tm", + s: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 73, + s: [0], + }, + { t: 124, s: [60] }, + ], + ix: 1, + }, + e: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 56, + s: [0], + }, + { t: 107, s: [60] }, + ], + ix: 2, + }, + o: { a: 0, k: 260, ix: 3 }, + m: 1, + ix: 2, + nm: "Trim Paths 1", + mn: "ADBE Vector Filter - Trim", + hd: false, + }, + ], + ip: 56, + op: 356, + st: 56, + bm: 0, + }, + { + ddd: 0, + ind: 40, + ty: 4, + nm: "Shape Layer 3", + sr: 1, + ks: { + o: { a: 0, k: 50, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [540, 540, 0], ix: 2 }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { a: 0, k: [134.583, 134.583, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + d: 1, + ty: "el", + s: { a: 0, k: [394, 394], ix: 2 }, + p: { a: 0, k: [0, 0], ix: 3 }, + nm: "Ellipse Path 1", + mn: "ADBE Vector Shape - Ellipse", + hd: false, + }, + { + ty: "st", + c: { + a: 0, + k: [0.227450980392, 0.682352941176, 0.835294117647, 1], + ix: 3, + }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 2, ix: 5 }, + lc: 1, + lj: 1, + ml: 4, + bm: 0, + d: [ + { n: "d", nm: "dash", v: { a: 0, k: 31, ix: 1 } }, + { n: "o", nm: "offset", v: { a: 0, k: 0, ix: 7 } }, + ], + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [13, 27], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Ellipse 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "tm", + s: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 149, + s: [0], + }, + { t: 200, s: [60] }, + ], + ix: 1, + }, + e: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 132, + s: [0], + }, + { t: 183, s: [60] }, + ], + ix: 2, + }, + o: { a: 0, k: 260, ix: 3 }, + m: 1, + ix: 2, + nm: "Trim Paths 1", + mn: "ADBE Vector Filter - Trim", + hd: false, + }, + ], + ip: 132, + op: 432, + st: 132, + bm: 0, + }, + { + ddd: 0, + ind: 41, + ty: 4, + nm: "Shape Layer 5", + sr: 1, + ks: { + o: { a: 0, k: 50, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [540, 540, 0], ix: 2 }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { a: 0, k: [124.107, 124.107, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + d: 1, + ty: "el", + s: { a: 0, k: [394, 394], ix: 2 }, + p: { a: 0, k: [0, 0], ix: 3 }, + nm: "Ellipse Path 1", + mn: "ADBE Vector Shape - Ellipse", + hd: false, + }, + { + ty: "st", + c: { a: 0, k: [1, 0.725490196078, 0.352941176471, 1], ix: 3 }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 2, ix: 5 }, + lc: 1, + lj: 1, + ml: 4, + bm: 0, + d: [ + { n: "d", nm: "dash", v: { a: 0, k: 31, ix: 1 } }, + { n: "o", nm: "offset", v: { a: 0, k: 0, ix: 7 } }, + ], + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [13, 27], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Ellipse 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "tm", + s: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 123, + s: [0], + }, + { t: 174, s: [60] }, + ], + ix: 1, + }, + e: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 106, + s: [0], + }, + { t: 157, s: [60] }, + ], + ix: 2, + }, + o: { a: 0, k: 260, ix: 3 }, + m: 1, + ix: 2, + nm: "Trim Paths 1", + mn: "ADBE Vector Filter - Trim", + hd: false, + }, + ], + ip: 106, + op: 406, + st: 106, + bm: 0, + }, + { + ddd: 0, + ind: 42, + ty: 4, + nm: "Shape Layer 2", + sr: 1, + ks: { + o: { a: 0, k: 50, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [540, 540, 0], ix: 2 }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { a: 0, k: [124.107, 124.107, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + d: 1, + ty: "el", + s: { a: 0, k: [394, 394], ix: 2 }, + p: { a: 0, k: [0, 0], ix: 3 }, + nm: "Ellipse Path 1", + mn: "ADBE Vector Shape - Ellipse", + hd: false, + }, + { + ty: "st", + c: { a: 0, k: [1, 0.725490196078, 0.352941176471, 1], ix: 3 }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 2, ix: 5 }, + lc: 1, + lj: 1, + ml: 4, + bm: 0, + d: [ + { n: "d", nm: "dash", v: { a: 0, k: 31, ix: 1 } }, + { n: "o", nm: "offset", v: { a: 0, k: 0, ix: 7 } }, + ], + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [13, 27], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Ellipse 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "tm", + s: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 99, + s: [0], + }, + { t: 150, s: [60] }, + ], + ix: 1, + }, + e: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 82, + s: [0], + }, + { t: 133, s: [60] }, + ], + ix: 2, + }, + o: { a: 0, k: 260, ix: 3 }, + m: 1, + ix: 2, + nm: "Trim Paths 1", + mn: "ADBE Vector Filter - Trim", + hd: false, + }, + ], + ip: 82, + op: 382, + st: 82, + bm: 0, + }, + { + ddd: 0, + ind: 43, + ty: 4, + nm: "Shape Layer 4", + sr: 1, + ks: { + o: { a: 0, k: 50, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [540, 540, 0], ix: 2 }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + d: 1, + ty: "el", + s: { a: 0, k: [394, 394], ix: 2 }, + p: { a: 0, k: [0, 0], ix: 3 }, + nm: "Ellipse Path 1", + mn: "ADBE Vector Shape - Ellipse", + hd: false, + }, + { + ty: "st", + c: { a: 0, k: [0.372549019608, 0.607843137255, 1, 1], ix: 3 }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 4, ix: 5 }, + lc: 1, + lj: 1, + ml: 4, + bm: 0, + d: [ + { n: "d", nm: "dash", v: { a: 0, k: 31, ix: 1 } }, + { n: "o", nm: "offset", v: { a: 0, k: 0, ix: 7 } }, + ], + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [13, 27], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Ellipse 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "tm", + s: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 173, + s: [0], + }, + { t: 224, s: [60] }, + ], + ix: 1, + }, + e: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 156, + s: [0], + }, + { t: 207, s: [60] }, + ], + ix: 2, + }, + o: { a: 0, k: 260, ix: 3 }, + m: 1, + ix: 2, + nm: "Trim Paths 1", + mn: "ADBE Vector Filter - Trim", + hd: false, + }, + ], + ip: 156, + op: 456, + st: 156, + bm: 0, + }, + { + ddd: 0, + ind: 44, + ty: 4, + nm: "Shape Layer 1", + sr: 1, + ks: { + o: { a: 0, k: 50, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [540, 540, 0], ix: 2 }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + d: 1, + ty: "el", + s: { a: 0, k: [394, 394], ix: 2 }, + p: { a: 0, k: [0, 0], ix: 3 }, + nm: "Ellipse Path 1", + mn: "ADBE Vector Shape - Ellipse", + hd: false, + }, + { + ty: "st", + c: { a: 0, k: [0.372549019608, 0.607843137255, 1, 1], ix: 3 }, + o: { a: 0, k: 100, ix: 4 }, + w: { a: 0, k: 4, ix: 5 }, + lc: 1, + lj: 1, + ml: 4, + bm: 0, + d: [ + { n: "d", nm: "dash", v: { a: 0, k: 31, ix: 1 } }, + { n: "o", nm: "offset", v: { a: 0, k: 0, ix: 7 } }, + ], + nm: "Stroke 1", + mn: "ADBE Vector Graphic - Stroke", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [13, 27], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Ellipse 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "tm", + s: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 49, + s: [0], + }, + { t: 100, s: [60] }, + ], + ix: 1, + }, + e: { + a: 1, + k: [ + { + i: { x: [0.833], y: [0.833] }, + o: { x: [0.167], y: [0.167] }, + t: 32, + s: [0], + }, + { t: 83, s: [60] }, + ], + ix: 2, + }, + o: { a: 0, k: 260, ix: 3 }, + m: 1, + ix: 2, + nm: "Trim Paths 1", + mn: "ADBE Vector Filter - Trim", + hd: false, + }, + ], + ip: 32, + op: 332, + st: 32, + bm: 0, + }, + { + ddd: 0, + ind: 45, + ty: 4, + nm: "Layer 3 Outlines", + sr: 1, + ks: { + o: { a: 0, k: 30, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [550.755, 536.45, 0], ix: 2 }, + a: { a: 0, k: [422.409, 297.133, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [8.522, -27.406], + [0.467, -5.252], + [7.26, -25.502], + [10.256, -29.976], + [-18.403, -43.162], + [-17.694, -13.37], + [-33.611, 2.615], + [-50.295, -5.906], + [-7.124, -9.475], + [-7.62, -10.534], + [-2.128, -2.571], + [0, 0], + [-2.482, 3.957], + [1.237, 25.378], + [-4.947, 26.228], + [-17.972, 26.819], + [-2.357, 36.035], + [-0.024, 0.409], + [59.157, 19.455], + [0.004, 0.002], + [33.486, 4.732], + [22.439, 0.057], + [4.892, -0.143], + [60.904, -31.971], + ], + o: [ + [-1.608, 5.171], + [-2.289, 25.751], + [-8.691, 30.532], + [-15.154, 44.294], + [8.87, 20.801], + [27.277, 20.609], + [50.024, -3.89], + [13.001, 1.526], + [8.085, 10.753], + [1.962, 2.713], + [0, 0], + [2.856, -3.705], + [13.053, -20.798], + [-1.3, -26.693], + [6.209, -32.916], + [19.848, -29.619], + [0.026, -0.408], + [3.685, -62.165], + [0, 0], + [-33.686, -11.078], + [-22.672, -3.204], + [-4.906, -0.012], + [-64.974, 1.909], + [-25.412, 13.34], + ], + v: [ + [-305.121, -150.5], + [-308.119, -134.858], + [-308.983, -57.069], + [-353.089, 26.308], + [-349.112, 163.397], + [-309.592, 216.9], + [-212.964, 239.415], + [-59.86, 219.775], + [-30.965, 238.18], + [-9.296, 272.889], + [-3.153, 280.812], + [259.838, 280.812], + [267.865, 269.32], + [287.266, 199.061], + [280.227, 119.627], + [329.21, 29.896], + [363.431, -71.08], + [363.507, -72.306], + [268.824, -210.624], + [142.951, -252.022], + [42.103, -275.858], + [-25.592, -280.812], + [-40.288, -280.599], + [-229.81, -230.992], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [0.603921568627, 0.909803921569, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [399.698, 313.453], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [53.973, -4.086], + [9.858, -0.335], + [-33.686, -11.079], + [0, 0], + [3.685, -62.165], + [0.026, -0.409], + [19.848, -29.619], + [6.209, -32.915], + [-1.3, -26.693], + [13.052, -20.799], + [-13.614, 7.846], + [-12.042, 39.03], + [7.214, 31.845], + [-3.883, 34.067], + [-0.527, 2.842], + [1.749, 20.939], + [8.518, 13.396], + [49.454, 18.845], + [5.001, 1.638], + ], + o: [ + [-11.567, 0.875], + [33.486, 4.732], + [0.004, 0.001], + [59.157, 19.456], + [-0.024, 0.409], + [-2.357, 36.035], + [-17.972, 26.819], + [-4.947, 26.229], + [1.237, 25.378], + [15.222, -4.194], + [38.79, -22.353], + [9.623, -31.192], + [-7.406, -32.695], + [0.326, -2.863], + [3.84, -20.723], + [-1.322, -15.82], + [-28.278, -44.475], + [-4.938, -1.882], + [-51.841, -16.983], + ], + v: [ + [-145.703, -273.095], + [-177.729, -271.294], + [-76.881, -247.458], + [48.992, -206.061], + [143.675, -67.742], + [143.599, -66.516], + [109.378, 34.46], + [60.395, 124.19], + [67.434, 203.625], + [48.034, 273.884], + [91.486, 255.946], + [169.468, 158.261], + [173.099, 66.055], + [157.073, -33.667], + [158.375, -42.222], + [168.648, -104.13], + [151.842, -148.19], + [28.49, -242.618], + [13.576, -247.901], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [0.603921568627, 0.909803921569, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [619.53, 308.89], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 3, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-26.834, -15.538], + [-40.576, 0.337], + [-35.43, 8.609], + [-17.33, 3.325], + [12.994, 1.544], + [50.042, -3.519], + [27.176, 20.105], + [8.769, 20.199], + [-15.368, 42.841], + [-8.839, 29.539], + [-2.413, 24.939], + [-1.633, 5.002], + [-25.476, 12.798], + [-64.983, 1.524], + [61.92, 13.155], + [43.397, -62.791], + [3.354, -6.966], + [-6.958, -33.711], + [9.038, -42.191], + [2.854, -25.44], + [-7.778, -17.308], + ], + o: [ + [35.189, 20.375], + [36.52, -0.303], + [17.312, -4.206], + [-7.078, -9.217], + [-50.266, -5.973], + [-33.624, 2.365], + [-17.629, -13.042], + [-18.194, -41.911], + [10.401, -28.993], + [7.383, -24.673], + [0.492, -5.086], + [8.655, -26.512], + [61.058, -30.673], + [-36.939, -6.18], + [-73.548, -15.625], + [-4.426, 6.404], + [-15.011, 31.17], + [8.181, 39.631], + [-5.505, 25.698], + [-2.23, 19.884], + [12.657, 28.163], + ], + v: [ + [-93.587, 253.945], + [23.512, 281.768], + [131.947, 266.505], + [183.711, 254.082], + [154.906, 236.104], + [1.708, 254.369], + [-94.809, 232.071], + [-134.07, 180.035], + [-137.383, 47.189], + [-92.874, -33.375], + [-91.635, -108.741], + [-88.561, -123.881], + [-12.861, -201.494], + [176.899, -248.611], + [43.08, -279.055], + [-156.493, -177.912], + [-168.167, -157.818], + [-180.454, -56.935], + [-156.025, 55.429], + [-165.848, 130.391], + [-156.628, 186.591], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [0.603921568627, 0.909803921569, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [183.711, 299.385], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 3", + np: 3, + cix: 2, + bm: 0, + ix: 3, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-22.672, -3.204], + [-11.567, 0.876], + [-51.841, -16.982], + [-4.938, -1.882], + [31.326, 10.854], + [54.611, -33.829], + ], + o: [ + [9.858, -0.335], + [53.973, -4.085], + [5.001, 1.638], + [-22.325, -24.557], + [-61.999, -21.483], + [22.438, 0.057], + ], + v: [ + [-69.262, 4.46], + [-37.236, 2.659], + [122.043, 27.853], + [136.957, 33.136], + [54.839, -21.381], + [-136.957, -0.494], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [0.603921568627, 0.909803921569, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [511.063, 33.136], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 4", + np: 3, + cix: 2, + bm: 0, + ix: 4, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [1.963, 2.713], + [8.084, 10.753], + [17.292, -4.431], + [36.517, -0.501], + [35.29, 20.847], + [12.797, 29.001], + [-24.44, -31.53], + [0, 0], + ], + o: [ + [-7.62, -10.533], + [-17.313, 3.521], + [-35.385, 9.066], + [-40.574, 0.556], + [-26.912, -15.897], + [3.572, 39.998], + [0, 0], + [-2.129, -2.57], + ], + v: [ + [178.098, 47.343], + [156.43, 12.635], + [104.728, 25.724], + [-3.628, 42.035], + [-120.866, 13.923], + [-184.242, -55.266], + [-141.726, 55.266], + [184.242, 55.266], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [0.603921568627, 0.909803921569, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [212.303, 539], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 5", + np: 3, + cix: 2, + bm: 0, + ix: 5, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-7.406, -32.695], + [9.623, -31.192], + [38.79, -22.353], + [15.222, -4.194], + [2.856, -3.704], + [0, 0], + [-2.98, 51.307], + [1.564, 13.805], + [35.602, 40.438], + [0.326, -2.863], + ], + o: [ + [7.214, 31.845], + [-12.042, 39.03], + [-13.615, 7.846], + [-2.483, 3.956], + [0, 0], + [33.042, -39.327], + [0.805, -13.878], + [-6.062, -53.502], + [-0.527, 2.842], + [-3.883, 34.067], + ], + v: [ + [40.452, -55.522], + [36.821, 36.684], + [-41.161, 134.369], + [-84.614, 152.307], + [-92.642, 163.798], + [37.273, 163.798], + [92.225, 22.742], + [91.106, -18.884], + [25.728, -163.798], + [24.425, -155.243], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "mm", + mm: 4, + nm: "Merge Paths 1", + mn: "ADBE Vector Filter - Merge", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [0.603921568627, 0.909803921569, 1, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [752.177, 430.467], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 6", + np: 3, + cix: 2, + bm: 0, + ix: 6, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 300, + st: 0, + bm: 0, + }, + ], + markers: [], + chars: [ + { + ch: "t", + size: 63, + style: "Light", + w: 32.9, + data: { + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-1.267, 0.233], + [-0.734, 0.267], + [-0.234, 0.5], + [0, 0.534], + [1.2, 0], + [0.866, -0.3], + [1.333, 0], + [1.666, 2.134], + [0, 4.067], + [0, 0], + [0, 0], + [0, 1.667], + [1.866, 0], + [0, 0], + [0, 0], + [2, 0], + [0, -2.066], + [0, 0], + [0, 0], + [0, -1.6], + [-1.934, 0], + [0, 0], + [0, 0], + [-2.7, -2.933], + [-5.4, 0], + ], + o: [ + [1.266, -0.234], + [0.6, -0.2], + [0.233, -0.5], + [0, -1.666], + [-0.667, 0], + [-0.867, 0.3], + [-3.867, 0], + [-1.667, -2.133], + [0, 0], + [0, 0], + [1.866, 0], + [0, -1.6], + [0, 0], + [0, 0], + [0, -2.066], + [-2.067, 0], + [0, 0], + [0, 0], + [-1.934, 0], + [0, 1.667], + [0, 0], + [0, 0], + [0, 5.467], + [2.7, 2.934], + [1.066, 0], + ], + v: [ + [29.8, 0.45], + [32.8, -0.3], + [34.05, -1.35], + [34.4, -2.9], + [32.6, -5.4], + [30.3, -4.95], + [27, -4.5], + [18.7, -7.7], + [16.2, -17], + [16.2, -43.6], + [29.7, -43.6], + [32.5, -46.1], + [29.7, -48.5], + [16.2, -48.5], + [16.2, -61], + [13.2, -64.1], + [10.1, -61], + [10.1, -48.5], + [2.7, -48.5], + [-0.2, -46.1], + [2.7, -43.6], + [10.1, -43.6], + [10.1, -16.2], + [14.15, -3.6], + [26.3, 0.8], + ], + c: true, + }, + ix: 2, + }, + nm: "t", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + ], + nm: "t", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + }, + fFamily: "Nunito", + }, + { + ch: "o", + size: 63, + style: "Light", + w: 54.7, + data: { + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-3.334, 2.034], + [-1.834, 3.767], + [0, 5.134], + [1.833, 3.767], + [3.333, 2.067], + [4.6, 0], + [3.333, -2.066], + [1.833, -3.766], + [0, -5.066], + [-1.834, -3.766], + [-3.334, -2.033], + [-4.534, 0], + ], + o: [ + [3.333, -2.033], + [1.833, -3.766], + [0, -5.066], + [-1.834, -3.766], + [-3.334, -2.066], + [-4.534, 0], + [-3.334, 2.067], + [-1.834, 3.767], + [0, 5.134], + [1.833, 3.767], + [3.333, 2.034], + [4.6, 0], + ], + v: [ + [39.2, -2.25], + [46.95, -10.95], + [49.7, -24.3], + [46.95, -37.55], + [39.2, -46.3], + [27.3, -49.4], + [15.5, -46.3], + [7.75, -37.55], + [5, -24.3], + [7.75, -10.95], + [15.5, -2.25], + [27.3, 0.8], + ], + c: true, + }, + ix: 2, + }, + nm: "o", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [2.9, 3.5], + [0, 6.334], + [-2.9, 3.467], + [-4.934, 0], + [-2.934, -3.466], + [0, -6.333], + [2.933, -3.5], + [4.933, 0], + ], + o: [ + [-2.9, -3.5], + [0, -6.333], + [2.9, -3.466], + [4.933, 0], + [2.933, 3.467], + [0, 6.334], + [-2.934, 3.5], + [-4.934, 0], + ], + v: [ + [15.55, -9.55], + [11.2, -24.3], + [15.55, -39], + [27.3, -44.2], + [39.1, -39], + [43.5, -24.3], + [39.1, -9.55], + [27.3, -4.3], + ], + c: true, + }, + ix: 2, + }, + nm: "o", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + ], + nm: "o", + np: 5, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + }, + fFamily: "Nunito", + }, + { + ch: "k", + size: 63, + style: "Light", + w: 48.4, + data: { + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 2.067], + [0, 0], + [0, 0], + [0, 0], + [-0.6, -0.366], + [-0.867, 0], + [-0.434, 1], + [1.133, 1.067], + [0, 0], + [0, 0], + [0.4, 0.967], + [1.2, 0], + [0.6, -0.4], + [0.733, -0.666], + [0, 0], + [0, 0], + [0, 0], + [2, 0], + [0, -2.066], + [0, 0], + [-2.067, 0], + ], + o: [ + [0, 0], + [0, 0], + [0, 0], + [0.866, 0.8], + [0.6, 0.366], + [1.133, 0], + [0.433, -1], + [0, 0], + [0, 0], + [1, -1], + [-0.4, -0.966], + [-0.867, 0], + [-0.6, 0.4], + [0, 0], + [0, 0], + [0, 0], + [0, -2.066], + [-2.067, 0], + [0, 0], + [0, 2.067], + [2, 0], + ], + v: [ + [14.1, -2.5], + [14.1, -23.3], + [14.3, -23.3], + [38.8, -1.7], + [41, 0.05], + [43.2, 0.6], + [45.55, -0.9], + [44.5, -4], + [20.8, -25.1], + [42.4, -44.8], + [43.3, -47.75], + [40.9, -49.2], + [38.7, -48.6], + [36.7, -47], + [14.3, -26.5], + [14.1, -26.5], + [14.1, -68], + [11.1, -71.1], + [8, -68], + [8, -2.5], + [11.1, 0.6], + ], + c: true, + }, + ix: 2, + }, + nm: "k", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + ], + nm: "k", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + }, + fFamily: "Nunito", + }, + { + ch: "a", + size: 63, + style: "Light", + w: 52.2, + data: { + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-2.7, 1.667], + [-1.334, 3], + [0, 0], + [-2, 0], + [0, 2.067], + [0, 0], + [2.833, 3], + [5.866, 0], + [2.933, -0.766], + [2.733, -1.533], + [0.033, -1.033], + [-0.7, -0.633], + [-1.2, 0.667], + [-2.4, 0.667], + [-2.534, 0], + [-1.8, -2.033], + [0, -4.466], + [0, 0], + [0, 0], + [4.266, -0.866], + [1.8, -2.033], + [0, -3.6], + [-1.5, -2.2], + [-2.567, -1.266], + [-3.267, 0], + ], + o: [ + [2.7, -1.666], + [0, 0], + [0, 2.067], + [1.866, 0], + [0, 0], + [0, -6.2], + [-2.834, -3], + [-2.734, 0], + [-2.934, 0.767], + [-1.067, 0.534], + [-0.034, 1.034], + [0.7, 0.634], + [2.6, -1.466], + [2.4, -0.666], + [3.933, 0], + [1.8, 2.034], + [0, 0], + [0, 0], + [-7.467, 0], + [-4.267, 0.867], + [-1.8, 2.034], + [0, 2.734], + [1.5, 2.2], + [2.566, 1.266], + [3.6, 0], + ], + v: [ + [32.45, -1.7], + [38.5, -8.7], + [38.5, -2.5], + [41.5, 0.6], + [44.3, -2.5], + [44.3, -31.1], + [40.05, -44.9], + [27, -49.4], + [18.5, -48.25], + [10, -44.8], + [8.35, -42.45], + [9.35, -39.95], + [12.2, -40], + [19.7, -43.2], + [27.1, -44.2], + [35.7, -41.15], + [38.4, -31.4], + [38.4, -27.8], + [35.3, -27.8], + [17.7, -26.5], + [8.6, -22.15], + [5.9, -13.7], + [8.15, -6.3], + [14.25, -1.1], + [23, 0.8], + ], + c: true, + }, + ix: 2, + }, + nm: "a", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [2.066, 1.867], + [0, 3], + [-1.334, 1.334], + [-3.367, 0.534], + [-6, 0], + [0, 0], + [0, 0], + [1.266, -2.4], + [2.166, -1.366], + [2.866, 0], + ], + o: [ + [-2.067, -1.866], + [0, -2.333], + [1.333, -1.333], + [3.366, -0.533], + [0, 0], + [0, 0], + [0, 3.067], + [-1.267, 2.4], + [-2.167, 1.367], + [-3.534, 0], + ], + v: [ + [15.4, -6.9], + [12.3, -14.2], + [14.3, -19.7], + [21.35, -22.5], + [35.4, -23.3], + [38.4, -23.3], + [38.4, -20], + [36.5, -11.8], + [31.35, -6.15], + [23.8, -4.1], + ], + c: true, + }, + ix: 2, + }, + nm: "a", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + ], + nm: "a", + np: 5, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + }, + fFamily: "Nunito", + }, + { + ch: ".", + size: 63, + style: "Light", + w: 21.9, + data: { + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [-0.834, 0.867], + [0, 1.334], + [0.833, 0.867], + [1.4, 0], + [0.866, -0.866], + [0, -1.333], + [-0.867, -0.866], + [-1.334, 0], + ], + o: [ + [0.833, -0.866], + [0, -1.333], + [-0.834, -0.866], + [-1.334, 0], + [-0.867, 0.867], + [0, 1.334], + [0.866, 0.867], + [1.4, 0], + ], + v: [ + [14.35, -1], + [15.6, -4.3], + [14.35, -7.6], + [11, -8.9], + [7.7, -7.6], + [6.4, -4.3], + [7.7, -1], + [11, 0.3], + ], + c: true, + }, + ix: 2, + }, + nm: ".", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + ], + nm: ".", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + }, + fFamily: "Nunito", + }, + { + ch: "i", + size: 63, + style: "Light", + w: 22.2, + data: { + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 2.8], + [2.933, 0], + [0, -2.733], + [-2.934, 0], + ], + o: [ + [0, -2.733], + [-2.934, 0], + [0, 2.8], + [2.933, 0], + ], + v: [ + [15.5, -65.2], + [11.1, -69.3], + [6.7, -65.2], + [11.1, -61], + ], + c: true, + }, + ix: 2, + }, + nm: "i", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ind: 1, + ty: "sh", + ix: 2, + ks: { + a: 0, + k: { + i: [ + [0, 2.2], + [0, 0], + [2, 0], + [0, -2.133], + [0, 0], + [-2.067, 0], + ], + o: [ + [0, 0], + [0, -2.133], + [-2.067, 0], + [0, 0], + [0, 2.2], + [2, 0], + ], + v: [ + [14.1, -2.9], + [14.1, -45.7], + [11.1, -48.9], + [8, -45.7], + [8, -2.9], + [11.1, 0.4], + ], + c: true, + }, + ix: 2, + }, + nm: "i", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + ], + nm: "i", + np: 5, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + }, + fFamily: "Nunito", + }, + { + ch: "r", + size: 63, + style: "Light", + w: 34.2, + data: { + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 2.067], + [0, 0], + [-2.6, 2.7], + [-4.734, 0.4], + [0, 0], + [0.066, 1.867], + [0.533, 0.4], + [0.8, -0.066], + [2.9, -1.666], + [1.466, -3.133], + [0, 0], + [1.933, 0], + [0, -2.133], + [0, 0], + [-2.067, 0], + ], + o: [ + [0, 0], + [0, -4.533], + [2.6, -2.7], + [0, 0], + [2, -0.2], + [0, -0.866], + [-0.534, -0.4], + [-3.8, 0.067], + [-2.9, 1.667], + [0, 0], + [0, -2.133], + [-2.067, 0], + [0, 0], + [0, 2.067], + [2.066, 0], + ], + v: [ + [14.2, -2.5], + [14.2, -28.4], + [18.1, -39.25], + [29.1, -43.9], + [30.5, -44], + [33.4, -47.1], + [32.6, -49], + [30.6, -49.5], + [20.55, -46.9], + [14, -39.7], + [14, -46], + [11.1, -49.2], + [8, -46], + [8, -2.5], + [11.1, 0.6], + ], + c: true, + }, + ix: 2, + }, + nm: "r", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + ], + nm: "r", + np: 3, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + }, + fFamily: "Nunito", + }, + ], +}; + +export const column3Lottie = { + v: "5.5.7", + meta: { g: "LottieFiles AE 0.1.20", a: "", k: "", d: "", tc: "" }, + fr: 25, + ip: 0, + op: 303, + w: 1920, + h: 1080, + nm: "Comp 1", + ddd: 0, + assets: [ + { + id: "image_0", + w: 444, + h: 2, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbwAAAAECAYAAAD1XopzAAAAbElEQVRYR+3VsQ2AMAxE0btMwAhp6FEqxmE0RslkmBVSOZHyXVu682tsMQgggAACCGwg4LPdj6W6wa2cOCAQ8lEU18AqKwgsLRBSX7og5VIFyqfXqYmEIYAAAgggMEmAhzcJnlgEEEAAgVyBHzNPBrUtpF+yAAAAAElFTkSuQmCC", + e: 1, + }, + { + id: "image_1", + w: 14, + h: 21, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAVCAYAAAB2Wd+JAAAAqElEQVQ4T2NkIAOoGVsGMJKhj0HNyKJhVCOOkBtKgWNsuYGseFQ3sjgwABpBCfbXX/YDDy4c+EBsugU7VcHAQYCN6UcBw38GBab/DA03Lpx4QMgAFD9qGFgo/GNkaABpImQA1sAhxgC8oQoy4D8Tw4L//xke/P/PNOH2hWMXYF4gKjo0TCwc/v+DeIGRiaHhxpkTB4jSCLMF2QCwIYRCEF0eZMC/fwwOAEloS/S2pYWQAAAAAElFTkSuQmCC", + e: 1, + }, + { + id: "image_2", + w: 79, + h: 79, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE8AAABPCAYAAACqNJiGAAALL0lEQVR4Xu1ceVhTVxZ/IEIgAbGLgEr1U7E4o5U6ZXAcV6xaFRXcwBE1IsgeQDYBsQKFIqChURGrIhWrWLRGAam4UVFMcSGKC4pOEdeOG0i0NEKd76S+fAm8Le+9sBjyF3zv3nPP/d2z3nvP1UO6frQR0KPdk6WONnaj7MaOdpjw9Onz4Ra93re8XVNji0e6r1VvaV19Q515D7OfJJJySZVUUsMSG7TItDl4c935YwyNDP2fPKsbbcLhcEfYfWLex8oKsR08COltZYX0sbLEnci5ixWKb+cuSpHau/fkldeuyzkczn1TLvfYuYuV26qlZVJaKNDs1CbgAWB/vG76msc1GTjk48GWE8eNQexHfEqTZfVuDQ0y5PipUkRSfl5+4VKlrKeZWVlV1c3AtpBKrYI3fb5bmAmHK7Du09uCv9DN0HawDSuAERERFxYheeJDjc/r6n7T1zcIKD6wt0Bbg2oFPABNJmuMcnGa+t4i13mIqSlPW/zj0r3/8BGyIXOr/PK1aw+1BSKr4E12cXXqYcrL+PfIf1q3F2gt0QQQE9OEr2tqax/cu3N/PJvqzAp4/e3Gm4/+zPYgx9j4X2vXxHZnS9Jg4kQORBNxBmfzVapQbmTI2SPek83XpC9eW8bggTNoav7zUHiQvzlbTgBlNmPbDsTPcykb81TSSBaKkFNlZ++wIYWMwFuw1Gv1G0QvdlNasgFb0qaKVExCEpIYG80qeH+FOhVI5OoEuUG37h4lRQe+pzsAbfDmL/EsHuVgP4ltyVCdCN9XgGRvFtGdG2E/CHEW+wQ0m/G48Xt2bI2nMwgt8Ga788vd5rjYO0+fSujtmNorbYIHjAOAiWlCefmFiiOniwtmagqgxuDxfQNvTZv8+UAi4ICJnNw8pEEmY2SzwD6tDBFoOie19lU3qxGy+HLllwnyq1U3zhw58IOjJoNpBB4ViWtps+B/unaLqcMAm+k4dgwCGQ3ZDwCsqKzcd7JAvJCsLfqdMnhg4+Y6z5hEJnEtB4YJ0AWQSagC44L314Rfv9DI1y9lsq+o2kBK4IFXdbD/LI6uc4CJQPJPtz9VSUDb0QEOtYHuy/3kXGPO5/t2ZZeSjUsKHsRxH1lbH0uOizUkI0b0HWyg47gxrAW9eGPRBQ6lBzbSJyS88cHjV1Y10pI6ojmRgrfQ0/exaG3iB9qI45gsBl5fiOGYBuvHfy5FUtI33D5ZKB5EGzzvoNCfFi+YP4UpM9oASds0QYJv3f5v2oHdO8PxxsKVPN+gsE96WXxYHhMWYqRtRjsifYgBZ7i5E6ovLnjzFi+rzRSmWncWddXGAsDeYE5u3pn8vbtGY9HHBI/vI3CbNmXiHk3cvDaY7wg0F3r5NlZeujoEaysLEzzPgODajPUp1h2B+fbmARxQsnADpvS1Ao9I6sALwY9KxN7ek9Z0fKI0Dk/6WoHnHxZ5TZiUMARvcEjWnZ2mahS5azqRtmwPKSAIRWJsFG4OjGf71MADDztw4IBygY8nrocFL8T3EyCL3OZ1agDfqqNCi6hkPtPn/UdWfeeJtWrgrAZeQGjE7lBBwAKyraTODiBIkrigCElcHU054wEJPVpyMrzwh9w0VDPUwAteGXM7Jf7LAVTUBgBMThchcNBDtuVDhV5btqGyTdWSH9ik8FsRcaVof+6wVuClbdzYr6dZzxpQx64fNgKOTrPlp4sLlCZNKXmCyGhRiJ9PIJnK6jKwsDl7ouSMO3ruoQQvJHq1ZO2aVQ66DA7Z3MErb9n+XYE4d+cMaKsET7hx8y3/5csGkhHQ5e9g5109vO4cO7i/vxp423d+/6bL3pGLxvjpzo1lRw8bK8ELjY71nD3Taasubj2Rw6XeYrF3QJO04rIN5LoKtY1PSg32914m1OUdFKogQryXmbVjQtV5SYkCvBXRsQeS18Q6UyWgy+0AvMprVSu2bxQKFeBt2pqV67XE3VWXQaE6d4XHzcr5Di4LKcDbnbcve+6smUuoEtDldpATp36zuQs8OkJACB6aNOMR1iSZpsNce/SB+K2qulptaFMeDzNnbwWerto8SPYPFhYRrpf9CDu1o8wutWUg3q3ACwyPKlmXGDeOAU2d6drK2/J9AsXfitbN0hkEGEwU4rwzZ3/xzsvJ+laZYTjPnCbsbJuaDDCg3RW2pXbn7VPJMKJWTZvkOKHwXTwVo40STscFHt6yC1d+VZxlKLek0kQZjUQHP2wz0VnpfTHHrf5E/o/myl0V+CPu69SaqNCgfp11Um3BN4Q2gojoG/l7dykqM5WSt9RPINmSnta1k0ywCooEIv/wpt1ZWwLUwFsWGJIc5O0Z2eU08NGDa2fi/OJP0dJUpeRBCdSS+VMf6eqVMipqP3bqrFeS40VctK3auS3ZVQusAeicgVJhtKO1geA4Y9sOtQs/auDB8aOry6xAKtvxkEwHRkR3ynsrdK7egsqeO39JeeyoZvPgH1Bd9zmTa1dHhpkSrTxImyAiBhGlJHa62wIwLzD8ACDV+hAQlNmLPJ79fFj8viourW5JufK9pMlxscPxDr/f3hhCRClQHoD/HkBHU7uW/GgCINzkzy86qtgAJQSP6KYUpCZQErUyWNAu1dtsLwhVALFuSLVSW5Q5iPnSEtY4qJ6mAXBQiPKune2SAQjfN2/fceRkgfiLlouHea0W6yY8k1ImtiWGbXoAENjxlkWCZDficW/Dk9k+tifQ3vSwhAO2n0pKz7aydZhxnuoEwPM6jhp+PzM91aS9J9Ye44MkeglWyH45cQQ38iAsnwqJilk1dMjfEt41O0dlMVwW8ptfNzU7E73LQlp7BuobExY8nGnOC3bF1maQVuNCtuwymbqSqi3aANR3nMPQmvVJ8T3o3mUBFQCGIDbU5g8W6AFcf2XwIgYEz1FxiU9OFR36kIxXUskDAlA2at6z5/GMdWu7kxFs+R29/N1WQTUai1LNHlT5RctFnz1+hlnxQylUwQIICpatLC1jNK27BYmDA2Q6dpNODgq8o9XlmgTzsMjLg0JlesibaVQKlXGDZDzpAgD79u0TR3VV3+68IvtzsjQVWEV7Jm8MoGlkdoaINBsC4BZ4+vwue/kyrKy4MIMqs5TUVpUY7LwY6HfzpiKBIAFQ/EdllwaLYSbgAT20UIWouocucBpLHjpBKioMUrdWKGLkJAQR0Yz6A78ATs7ePEwnAjYuLjlN9vRpnQ+dl300ljwUwGUBISEvGl4kZa5P5WB5YQDPjMcjVRkiFdHmozSwuZmQsq6xt0WvyVRtHG2HgTVJ8ML1DbLDa6LCeXRVsz3AA3OwT5z/273/yWzJHmEg4o+25KnGgSOG9i+2GzbU3t/Tg5GktWSUDbVtGYokrfumqf5F/cGi/XvnUnUMeO0Yg6eqxrV378azKYVMHQbKG2r3fswvfMLhGC9l6ylM1sADRiEbGT9yWPbL319NiQ1fwWGa0rEBHoQsW7NzZFwT3n62Hh1EF4VV8FCitnYj+9t8PGgXh2P0j2Df5Ry69pBukIy+YIuCJr1eE8zEtmldbbEGABBHjrRPv//w4US3OS48bb/oA6EHhCXlF6TP+lha7Cm7eGOVNkDTquRhATlvkcfy5jd/euohekOGD/s7D25k2drYMHIwIGHlFyuQE6dKkQvSy/VcE5Mrf8hfJ7Nl08gcilbUlmxQeNX2g/d6uDfIXtl109e3+Mi6r8GA/v14f12ixn6B6EWDDLlRfUtBurRMInteX9/MNTF51E3fQHL1+s30tn6dm3aGQQaOpt/B0XAMGu2mT5406PavdzEfgDExNpIZGhqdlpwvf9TYxJFqUx2p8t8ukkeVuY7e7v/e7DWbjecu0QAAAABJRU5ErkJggg==", + e: 1, + }, + { + id: "image_3", + w: 81, + h: 81, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFEAAABRCAYAAACqj0o2AAAE8klEQVR4Xu2dXXLbNhDH/4DzHvcEcU9Q3aDOCaq8N6pygspK32O/J4xygipM32ufIPINnBMkOkGid5vILAlZlPiBT0oUCc54xjMCIPDHXexygV0xHPgSk/EZTu4HEHwAgVMwDDSmtADED/CTO9zjjs3mPzT6NNaENTZyxcApNP4wBNg5APp76mEOSzAsgOQaD08W+4a6F4g5cGMAv3mAphriBhDXLPo0VzX08XmjEMU/43MkyQTAHz4mazHGCsAMCZ+z2fybRX+tLo1AlPAuAfyuNYt9NGL4iAd+2QRMrxAztU1IhdoDb/sBrSVz5nPd9AZRTEckeW/2IVQevmMJzsfs7XzhYSw4QxST8UBK3z4Mho973owh8AEiVXEnF8kJopi+HANs5slN8QtIf7QvSPjQZa20higuRjMw/K0/11a3XIHzoa16W0EUr0dzCPzVaixWkxOvbHxLI4hiMj4FT2gxPr71TxuqOUgziNPRXbcBrkmbgdSG2F0VrhJRfZBaEDtmRHQVe4WEn7PZnLSv9lJClG7Mv6qBOvo5gTxT+ZG1EKUjTYbER7jqWDnfsiimkF3lVQ+xN4ZE+XyvWBTTa23pVQnxyN6FlRScGyT816q3mlKIMhrz1fmLuzVApVqXQ5yOaB1sazjrgI+m3O0pQJQB1c8HnGmbv3rJovhsd4JFiEEKFQ+xKI1bEIMUailBQRq3IU5H1wfcVNK6g1Y0YskL9u4/YpVejxCDRTZ6PFuWegNx+nICsPdGQ/W5cc5vzEHsS5jL15MXFyz6RFsjmToHVbYC+4VFcXpuKIMYVNmKIhL+C0V4JMRgla0oSiu9hkj7rn0Od1kxhMAH9j6esLAe2vGTvVJXh4nXfw4h+P9OQ/W4M4tixkLc0FECyF/s6SaUI7lcd86fkySG2KEL0gDRhd5j36sgie4cA0R3hkghBkfbjWSQRDd+ae8AMUD0QMB9CHERrLMrReknHlPqhOst+++fQQx7Ky5kswBEln8XTjzYkUz3oCmeSIfZv9uN0fteNyyKh+vINmVgPus9EnMA6bnFDGJn81LMqRj1IKPydr6QEEN02whe1njFoviU/lnvO4d10ZQiw0f2LqZKArmzOOEwkyHGzRG7/Fkcyhjta6qFIcCNKm9JYmpgQlhMD2ZOlcsghldAHYw7mQTbhzyzGg4ha6AeZCGLoHhmO/iM9Qilb5hvVISYSSMlBYazOUWcpbksVXksYW0sk8eKrKqqjCpyvkkaw/v0BmZlfl91bl8IkeVlcYmED6pSduuzTLtVcUTHeSlvU2JMag1L/sN+FM5Qsq1N0y0422XDyUOgfbXWadBVhVlZviB9Hezn+kiVm6gGhLIElhbE7L06LWnVlwCFVu2HtYRqQ+wRSO0qJFYQewDSGKCWYSk1Nt2oVrd7a9pr4G5HI3XecX+obmJXyr3cIOFjHSNSJlTWEFPVzvasKe/3mOtFKP1ALy6OapAjTePwVhLVSRJ31LvtRXnz071Cwr0V5/UGcT1D6U9SKK2NEaBbufZ5rbntHWJLYd6C80vbcqeq5awxiI8ws9xB2uTed9X3FRiumypQrh3FUT0Bk8/39PsDGTghFja1YU3u5yAQCyG2k/tzesGXPx1i6yItAVCE6Q6cL5pSVxXcxtVZNYFHtacNsifISkglSUW9QvkbLHT+xVO1dt351bX7Ce56/7RLCC+NAAAAAElFTkSuQmCC", + e: 1, + }, + { + id: "image_4", + w: 34, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAFCAYAAAAg7j5MAAAATklEQVQoU2P89evXBAYGBgOGAQT///+fwPjr168DDAwM9gPoDgZGRkZHkENAIZI/kA5hZWUVZPz582cDIyNj/QA65CEbG5sC4wA6AMVqAG1DFH/VB/4kAAAAAElFTkSuQmCC", + e: 1, + }, + { + id: "image_5", + w: 38, + h: 11, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAALCAYAAAATD/9GAAAAwUlEQVQ4T83TsQ2CQBgF4PcrsWYFN2ADKcRWLbmYiAF7NxA30M7EI6E67aQ0XKFO4AquYGvBmYPICvxvgi8v71Eg4j1AHhhFK+nTRCSFAaaMXB+tpGthqQG2jGDPprEwnhmiKxcYAbtSyZQCsfYA82IDM2ZenrOCLCgQieEC61fO8HY5vv+wB4ARB5xWsjY1sDDJQVgygNXDb2F8nmkOWmWbFjZeJD5VuHffGK20OuUtzI8id/B1ammX6VVObodvDT9K4UEMbGGsJwAAAABJRU5ErkJggg==", + e: 1, + }, + { + id: "image_6", + w: 38, + h: 35, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAjCAYAAAD48HgdAAABtElEQVRYR82XsU3DQBSG/+eGlDABUBAowVCYijABYYOwAUxA2AAmIGwQJsA0+ApyOF1yacIGoQSJO2Qrti4250QC+c6FJUuW/Om9//O9R00/mALYhEOX4Ixo1w9CBZw4xPUhOFunph90AVy7AkbA85izFu34QYeAe1fAANwIzrq0dxS0pMSTM2BE52IQ9SkBavqBcgXMk9gexWyagTljZmJkUqT05oqZWfBzMFfMVKC7CY8uczBXzFTAxYSzXg7mipmeh9PRKwtzMFfMzIJfBLNt5lBwtp/9tlIrnTBT4UG8sU4JzLaZBLoa8+i2BGbbTD34CxmzbeaXbGxM43BWqphlM98FZ1v6eZ2Hfw5mx0yiRzGI2kYwi2dmOoNVVczKNFsM/kL4kwdbZmYzmLFilsxMl4/ioLoQfhtm6jOYsWKWzCwFv5QxK2fmfPlYpZW1mqmkdzCJX+KlYHWbqc9glRmr00xT8H/NWJ1m6svH0lbWaaa+fKwGdnjch1JnxZf/+9kUfGMr68hZVb6MYDWcm8Mv2Wjpg+FKrcxeSir3LantQeXby1/aqYhmpBB+yrVeFVTyjR/kBdckkqkB9gAAAABJRU5ErkJggg==", + e: 1, + }, + { + id: "image_7", + w: 54, + h: 58, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADYAAAA6CAYAAAD7h6qmAAAEkElEQVRoQ92aTW8bVRSG33NJ2wTRxnxHoqhGSkJ2uG4FDpsaqRJLDGsShh9QZAxICDZmg1hQ14gfgOOwpu0vwGyIhcDMBjVNkHBEQBFShRMQ6od9LzrjGSsTz9gz9tieyV0md6793Pec9557xoSIDpXVEphCDE3oVCw1jmJQVLgMEJIaCGkALxz53jsgmaWrX9+w/h56MJVb0QDKOsA4aKLepcJ6kf8RWjATKA/gnK+okuI5KpbqoQNT772ZgRK86/6AOvRt1UIDprJaHEKWAFzypVD35E+oUM6HAkzlVrIAcdjNDgnFj08eTGW1mKnSawEAWUtMFsywbyHZnvvm0g+N/3DQlLj8xCP9+aU4T8WSPpFQVO9raUgDqmfo/XH3AUq7DbwUm/EGBexQoRyfiN2bNv5Vv63/sn7HmPLW2UdxZkr0m24Lw7GDeYG69e89MJR2NoYXYw97BeJ5+5AibpVXYwtFL1AMxLl0Jf64H5VMePU2Fdb5uDDGWMDMnPrWbfs5lz7c3DPCzpNBdC/0HRXKXEN2xsjBTPeruBnFN3sHuL63j8+W5vDM9Ak/oWfNtYXgWBQzzymGOlqNG5/PKp2eeggfzz85CFD7GSFeoc9L/Bm2MVLFVG6VLb3r8OXQe+eXP/H0qbZC/zRbRm4ddj9W7425M30MxJ5XYwlFN7Ng1/vgFudTDOdmTvh1vsPf3agw3KQeiWJmQasfzSvOp7Xdv7GeeHYA17M5wxpdLWu94nc0YA4hyFbOIfjR/FMjhxqJ3TtZO5sED3a+oQahr1Ijc0WVW61bhS0bwqe//mXkERvBUEPhC7pW5haBpxFoKB42DIZa0X83Dt2hoeDufmMxD0utSUMFmmNmr+J6gFD73G473FLzFIPmpMBCUeVWKwdNeSmg8NuBFBm+MPqBCfyA5nPrQDZ/CwjqJqTQnLq7fiADUYybMSv67rXX52aHMYp9QOWthqcfCKe5gYBdefXynQuzM4+xAw40CGtoieywKgUaiovnU6Wl0yfnb16Mc6fFsYp3gd2Bwg1ujnLndqAN6fHQUIotJFMaEWW2ftrI8Ge0a8RWGiBuqNgufiDUoVAHSR2tKX5DEjhMIIotXUylpUTxvpxO1/VK12ucoBXwu95Aii0lUnEpULkvpxNhhBrogI4n0rGT4m5FSaFt698PfM74VcDvfN+KsVkQkX67tmG8hwrr8AVmmIVCeuvnas9LXhhgPYMtJF5OCCGL9+R0Jqx55dsVo5JXvsEWkstFAdTDnle+wPi8UhL527Wq/cANQyINU3ksJlO6kMhs6tWRVgpB71NP81hMpvIEakQpBK0NcgWzXDBqIdgX7PlkqkISWtRCsCcYG0ZLUma7tuG53RV0jgy7nmMosmGEtWr3CtwFxmUTP7xdq3beDnpdLEzzusA4t6JqGK4H9HFRq+s+dlzUsoEdJ7VsYHyBjMI9y6tBGebBVQYJmdmqVV1ffXpdMCzz2mDJ5eIDeSofhQuk143rgEW5ynCCpcULyxlBqrH5Y7XrtxJedyeM84ivJscptzpFMDc/o1rB94qU/wFKf9xK8MSEOAAAAABJRU5ErkJggg==", + e: 1, + }, + { + id: "image_8", + w: 24, + h: 102, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAABmCAYAAADRX1FJAAAFjElEQVRoQ9WaT2gcVRzHf++p1GpJt1ghqMUVzJ+CkM221U0PGkFvQlOPYjYjeLKI240HwYPxIHiw64Lg1elGPWoKelIwXrqrbTcb6SF/pCa0StFKk1YrSPJGfrM7szNv3t/ZVPTdksy8z/v9+/7eexMChsMrORmg2w4QkvNf8bwWsDtcUnU3VFMQk/m9kpMDyuYBYC/3/CYQ5pBTH8/J5tECFJN356T0afKeiwtIDCWg7RbWAoCHNZZuAqNZkbvUgHJxBgDeMnEjEDhNTtUc/lkdAAPI+13OY/QRUnXXog9IAV550gEgHxmtvvvQ26RSQ6vDoQAUMTOOWQLWSaWWNQXYuSeYlXOT0AJv+sUJ8OjnlqvvPO69RCqzbvCuGHCyWAUCr6UCcNkkBpSLmPsjqQAAsTgkAJ3iup5y8vZrjO4Lii4JMPD/jS0GfXdS+Roi0pEEGFTv9xu34PHMPSojw3oQAVC0nlK9rQVEAi0CaPP/g7Xf4dXsfao1fEsqtXF8IAYwDbABYJNUapkk4HVnHBj7RpdBp69ch+P9e5WBJpWav/i4BeXJEgB5XwfAGOBQBprRUVJ1WxzATP+NAJ1U5QHaDMKV/ysALLZn9u8JvYk/4+gWoHeSVGarvAXaFA0s+G7jr1iqvrF0Fd4d7o+Gzy82HuDpAox/x9ViJgW1gC776tqf8Oaj9+8MAGeJ1sJk67K/+gfvvksO8EpOFij7ycSCKABX/9nVG7x78JG4izzDIgsWEFggWT1WmL+NCWNgC3jnx9/g2f33ylaP6/D1KDUAV45D4PvAyN4Ax86vw8E9u0S+3xnAk/VL8MWRrErwerPguXNrPkAxegNgDGZzB+Tzm2TR19f+iOlNdDYtIFEHgkLDXEdBw2DywxqAE3jlYkyLUHNQxD587IHbAwgkAS2ISjP+Pq0FeHiIHZfQCpzszOH4KSotQNjRMBaolM/394WuSgsQHjpEVmgBhB3H461x0+et0ALETV9+LuOteOXiL8LsCn0oBGh6QmDFE5ndvkwrt48igKgWRAWGE/NNP1Eooo1XB6A83eDKL936G3ZRorRAuHX0AdNFFzyYUsnkyz9cgZG+3SkBBvvTL3+96VuhioHcgvbVzYLKAtxJaGIQHgRlp0zlDg+zCTNJsbsWH0CCVXtl9TWCFqA6QrUzSX0RogV0mg3OJXaRZpenBaiOsRE3SesBZQI3utxetJsXqoN4FyA/TmmEbpFUau2bSZmL/Dgo3KQGtA8eWkBHNoQNCHd1fIcL/WNyXxRxk/BaTWFBmP9GFnSsSBSdFNDpYlEV0F/McpdT2HhOXPxZtKtL3Ncpgxy6iQu2VIckt79aC3gJlwDOkEptQiSQZoCIwmLDubm1DVMP7Qvmk14rG7koUtl+yiZkQhBYqyBHYuH3iTggXlSpXRRCpovu5MLlKf9cILkM5yFGMYhm1AuL66uf5g98Irpp79kCnGDkyNHlxXNnh0ST7QhgKF+YX242/Ps4k2HlouFcIcsIzKwsNBIfImQwO8DhwjhjML7SbMS+EagssQIM5AsOBZJZbtZDvde5yQowmC/MUArzS+cbwi9OPQd5cLTgUg9mllqN2HeaHXORbQZZaRE+/P8GYA1sU1JabdZLusxJpabDKWrAKgZD+bESoV7LJkWtAFgDHqNzq62zuKU0HsaFliaD7CwYLbg2IheY+N+wYCB3NEcom7BRUSsLMEW3GWRXm43wG6VplI1clEZFrSxAFU0TYOMsuv2AQ2NzKxfqwr2nLhbaGPiNnoKTJoOMXOSLnEcyKxfq0v/+6KmjpdUg4yzqJcBGLkIL0vrfCDCQH6vadjHjjtZukzCeRiKMYuBr0BbdsG0yxhb06n9tDHAv2ot7tIDBQ2MTaQvMKAY6nTH5+z8LhDWUyuow+gAAAABJRU5ErkJggg==", + e: 1, + }, + { + id: "image_9", + w: 34, + h: 115, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAABzCAYAAAD9ldCQAAAGEUlEQVRoQ+2aTWwbRRTH34wDDShpXRFEoEUYiaRBQuA4Fay5YCQ4wIG6XDhAXHNFqnBTkJA4EA4gDtQ1QuLCAddB3KAuXBGEHoipWtdIVKROJVyVjwiKmpQIEmh20Ft7k7W9u/Ph/YjUztXz8dt5//nP27cmsEUaseNguWwUqJ4DgCwA3GPp8z0AlEGnBVIoLnn5DF0gLJeNA9WLAPCQy0LLAGya5GcKXsG0gbR2YpYDsbk2gWPkSAl3refWDnI4UwQGB6RmZfAeOVrCMPbUNkBYLhsDqv+kNBvR95MjH5eVxrYGbYIcyhSAwMuKky2DTmO9CHgTZCrT6DghskxvknxpWnaQ2d8A4YXl6jUdtvdR3hrLJF+K8jo5/d4EOfxCGhg97tQJQU4t/Q1PDA1w1mEvkvwMHn3p1gSZyuCWvuE2+tjPV+DA7p28BU6QfCnN62T3uwmCit/nAQiATneqiNYEQRN7jAeyf3jHhlYwVA9Hb7UZohYeE6TGc9MfV9bgl9X/DJ2gZjBUB2O3dYMouq0JwkTi+taFP+D1+243hPvd0j/2IAAXSb4UE5nP2kcJ5P3Gn/BI9BaH0ADq5F5SKKIvCTcpEATAk/Pa/KKxM7v6b7JfSMHypUAwJKY+ZuJ3uz2ttMtKgeDKqJP5lVXggEj7iQmC2dYOkYAiCDYMjUv7huRLKZH5zD7CPmIOOHjuN3hyaACeuWPQdR2SL9mmoU6DpEG+vLxi6OTZ4e0+gEjkIgjx9oXf4Z2xYfedlzzCrR2ZzAGQo3Yz45HtdNCXfvgVPnjgLncQSh8n7xbx6hBqTZBXsinQ9a/tRny2eNVwUusOoGCzu6POPoITqYAYMFMZR5vvhBHSSQ8grhcfuulgX8Q4tkI6UQYRECxqA29fPDFcnSiDuOjE1A7uxGTtkqEXDJerTlRBWjrhOizmJRim5+7cAf0R6uwnPYEIvumhWL+6vAI6gLOf9ATSfAE/K3Lw8QjjsT6x11os2BypZPHWhdlUhps2mv2fPtWADx/cZesnHoBMZgHIRyK7goLFZnPvSKeL9oUawddPTKbxCrC5d9TSgM6nZ1Piu4LHuStJUsjkHXMGUa3gUcY89v6BbdbnUUsV7fTgdhFa+6NO/rq23v46Knl0cT7XLIoJ2D7qBI9yW1qg8NrJTedEQrTv9EWrn0ifGO6OGLbfLGmhtzgm1x06kc7ghUBaMOi4mG3ZwrTrhB1SKXtyQ2MKs1V/xfJFl6e36UQyVzXnFwZp7QxWpLEi1FVLaelESR/CoekyvGbuglWmjZoK6uSpocFPUqVPnxe5Hjr7SO1IF5BxW6+ngJB48dIV7fPF5S+Onzz5auAg1gXH4lpMj5BC/cyceg1N5QnsxowmtFq9WomrzNdTaDoXHB3XiozRwkLtW/QdqeYpyEhCy1Ig0fPVOenPJ56C9KITT0EwFqo68R5EUSeeg6jqxHMQVZ14DqKqE39AFHTiC4iKTnwBUdGJLyAtnTTq1YrwxwH/QCaSZbrOcvO1itDHAd9A9iSSOR3Y0kK1IvSNzzeQkfijcUL0XP1sReiTvW8gsn7iL4iETvwFSWjTQEitfmaO+78BX0HG9mqpdZ2kF6pz3H9T+AoioxPfQfYktNnz1Qr3I5LvICOJZCFCWXn+dMX1S4XvIKMTyTQwFq9XK65/6fAdJBZPRbfR1TIvPL6DiAo2GBCBRCkQEJELMBAQkQswEBDUCc9PAgVZ0/vTjdqs7X8cAwMZTWjTlMKsk7EFB8IxtsBA0NhujqwVnSpKgYHwjC1YkHGtSBlM22X2gYKgsTECDbuMLVAQzNh0HVJ2N3GgIG7Gdv2CYAnUTrAh7Ii9YAMHcRJs4CBOgr2+QVCw/7L+nDUlCGlHkjlCWc2aEoQCYifYUECMm3hcK1qLOOGBTCTL1tzkBgjmsEynZfNrV5g7YnyENHOT0ECM6jSFrJmbhAZinByLYEMFwSKOWV8LFcTqJeGC4NufDkXM6kMFQatHreCdEy6I5eSECoK7YQo2dBB0WPSSGyDmXym2zo5MJNN0ndVCDw0W+iJ9ejR0kObJ0bJbAgTr9f8DEAsw9iwi6TgAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_10", + w: 71, + h: 35, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEcAAAAjCAYAAADG1RdTAAAEMklEQVRoQ+2ZTWgTQRTH/zNJtdZW6yfiB+agVaHgUr9SEczBu8Gz1r2LuFYPogdz8qSwInp1RU8eNL148mAvNorWLQjWtmBFBRE/2irW2mRG3jQr6TaNu9ltIiQPloHNzpuZ37z35s0LQ0CRhh5DFLE5arIYZaY1GlB9Vbszr6NLQ29FJJuA5BqABABql3voPw7AhoQNJm2IiM1My/bQr+qflISjgPBcEmBJAIdDnO04GNKASLMrd9Ih6g1VVVE4ylUiIgUJguLFOoJMahwSFiQ3/zc3nANHdnelAFwMstoAfXvAuckuW48C6Ait6184My4kaFI7Q9NevqJeCK5X25IUHD9gPvyaBj1PxibV0l/9mMKO5sXqHT0ke1ubVPt07OdfPC3RCLJS4t3kNA6sXIplUY59rUuwobFBPUVF4iokTzHTGiufc/k9Z+Cc7jLBcKqYGlrww88/MJEV6tnYGFUwSi7KpYj63Xr/TYG8sGWN+tUBTC29J1gElYA5cPNqxsGEXo3AzfJW820+vjT5eXfWw6bQws8NfsTJ2CocWt08bw8CSJZGFkktjUmgqE9+/J68q1XMipg8czQJye97WKfvT+59nFAWc6N9vW/AjsWSDoJDkI6sW1ZRK2ILdTo5YG5rm5TLBBECRfrIvcnlDq9rudne1NS90LFoQeCECcYN1dG9eUnD1z3Llx7rutvzIAj4Un0p5mjg4kVYA1CMuTTyCdfbNwS2mFJzorhkvvmSHfn5u+f7VO7soJ0J/R43c1p1d1F+czAMQMfsdzi/Za060SogA9t6h1OQkhLX9FB/htrQxHeeU2rka6NflLUc37gitAmWUDQAwRNO3GnriBOYJOcwBp9lQsmw3RkyXQLLsiA6ik+8/AAKwBWQWWCc8bZr8ZjksASYPS0Wp0btR4GO/bl3q7N6AkLQLviCREc2uZIrgQufE8Mt5LhR6qTa1tFpADIpBDeG7cdll0fmLVmoQM2EDgbdy82cXIoSvQWUt2DC8Jopb9X2a4wLSwLmcH/GKmdenopdKlEET1aohOFeBxXLTAhV0vDlJjEt0bqI/TJJ4dCLDG2yL/EEp1BjASiqBm72NZq/jwcAaUJE0n6huIfZ2hHXOaBPicaknzjkG84sUCpHyiXAmAapSqdBYfUCMp0HEmre0rarM8mkNPwACgSnmCFIFdBzMYA5RXeCVkxmjlsmbOSiVIwvO3B6NUiKQ5wL0yug0OF4nWi1vnMC9W/RmPiXi9UcHNoUrxZUk3C8AqpZOA4gFpGpoed99C/LHKlpOApQR1wHmDbc32e46dQ8HAKiLq2M2UPP+2b9wViHkzeXtl2daZ6TRmFdqA4nD8e5ahReM+pwCgLN9t3xhBRMe93fp+5jdTiuKEzxhwtY5F51OC445F4NfCpFp1cdTpH8htwrl+VjdTglLnl/AJm74PIgmQN5AAAAAElFTkSuQmCC", + e: 1, + }, + { + id: "image_11", + w: 59, + h: 87, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADsAAABXCAYAAAC6Ez2SAAAGNUlEQVR4Xu2cTWwbRRSA30xCCSgtriCoaotqUJu6aiXcpAKbC64E50acibscAVV1Uw78HEiFQByIMSC4IRynFy7g3JFIJUQMKq4rKpEmlWpEgqIUFKeUkhZnBr21N2zs3fXO7mzs3WakVRN1ZjzfvLfvb8YhcA81YsbKU0oIuiEKvBoCTkJAu8pQhQrJZEt+3Z8mWP6akgDGUgBwwgJqEoDngXXlSSZb8Qv8Blg+khwFgLcFFr8CBPKwRkdJJlsWGNeWruuwfGQ4BUA+dLGKc8BoppMlrcLylBIGyq67ANWGrgBhChk7n5cwl/QparBnk1ngcFLi7JPAqNJpUiaq1aVsWSLo/1KmdIh8kJ3yYG5HU5K69f3WavQ3f9yChdV/4eTenU4+5BxJ59Dwtb0Ruxb4l1t34KvFm3Aq/DDs6KZiCycwDms01W61tg2LdDerDD4p/wlPhx6A5x7pFQMGuAyMJtoJLASr0aGEUa1RyoKtrcDEqX9FtX7v2hJ8emSPqFq3DdiWgTKTHqr1q1cW4M39j8Kh3vtFhNwW4JqfHUlykZU29n19ZhGeCj0IL+zaITLNpgNrsBjxWAX+LSHG55cBVfv9yK6Wfdc7EBgnYznF/gB3PesR1ItDwOnX7qYC1TX9WLmtqrWAe9o0P6xLBJKYtexzC4yw6J6EDBelxzcj0tJnPQoA+cItLI53YKlXgNGw1z64MZ+VIl09sIClniTp3JCMzTabowF2WJp0NeBXrvwOnx3ZbdM18ZdIeiLrFXBzWWYkiVnKs7I+EFVaANhTdW6GTSlRoOySLFhhCXvojgyri/xMMgMETnsBPHlsX2u3xOhRL6qYxrC1hB5Lpq5dkX7DBKz0BZLOJWRuNs5lXjc+KyfQaFww+uF3r92Aiehj1hL2wPeawtZjZtdhpJF0MNLC6gdaaYsmXbrWsDV1Rt/7kGyVshVLS5auJawqXQN1xncPH0zgtYbVC61FentaGyEAwGwJU0PT2pZky9wStgZsXGrF90/ffqj8o/6KG/FXdU39eU/PfSoQPpgGNrYTF3+Ft/b3Gf6f2pfRnbLCSHuwNXXGYONJUXXWtAD/xc3BbAjrV/jgRmABAIHPR/eqvzc3foakJzKin2vU3xasKt1asIHArt5fhENorTyL0Ie398A7c0tmFvoySeeimwpbs85yY2ecE6HxWbpThd5uCh8fNrDQjD4u4+DMtmS1nbVbZ3YiiZd/XoDn+7YblHfkqLIwrJXBcgKoH2NRwJPicx3BegmMhgxdUlOEJcEqO4b1EhgDjvnVquqS1puEAMMVrJfAw6Xf1BMHnW92XZhzDesVMEZnmPTr1Nn1eysF1iu31KDOKySdC7kxgtJgdYEH1pCEIy0zCL06k3TO1XpdDTZbYN0X4/UiV9EWzr9Bnbd1u6ovewJbl3IYutiojLsaWHTHduqJvs6EXY+4ajdx8DwHH8dlnuOF6zB2aPdHg59/iRrjqHkmWaPVqLkxowkggMVwIfDp5dt/vzGzOH9h+ruII1KrGpTTCe2OW78byVgCOISAQHNmw6EEhJeBdpXwLKh/MJ6nhGdmLhYc3cDZVMna3QizfpFoLMwo5GeLBUcpn69gcRMODMQzALw0VywIH5P4DjYcTYS20dUpJ9L1HSxKt38gNsoByqLS9SWsU+n6EtapdH0L60S6voV1Il1fw4pK19ewqnSPxrJASX72p+mWt9d9D4tRFaeQvVostDzP9T2sJl3OaWau9L3ld44CARs5FkuwNVBmLxUsrwYGArZumUt3WU+iXJoy/VJVYGAPDsRTDHjFKoQMDKwdNxQYWM1QUQ6jM6WC4VflggU7GB/iHBJzxWnDOlWgYFG6BwdiU2Y+N3CwaiWDkayRzw0ebPSZKFCuGKly4GCtVDmQsGaqHEhYDB85I9GrxekNV4oCCav63ME4pn0bruFvwbqt3HfC+AMDMYUQUtEn9YGVLCb1a5Sk9C4osLBarKzPcbdgO+Gdk7EGfG+7KJS1I85AS7Z+xKnMFgvqHxgINGzjext4WAwdNYsceFg83rzLejJYiAs8LMbJqM5opIIPqwYXWKopZAMPW8tv4ynMgLZgZTj0TpqjfzA+hAnBPSFZDC6wlvwf71H5doYXD8EAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_12", + w: 32, + h: 32, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAFlElEQVRYR61XS2xbRRS9z387/jtO+g0pqG1KJRoCiwRBa6QGugC13TUpEkakKzYVe1ArViAhWICEVEu4EphuSsMGlRpUUxBk0+JCVUpSkbZJmp+d2LHj2I7th84085j3/OwkiJEs+3ne3Dn33HPv3JFoE2N3T2947MZIVLukq7u3s0oG71jyl+QmzLFXpc0s2PN0b3T0t5EwX/P88ZOvOK2uW3+PJsNyzTD8vwPY3f1cNzfaP3iqOzM/80GL27tjtVzat7KcJ0l6hN9qd1CL23OfZEqQJCUmbv+RqBoopMeW1uGmDOzu6ft4287HLlpanO8R0SEsXph5SBa7nZweHxVyS2RztNDSYppq1Sp5W9vIYDRSamqy7PR53/9p+MK76zHcFEDfkeOfkNHwFjZjm89Os40tNht7zqTm2KYY5WKRFuemKbi9g4FgQ5ZukkTheOxcsrM75L2XTGQ2zED/wFCUJHodnsFgenqSXL5WZXMtABFEe8cucZ/s1N0711Yrla/1QqJiYM8zfcewsqNrf6ck00fcytJCmv10+wPsu1hYZtTPPhgnzWYsLJj3t29l78KBWq2aM5mtB8HEugw82XvwS08gOMhpr6yWaXF2hoI7OpS1YMPXtpXFnocgn10kg8FIDpeb5icfkKe1TcUWEd1ftVS6E9GoKgx1GugfOJUsruQPWKw2hXoYM5ktKvDwjAPA73KpyFjhWinksuRv38YAKUOm8xN/3jqD5zvJkXv4VgHoHzwVJpI/5wvgfTY1R4GtO3TFDBFiU76x+BJYEoEDJERaWilcXC4ahrggGQBUOKoZkp379kdJkg9wQ6LqQXFldZXcvoCi8mYAkBVYw7XAbUpE31yJRZjWFAaQInar/Lbb539HFBq8F0UGoxg8DSE4ZAgYgIcQn0i5nkix3lgz7bp84TN1CA6fHDotKj+fWaRsep7sTpdSYLRxwIYIk8PppvT0VJ3wtGHgWVHIZj5NzcxGUGUVDfC8F1PPZDarRaRBAAD48EwQp8FONjVPFruNAlu2KykJ4ZIs38rNz78KIf4LYHAowcstVzLCAfVzMZqtdqUW4J1mADCPkBXyS3oA78djkU6mARw4RlPN297xRMxisz+qHkS6RUYvBI0YWM9OPBZhzksQoMVYCgW37bwEb7nAGglIC0I8D/RyVWuHl3YFAF/UPzgkiwY2CgBCQ50A3cgalz+gqgtIZTEV+XuF/NLZ0RsjZ3Q1gPxF+UUh4Wmp591GQtWIobHbd9kR21CEqOdi/f+vALQMrNkRRNjTG5Yk6ZjT67X5Wre8zM9yIEd+c01sFgBOUGTPSj7HegTYwTOG2WxRqqHCwEsDbx6TJekS30g83fAfDJYKy3XFpplWILjUwwlyB4KKLqCZarX63c1r8SOqEITCYa+5bFrkAJrksIoMTjG8K+Ry5HC5lJOzkY3ZifGBYqFQHL3+67DCANIx4HeM2Fqce3k934gOtG0ZCo/T42UgtCyuIf8xHouEuBcKgL09fac9wba8JxA8h0nQN33vLms8VGe6RgzN6gDY4Y0qwEBTktn44vdfRFB12ahvSISSjLhDPHrnPTfQDIDIICpmNjWX+v3nH4KiD3UADr82FJJqdJUrNp/NqGo5DPFuCYb0APDYo0UT60hmduZEJr3wl3iBqQOAxtRitX3oa9vyODznlQ6n23I2Q3aXi7Xm6zHwcHyMvef2t3Ky34jHztVd61QAup7tDVVr1Ln9qa5hc8mcQHeEMIjKbnQWaO8MeIYDTD8ynY9/FVGudE1DwCdZWpbMiUqldADp1agk8xCITSoEhyxg2mmyua4IRXQAYSmbotmF9NFGAMCQdo6HTSI6eyUWYV1wo7Gh2/GhoydeMLuca/cttanU1KQjefXyt+K/uK7ztrvZ5pj7B8Gg8d8XF3ftAAAAAElFTkSuQmCC", + e: 1, + }, + { + id: "image_13", + w: 35, + h: 7, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAHCAYAAACC5PR5AAAAVElEQVQ4T2P8Xxg3gYGRwYBhoMF/hguM/4viDjAwMNgPtFsYGBgOjjoGRywMtpApSDBgYPoHSjf8A5huPjL8Y3JgBDngP8RBEwbMMf+YChgnLLgAAK5bH6GRVd9QAAAAAElFTkSuQmCC", + e: 1, + }, + { + id: "image_14", + w: 31, + h: 25, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB8AAAAZCAYAAADJ9/UkAAACzUlEQVRIS71WXUgUURT+zqyWSpBbFmgoJYFEL4pvGSahj5URRZBtC71YBK0//dBLRvRQ5LTZQz1uU0Rv/UJEhYlZL4n1UCCIhsVCsbGKtmtre2/cu851xkHdGbbmZXbv+c75zs83c4Z4WyAMQjVye00A+LBkSKZFKBVq6eMc9bnlXj7aCsrz06t9TTdGJqdOLA/PHSLPp8WOPn+7jr63Hjg98Tt1eSo1q6JHfyXVb3E+bbHlIoVV+fnvDj3r30a8M9gAxnqzDRqdTijo9OwfeEl6TcHKK/uf9p0hHgoWQ2PxbMm94lJpplwZZzsLe+71kjjh7QHuNagXP9INyWuSvwaww0sgDz4fSTfko50h7whEwHHEQyD3LoTb1G0ErZV3ATjvPpIXD95G+p2wpfKWZnDtgZdQrn2YVkPhiHz7ZdoeClZDY0OuA3lwMMWmyP+j4vtINxrMnGXl4mKXOr9htX/DwmJ4WQV4QaGrGin+ExSPOXx47MctX9f1Y07ynovv2eYtta5YXIJ94yOnqPXsVQd5uuvkTSpZ36o6UVnlMrQTTjNJUHRcGUijejp+rt9BztsPhwC6Jg2FRUAyoe68sgo0OixN3F8y31IrThiTCbDtTdDevJjPxMQAk6QbxdYU1cytC4bV1kEbHEC6cTd8Lx+rOy8rBwqKVCJsaw20T0MQyUn1jg4rrEzUjreJza72UHAjNDYmDheSimRk5f61isSKW4xcdmFwINNF4ALphniZzY/B+sdcMIp810H4ntxXlalZzY3AxC1Gnp7zz2TM9lL33YdLkcsFI9pJYn6VVbLton28tALa5yGk6xrlWTaV28iZtonCkS9LkYvM9kgyfwl4abmDyKw2G3KL+Bxis81cCqQ9oBaMcEQ8JgUlbXOKt6rZJriZBCj6VeFsTw3wiHSj2Vq1k7zjny0Yh9ic5BnFy12b00t8oy+Yt4j/F2C9Z/db5FwNAAAAAElFTkSuQmCC", + e: 1, + }, + { + id: "image_15", + w: 78, + h: 44, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE4AAAAsCAYAAADLlo5MAAAB8UlEQVRoQ+2av07DMBDGHdduK5WBbK6USqlAYuQR4HFYeRMGeAikvgNl4B1YUCbE0opUcqX+SRPkIUikaZ0cLkrF5y3R3eX8y9n5dI7HCkNrPS7eO9brJElOtNZnLvIXQtwopR7zWF4x6Hw+z1w8qAkx1us1i+PYSSrdbvdWKXUHcDVxAlxNYLk5wAGcnQD2ODujUguAAzgiAaIbKg7giASIbqg4gCMSILqh4gCOSIDohooDOCIBotufVVwURae9Xu+zap5pmrLNZlPV/GB2QgjmeVutRWbyWywWTp4rpXxYrVYjE2w4HI7RyCRgDcNw+zWhA2wnCXB2Rt8WnPNESvlibvT7/Wss1YrwhBBxEAR+bg5wvwUXRVHIGAt933+qGOsozFydcm1V3HQ6HXHOz3MKWZZdJklyFFDKkuScMyNPzDDz0Fo7mcsWOHMA7XnelZPoDQtCFcDtdvuNc35fmM7HjwPpyWTymqbphW3ORugaQdmkIaXcmw5VAHc6nWfz5dwXHB+HEjoA5/AXiFar9T4YDALIkZp7DnRcTWC5OcABnJ0AVY6URUbF2XmXWgDcocDNZrNsuVzuDN9EIVxMNhfGVAGMpepQx2GpHmqponVeThYVh4qzE4COszMqtQA4IjiXHWDTHVFK7e6OEHP8d25f8AH5PO08WKwAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_16", + w: 109, + h: 47, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG0AAAAvCAYAAADpaEQxAAAHIElEQVR4Xt1ca1ATVxS+KAMRovIoRksRWzuiTFtoHUUeVkcEqRUQRB7yVIyY8lIeEjRQ8DEwyky1Wp2WqrX0AZpRHhEVpUUURNQaRUBaa1GLEgGDU5AYCNM5O5MUQWDzWHp39w8/uPfc7+53z+453zkbvZ07c6zlqFc0Z9YsBSJx3bxdZ0Ji2JAh/3R3t/b29spGmtvzoofVIpFM1cS+co7euPH6M62t7r3skRddutFwtFlc0amNPRzn6m3L3FkY5OfjzTY2xhGf2piqf7uFWPrjUXt7ByosPdvpZD/XXiBIeqC2IYwn6GVk7T4cEeS/DmOMakF7IZOhC1W1yMv1Y1R99Rr6Pl/YdPZUwWy1jGA+WA8ej+Ycs8ZP3JZMwBwraXhHhcVorZ8XMT577wF5eUW1wx/iajFpA5gP1AN8sUmp4sSYKDvMsZKGd7OhCfXIZMjpIzt0604DOnTkWNXZkwUupA1gPpAgLSouYfly96Wn7d6zxRwueXhf/XAcRYf4ExNiUwRddU1/WzElKCFIY6K35YvKkJvzfGRuaoLKfrmITpWeyzkj/CmZPO34jlSRxotPFHi4ue5girc9eiJBVTduocAV7qiruxvxElKeXTonMseXCvLIVKTBlC2CjObP1kdYk5+O98g9uXkomRtKgDx05Bi6flPsWV5ySoQ36tHRvUJa3JbUb4P9fCM5UyxGn0mDERD6G00wJAISydM2JNi1+875ohPv0wD6iBBfIW2G/WITHw+Xh/Eb10+k+8YAP+RsObl5KD2WS2wnPjVd1tT4+5y74ppmOu/vFdJgI4GR3EJBwibGKCSQsy11dkBW0zhEsi0UnS44mfddIKNIC+PxPnjbakbt2jUBhnTemBJ70/0HCKQtZbIdzot7fvFMsUb6KS73Y4inAbDgdVE1qYlxDkzRI7fvz0VJ3FBkxGKhvAIhulRdm1xWdDwHFxLUxfFa0j4NDFno7e5W6b5kkbr2sBwPAQlcS53nE+F/PD+tpbzk5FtYgiUB6rWkwbygyA33stK2ziRhA/shEJBs/zIXZW+JJbDSXY8clrQ1kdzAxc4uPzPF2yAggdDf5h1r2uuRw5IGJzJiY0xrBj+Jg70rkQA4OCChsx45ImlhXF72Km/PFKZIW/zd+1F6HJcISOisR45IGhzgyOj4jrTkzWYkDrNWQ9hsNtLX10d9fX2oq6tLK1vDTYaABN5vUCClsx45KmmQbG+O2uBNpbRlZmaGJk78T4SRyWRIIpHonLjBAQnokVdqroVUlol+1PliFBoclTSqpS3wLktLyyFbBNKAPF1fEJDY29qgD21taKtHjkoa3DRP/+DarM+3zqMi2WaxWIjDGRrrUEUalGyKyy+qCqR01CNJkUa1tAWeBh6nvPr7+1FLSwuCv1RcoJBEh6xWFUgLS8+ISoX5nlSsRYVNUqTBwj5BYeIdghQ7KrzNwMAAmZqaIvA6CETa2tqQXC6nYr+ETdAiHz6WEAVSuOimR5ImjWnJNoT/SoWEbnokadLgRHoHhj7cl73DijIXGEPD0EMy/U2OqkCakJbRXnXuNC2qv2qRtio4PH2Z65JMJkhbHdJOdERYompHoJMeqRZpTJO2oM3Oy3URUSClU3+k2qStCo44EBbkH80EaQuaWsUNTaoCadB6nvxJew8H9/5ItUmDZNt5rk3LrrRUozF8BVG21MACKV30SLVJg7u3ck14WeqmGDcqpS3KWBpkeHCBlA79kRqRNtt+wYyFCx3rtiXGs8fq5lK1zmA9cs/+Q6iurh5rPVIj0pTJNn9zrB0TvG1ggZQO/ZEak+bq6bPCxXGBkAldW6BHXqi6qgpIcNcjNSZNmWzvSuNbUSFtUfU4HM4utJCv8/OkhR6pFWlegaEbFrs4fu27YvlY32Odrwd6ZLv0OVEgxV2P1Io02Jz7ytWt3+zdw4g+koEfbOCsR2pNGvSRuDguSGGCtFVcXkmoI8oCKa56pNakQbJt++60vw7mZNG61RqeGhD+QySp/IIU9MiKy5eX3b1eU6Hz57EWBrUmDdb2DY3IDw/wD2CCtAWkwXsNviDFVY/UCWngbXZzpj/Zl7WdpcUBwmIqqP/nq2pVBVLQI6Wd0mUqcH2o+f/+VEonpMGGPHwDLmfyk5yZkGwP/MgevO12fYOKs+vi27LRfnlIOfhRy2NjtrHRM0NDQ1IdSgqFQjKJzW4cfHpZhoZd9fV3c5SHRWekQR+JQt5/hQlCMnQjd3R2EgXSsbpAiWl92vba5eB/J4pK5FPfmMLPO3zwC52RBqtBkdTCwmJbDHetAd0T7oE/IDNWxI20DjTXJgoyFeZmk0N0ShosCgm3VCrNcnKYZ+Y0fx4O+9UIQ+P9B8iSY4EmGeNTgfqzuRn9Wll1TeekKe8QaJMmkyZ7yF6+pG0loH+8/tRxir5WjVinaFJvr+LOvxyOKv4QMU30AAAAAElFTkSuQmCC", + e: 1, + }, + { + id: "image_17", + w: 307, + h: 169, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATMAAACpCAYAAABH0trPAAAKyUlEQVR4Xu3dP28TaR4H8Geiu22PfQULBVlKZFG4I0iAtju224sostqctCW8ApJ3APVZIitx2fKWliARqrg4LOjAKQ5ewS3tLWefHF1Q4rU9M85jz5OZjwsaj58/n9+jr5x5GD/ZrfUfHoaQXQ05r73dzlreNd4nQIBATIErV9sXBythI6/NYQjvs1vrm/shhOt5F+/tdrK8a7xPgACBmAJXrrXXBoPwIq/NLISXwixPyfsECFQmIMwqo9cxAQIxBYqGWRiGn3wziymvLQIEogoUDrMQtoVZVHqNESAQU0CYxdTUFgEClQkIs8rodUyAQEwBYRZTU1sECFQmIMwqo9cxAQIxBQqHWZZ9awMgpry2CBCIKlA0zFZWwg1hFpVeYwQIxBSIH2bD7M3ez3/LfX4z5iS0RYAAgfhhFsJLD5pbWAQILFtAmC1bXH8ECCxE4HKrvZGF8Div8TL3zHwzy9P0PgEC0QVWW+2tEMKDvIb7vW6W3V7f/GUYwp9zLhZmeZreJ0AgukDZMNsa5iefMIteJg0SIJAnIMzyhLxPgMC5EBBm56JMBkmAQJ6AMMsT8j4BAudCoGCYfej3uhdHGwDumZ2LshokgeYJFAmz0e//v+t114RZ89aHGRM4NwLC7NyUykAJEJglIMysDwIEaiEgzGpRRpMgQECYWQMECNRCoEiYDUP26LB3cM8GQC1KbhIE6ilQJMxCCNv9XnerWJgNw097P3c26sllVgQIpCoQPcyyELaf7XZGT697ESBAYGkCwmxp1DoiQGCRAsJskbraJkBgaQJFwiwL2f13vYOHhe6Z+TNzabXTEQECJwSKhNnoV2bf/rO7n928u7mWDcKLWYLCzPoiQKAKga9b7f1hCNdn9S3MqqiMPgkQKCUgzEpxuZgAgVQFhFmqlTEuAgRKCQizUlwuJkAgVYFCYTYIl96+7r63AZBqFY2LAIFQJMxGx8yNqISZBUOAQLICwizZ0hgYAQJlBIRZGS3XEiCQrIAwS7Y0BkaAQBkBYVZGy7UECCQrkBdmxyczFd4AGGbh/vO/dx4mO2MDI0CglgLxw2wl3Hj+pLNfSy2TIkAgWQFhlmxpDIwAgTICwqyMlmsJEEhWQJglWxoDI0CgjEBemIUse9p/dXDnaANgbWPjwh//84d/z+pg6J5ZGX/XEiAQSSA3zP5/MtNRmI3+ubW+ORRmkfQ1Q4BANAFhFo1SQwQIVCmw2mq/DyF8NWMMR2dm+mZWZZX0TYBArsBqqz3zr8bjA4CFWS6lCwgQqFJAmFWpr28CBKIJ5IZZln3bf3Xwi29m0cg1RIDAIgTywuz4ZCZhtgh9bRIgEE1AmEWj1BABAlUKCLMq9fVNgEA0AWEWjVJDBAhUKSDMqtTXNwEC0QTywuz4ZKbCGwC/ffHpy/2dnV+jjVBDBAgQKCAQPcz2djtHz3B6ESBAYJkCwmyZ2voiQGBhAsJsYbQaJkBgmQLzhNnMJ9P9mbnM8umLAIFjgZww+9DvdS8eX3v8e2ajw0quTyMUZhYXAQJVCMwKs5PHzI3GJsyqqJA+CRAoJCDMCjG5iACB1AWEWeoVMj4CBAoJCLNCTC4iQCBlgSvX2muDQXgxbYzumaVcPWMjQOCzQF6YDUP26LB3cO/4AzYALB4CBJIUyAuzk7//bzczyRIaFAECIwFhZh0QIFALAWFWizKaBAECwswaIECgFgJ5YZaF7P673sHDMhsAH/Z2O5+ff6qFkkkQIJC8QF6YnTyZqegGwMu93c5a8jM3QAIEaiUgzGpVTpMh0FwBYdbc2ps5gVoJCLNaldNkCDRXYK4wu72+uTUM4cEUNvfMmruezJxAZQK5YTYIl96+7o5+WPbodfQ4kzCrrF46JkBgikBemJ08Zk6YWUYECCQrIMySLY2BESBQRkCYldFyLQECyQoIs2RLY2AECJQREGZltFxLgECyApdb7Y0shMdTBvim3+tePfme3cxkS2lgBJotsNpqb4Up/2Vs/Cez7WY2e62YPYGkBYRZ0uUxOAIEigoIs6JSriNAIGmB6GGWhfD02W7nTtKzNjgCBGonMCvMQpY97b86OJVLuRsAWQjbz3Y7oxtxXgQIEFiawMwwC2G73+ueyiVhtrTS6IgAgTICwqyMlmsJEEhWQJglWxoDI0CgjMB8YfaXH+4Ms+wfkzpyz6wMv2sJEIglMFeY3by7uZYNwgthFqsM2iFA4KwCs8JsGML3h73uzsk+jjYAhNlZ2X2eAIHYArPCbPyYuVHfwix2BbRHgEAUAWEWhVEjBAhULSDMqq6A/gkQiCIgzKIwaoQAgaoFhFnVFdA/AQJRBGaF2fjJTDYAopBrhACBRQgIs0WoapMAgaULfN1q7w9DuD6pY9/Mll4OHRIgMK+AMJtXzucIEEhKIHqYDVfCjedPOvtJzdJgCBCovcCMMPvY73UvjAPkPgEgzGq/ZkyQQJIC08Js0slMhXYzhVmSdTYoArUXEGa1L7EJEmiGwFxh9s13P17878qnf00i8s2sGQvHLAmkJjBXmI0mcWt9cyjMUiun8RBoroAwa27tzZxArQSmhdkwZI8Oewf3Ju5m+mZWqzVgMgRqITDjv2b87pi5z7uZwqwWtTcJArUSEGa1KqfJEGiugDBrbu3NnECtBIRZrcppMgSaKyDMmlt7MydQK4FpYTbpZCYbALUqvckQqJeAMKtXPc2GQGMFhFljS2/iBOolsNpqvw8hfDU+q7n/zPzti09f7u/s/FovJrMhQCB1gdVWe+IjlnOH2d5u5+g3z7wIECCwTIGpYTYIl96+7o6+tZ16fQ6qaQ+aC7Nllk9fBAgcC0wLs0mHmYw+I8ysHQIEkhQ4S5iN7ov9aXxWvpklWWeDIlB7gbOE2ejQkt+dUSfMar9mTJBAkgLCLMmyGBQBAmUFhFlZMdcTIJCkwJQwe9Pvda9OGvDJDQB/ZiZZUoMi0EyBSWE27Zi58d1MYdbMNWPWBJIUEGZJlsWgCBAoKyDMyoq5ngCBJAWEWZJlMSgCBMoKTNwAyLKn/VcHd2wAlNV0PQEClQlM2c2ceDKTDYDKyqRjAgTyBIRZnpD3CRA4FwKxw+zj3m7nwrmYuUESIFArgdhh9nJvt7NWKyGTIUDgXAgIs3NRJoMkQGCWwJVr7bXBILwYv2YYwveHve7OpM/mPc7km5k1R4DA0gWmhdm0n8wuspspzJZeRh0SIHCmMLu9vrk1DOHBGKMws64IEFi6gDBbOrkOCRBYhIAwW4SqNgkQWLqAMFs6uQ4JEFiEwLQwm3Yy06kNAPfMFlESbRIgMI+AMJtHzWcIEEhOQJglVxIDIkBgHgFhNo+azxAgkJyAMEuuJAZEgMA8AlPC7GO/1536wxefH2eyATAPuc8QILAIgUlhNutkJruZi6iCNgkQOLOAMDszoQYIEEhBIHqYZSFsP9vtbKUwOWMgQKA5AsKsObU2UwK1FhBmtS6vyRFojsCkMBuG7NFh7+DeNIWZu5n+zGzO4jFTAikJXG61N7IQHo+Naeoxc6d2M2+t/3UjhOGpDwuzlMprLASaI7Daao/u1Y//vmKxMLt5d3MtG/vNbWHWnMVjpgRSEhBmKVXDWAgQmFtAmM1N54MECKQkIMxSqoaxECAwt8CkMJt1MtOpDYBvvvvx4mDl08bJ3gcrYf/5k87+3CPyQQIECCxJ4H80hzEpUVgwkQAAAABJRU5ErkJggg==", + e: 1, + }, + { + id: "image_18", + w: 345, + h: 15, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVkAAAAPCAYAAABOUryFAAAIw0lEQVR4Xu2c7U4bRxSGNzY2NmDAGAIoUaRIvZBGai6hf6Kqv3IBvcReQvq/UqUoESHEGOzFHxg71bPkjSabnZ2Z9ZpglJUQJJ7P8/Ge95yZ9aOXr17/HX15pteTRq2+Pta/7+L3KB7sNrdaF3cxl2uO/nn3aHuv88HVbja7WbsejbZoV61Wb+rNjdjWhzEbzWac18Y13335PL7s7W/ttD/lrQfZVKtrN/dlzctaB3ZbbzZjn73iV6M43vWxrbLXi84Y06Y3H52WvaayxsO3rvoXh0XHm45H/xTt69tvPq/89ejlq9ef1eFmeh3FlxfR7v5j3zEKt5vPZlG/140aG5vJj89Dn+vJ9zHAt79tDsZl34xTbzQym42HV9Fw0I8q1Wq0VqtFa7X613bp+bU3fm/vdb5p67PP+9qmf95N9pP3xJc9HHppWzBtQH/X1xuJXngWtYWQhZ+fniS+ornz+l6Px5FkY7OxkLldbbHXq8tetLnTtsqE9WDHdykzrZv18YA5N9Np8jf6nE7GUc3QZ94+p5NJNBxcukTxQz+vVKIX34Asq0Hw89nc6UyLrJw5RoNB1D48sgIQwkcRk6/KmEbrBhjjWCbg0g7lfJ7PouoXw6lUqlbQZP0Y/jDuJ1vZbncynQVgHfS60ebOrhM8WPPlp4/Ro0r1QYGrdH3x6aMzAMt5ynJcdGTaQbVWS/RkAqscFHuYTa8T+61UK4m9sA4zIC5it+m+gELv40nUfnzsBbT0R4bLDL7IanDeTfaeFxDxQZ5lBkT8Af1JL7d6mkfSociKy09tOkOW+Nt9fjJBlgUDLFeXF1Frr1NalMOwALRk3HYn2mhtfycb5sVIFM3Ecn2YgjkYip3PZ8lYPNPxOKoZDJW1iJFubG1nOggG0jv9EDVbLachClyZa2f/8cJOzfoTAzVYu4INBmnu5RZEvmXWyzA6ZMmaXE5ZBsiK9c2m08QhsZVQ0EbHrGUU9xOmBOig67JZZBGgVaaDXfrYl0uf8i2IC/vc2tnNBf1lAKxIEbpDb/gfpAd5L4strzTIihmQQuPciYG2WoXAA+DE0HmaW9vfgascCmC9/bzYPC5DDPmctJh9d46f5BprGeAqMAAQYOE8YuL8bQMXpVn6jcPyLKKrPBmdvXvrlAf9kV1e2SVvDmU4ACtgngWIYrbTyShhRQo4SjXZPyw3HcSVtaBXgtJtu2YpoCugbbX3g8djzwqgIcxboAaw8pBpZRGXtLwpcSBXV7B0+YuZaRLEypapa34+X3mQTTNDWKhSMQzbxp4AC4yOaGZzetVAqRndRt5sh/IRdJltWFf35L2TXZQBrqZzEVwAplDGnrV3BTUMH1YdygCzxkSn/PjU6gHjg6fPgtSCLMhwEqDIyCyQN+CNTWF7eXV8gTCBHRvNyiwU2MgUCE6AuspMKkOEyo0xcXr6+YBdWkBmsDWZoGkTCiRkM6w5ZC7Z9iLZqUmIBKrLLMe4jGhlQPbF738mB18hdSul42bR2mRd6XqZhKUyREjkdQm6rM9Ve6W+ZksplebBPIoAmPoTrLJYvbkXM/3i/+Vs9IXpIuM8YDZTUhcjz5Mh45y+/S86fPbcGQRCwJg5TXDNYlZmMCvCEn3rk9q/7FrlGmUWtfWmNzsnGLBu3wMxl/2aPhYK/Gm/K2IHCtrI5D4RopVjshgGj+vk2GUQWZ+nywGuelGRORbpIwbCGHmOASBwoNA+PA5mh5oDp3XVbAUMrlqkTo9dh2xq1zl+Giwm1n32/m1ysOOqZYaCMbLMq0fCUggoLnn5bAr7htkePHnmDBQ2G1ZNWn6SR0qweQ5kfFN4nz0UaaMgRZAI8W1lDpTwVOMNIWFF1lqkz8owWV3hUs0qq54VKgATWCl+35dyQHofOE7v9CRxZFuKpwMw0lSfdDk9h+9pstI55rHddMjSgxgrv/cOjzNVpTQ2hAkJNEkvfep33ZN3Xuwc8IGJ2/aIvCnZ2A5HQ23RZKncBCiSgaQzDM4qfG4IIHfKEXm3aIrux5V9cD0ydG7VxLmZUSRzWMZe8sZcOZDVZpTyYUS+p/v0AVhVwAcolnGSW5YSBZywxTz2ihJ1ABYayUPvRQJSLsNWCSFdB1MZxsac2AcZhO8e0Cdg6AtIrB3gzAtCCjZ58haLL5LW+tiGMgoYGiCOPAAU6tdKy3XQy3gwad1KSNfLFdyoj+axRB2KMZ5Lvz57yGuje+6Aq2/tVecjMH1KWPct03yQIGtuSoCrOmB6wzo0wFhJJ0OY0qIGVaS/wAjHyktDF2VTAIrL+dLrp+7pA2rmoQ1j6I6hTfZipMfPf3GKzKyB+tz9FICoVpc1gc+lePrBoghMNjbuXHxAA9bNQa4uwUuGWWcJCpYMnxUg9JKKa93m4V0Z17bM7Zp2nffygdnHrNn7AnKAiO+k6coy2TuRzh1NYl5k596ezxUxGWwRNiXDLcLiTaMnCIQcttjEqXKIq44scOVKlK/DKRDZAoMPAGvdy7i3WbaJ5d0eEBC7gJY1CeC5eqUXJmx3tW17UKDVHeBQBqqygK+uy5ZlWeP9BNkFJZm+uZA1HMZmXtiHcevOnu5Quk7hzXGLMFD1lxOWcaqsfSUvZozHiTPymPdnbW886S0bvdDhOszD2Smb+L7+ax7i2dJfDpoIaj615VUA2DRrVOZm/r9uJIRc3xLgUqLAXnl079fMTPSCB+1g3UXfZlM5ZtXBVXL/CbIeIKuIDDDilOkn5E0m27Uxj2UkTVBYEQZqsjGfAyLf9WS10x3krO9vUHvkoLdsbGPA1nl871maJYq8Ax+lxL4HnasGsJInesgqz7B/37q3zQ50jWwRX0j39a0fL2KbP6LvyoDsb3+8/vVHCIg5+2dnv6yt1eKN9q7zm6+Wucbx1e03ajU2m9Zv01rm/Hc1Nvu8HsZH2wcH/4bMOexdHNHepSf0GTI263noMg+R87Laor9KfT1+aLJmX+PRKLHNIs+w331TpF9In/FN483/W2i8jaIBHDEAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_19", + w: 124, + h: 100, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHwAAABkCAYAAABEm1RIAAAGNElEQVR4Xu2dv24jVRTGvzNONl5pVxgqtsIIxdkCCeOlcGgYJAoKJJYnIDwBeQPCE5CCnmxHg4i0DR1ZCbEuFjNIFLsJiKRbKmIgWSckc9Ad4pBETjzHGd8/kzNt5sx37ve7/+9kTCjRNddqrw0rTgpKNroPF0tU1LGLQmNHehjYaLV5WFoEPHjS7cQepmw9JQVu3XK3ggrcrf/W1RW4dcvdCipwt/5bV1fg1i13K6jA3fpvXV2BW7fcraACd+u/dXUFbt1yt4IK3K3/1tUVuHXL3QoqcLf+W1dX4NYtdyuowN36b11dgVu33K2gAnfrv3V1BW7dcreCCtyt/9bVFbh1y90KKnC3/ltXV+DWLXcrqMDd+m9dXYFbt9ytoAJ36791dQVu3XK3ggrcrf/W1RW4dcvdCipwt/5bV1fg1i13K6jA3fpvXV2BW7fcraACd+u/dXUFbt1yt4IK3K3/1tWDBl5vxrVbt15YGLi281fvs2EORlT59fqNG5+bv/Wf7T79Y7v/zWaytm3dbQ8Egwb+6nz8XlSp3J+avoap6emRdu7v9XHwzz4O9vtvP37UGfoBoJEPCfyGoIE37szfBfPXUgZRBAUuNc2H+xut9hKAT6S5KHCpY57cr8DlIMLu0rWFi4krcLFlYQco8LD5ibNX4GLLwg5Q4GHzE2evwMWWhR2gwMPmJ85egYstCztAgYfNT5y9AhdbFnaAAg+bnzh7BS62LOwABR42P3H2ClxsWdgBCjxsfuLsFbjYsrADFHjY/MTZK3CxZWEHKPCw+YmzV+Biy8IOUOBh8xNnr8DFloUdoMDD5ifOXoGLLQs7QIGHzU+cvQIXWxZ2gAIPm584ewUutizsgCsJnICvAPqOIk6u2v+JBwd8tvlmM4o4ZkIM5ncBzBTQ5n4CIyGipOyVwHvgt99ox2mKmICYgSaA5woAnOcRpawE3gE/A/itPGQs3pNVAhA2owhr/YNqEtq3YpwCNx/lqU71mydasG+A89SlLRAlYE5CqARWgRvA1yp7MbPpojkG8FoeRwO8x9tKMFHgVwhwnjp5qhLgAJuPk85mnsAi7ykU+O1mu34YIQaoWfIWXBSDHgEJA2tmWIgOOZl0JbgU8AFgYsQwyyTgpaKcuMLPmWglEAH3FXBUqeDaTPXCOtLf3Qm5DhVWCS4EfmaTw7RgW2vgUXAyA6o3b9ZmZq6LJn67f/+J/Wf9e0SoM1ALeeJIwIMUlACcII2SjeT7ZJRxp4B7CniLgM1h41xR32kz5a5MpTWzPGRQLQI3LW/yjOKU+++jKgHNttoLRGQ+YelDCxYtZ4oCfpGb2UYQUw3MTRA1ibnGQFD7BYNKUEl5meZa7TVHBRDBHQbFBvDzKoOZz2AKdU6pyeDa0dZv3eeJq/nkqC3gl4brG/CLeoWTQwQY9aP5gs1zgKHpTQr4ROCGBHzUEHGYok5A3QwRYDa9gmjimXtAP3NjEcCtwS0L8DxDRArUjyaOhQ4RUuBO4ZYd+KghgipczyaOlxgizgfO+B3AL0T8M0X0pa/HgC4nbeN2q0XGDU4bj4cIxjsgvAjglWE6GfDZ1vyymVQQp08Z1B4ynmwxsLTR7awUmWzRzzKz5pSwBMKHZ57dA7C83u2Yj+mX8rqg7DsEPDKbM2aISNNoMdt4MbNKilLzGyDn76Qx7q3/2Dn+QRmfnAs9/8t4KS07ZUeYUd8c043eNiX6YP2Hh6uXSXASsY1W22wp5pnpflq2li4tO8215hcZPPTnn4bA2VrvdszM0Zsr2ykEvsiZUG+92zH756W4xim7eOMlSvHypM9sJTQar7dXhozb5z6iTD9w07gzvwrm9/P6lU3aGq226c5zn2P7Zph0a5iBj3yfgOYFKC27dB2e5RE6cHg6D8kL+eR9YwGXdon7afV5n17Nla7FfRuSxgE9iMmW1OCP8z7DlJ2O3gP/NleQh0uzbA0a4bc8+ZtjwifdjjkGLsU1TtmzdXjOVt7bT6t1n1r3gFrOVt7jNIrzvBUSUm3I2cqPy378xssI6FucRnd9NmtEwUsJO2fXfqrsp15xyrr3QyyYrVbzMCbaZubVUGa1/71kSYtmG/H/Vkqre+nMio89U5E9Sd6y/wv4/PMl2qDKLQAAAABJRU5ErkJggg==", + e: 1, + }, + { + id: "image_20", + w: 103, + h: 49, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGcAAAAxCAYAAADHlrcTAAAGZklEQVR4Xu1cW28bRRQ+s2vHLriNY1eEgERT0VykInBdKpwAitNyaUVL09IU1FbBFfCICH8A2gfekCi88Eh4QOKt5fJMjFQRC1E3SJVIbZc4tzpxHMdxLvV1B41VW1aVemZ3Z9drF78lc3bmnPPNfHPmnNlFAAB9x06PYgH5RFF8spjPZ0Sz2WoymS2kjddPkqRCPpvZVNpfIZ/PrCcTi0qfb5zn0LWsZBmLTvpTqP/E2W9EUfx4JbYAhXyucWxobk3/DgUDLjRw+vzq2sqyfWs93dzmNph1WBIOlMBZWVyw5zKZBlO/udUVBBhEh954+/ouh/Plpdlp+B8g4wCek6xtqNPltTvbdly3OZz7pWIRslubIEnFElAmcwuYzGZdNM5sKY4VdNFPj0Fy2QxIxeIaBhgNBwNjqDwoAcm2A17ZaXfsQ6JgazFb9pXbClLBIZrMb2W3NgUCIPWH0KblMdvPIgBzhFGQ8EYxl4lQ+24AgWx2c6CQKwzVUtVstX7ZYrYsVMusp5KRWxP+X8v/q4BDs/n5gSOv2h3tvyWX7ppY6A8D+jocnBil9dts7b0uT6ckwCQAtNaw7XIoGLhEs50ZHNKRbIAk4UB48g+i6CPz63F7/BhgoIbBpTCZxSGywCkD5NjdMb44Oy3SKA4B/H47GPCyKNIMMj3uvlEM+KtatpAobOqvgJ/FXtngkE4PDh77zOZwXo5N07cIDHCRbG4syjSyDAudyaV6ReAQJ/afGPYXstmBVCJO8+laTrJ2knQETbCR2xnobCYnWV1y/KAYHOLIweGR1NJstJUh7cO0ATYqOLzpTHa0tp3jvGdGjkvFwtXFmX9NFMc27ephoTPA8H3oZsAnd/KpWjlksMPDvluJ2Nx+6iFSoYJyDdJbnoHOFE9M1eC8duFD7710+sfl+dl2mmMECfZOTQaiNLlGaWehM0DoVOjGxDUlNqkGhwx65L0PIrHp8LO0vUdutKLEIL2eYaIzhH4K3ZiomSmopS8XcF4/95EvlVj6Yi0Rf+pR2Xu0pDMuAUG5E6/PZxfvoehc+J9aKYuSeDOce1joDAH69HZw4oqalcxl5ZSo7d2L47HoHS+N2kDlUldjLI9nWeiMV2aEGziE2lbjsW/TyYSV5oRQMMBtXNpYvNtZ6EyQwMUj8OHmJEJtOF0Ix6KR3VSHqIhgqH1rKKAXnXHdc8qdHT7rW5iPTNGCAmjEqK3L1e9CgnSTgj1zxpllDnFbOWSwweGRH1ZiC+eoB1IArkawGKpWptvtIaWPF2r1Qy5l8CyRcAWHHEjT8fg4QzIUSI1cThJQrXPVPN/t9pDC2OeUPrjnD7mCQ5Qnt3li0Tt2qjMaZN+pB51psueUwHnnwlRsOtJDA6dR9h0WOpNTQKP5pbqd+8rxnjo/Fr879z7tvMPrLCDHWLmyLHSm5STjD86ZkePpleVfNtZWqb4w8nmHkc5kF9CoTqkS4A4O6fulN0+mVpeXqKkcrehAjgMeJltPOtNszyEde44O/ZmMLx6iOYlH/ok2hpJ2FjpTWkCTo48mK4flJF1S0oAFOEY6U1xAqzs4vS96vJIE4wyKGO4wykJnagpoDD6piGiyckjv3W4PZlHESEEBE53pmFXXDByG7G0JO6MEBUaiM00DAtJ5l7vvCgL8CW31GCUoYKEzvXXVbOV0uT0+BPAdDRwAmAkFA50McpqJsNBZPQ7NmoFzv2I4zeJRvWdktU6sdMargMbiD81p7X5QQK5B7WFRqF4AGZHOdAGHdd+pAm8GA7qGAOtzrxohF2B8kjJ56hbua0ZrpZVzsG8IML7KsnKMKsO7gCbHTk3BkUttchTXSZZ7AU2O3pqDw5LKsbW2weOt9tKLwmuJuC5vdTvaO8BssUI+m4HkUmw7n9WNznTZc8gg5EXgFiFD6u8PDQz29D5Xcc7WRhqW52flTDDZsmQyODuerjxHvl7yYInDCIdjzVcO8QAt11YNDrkcQr6JoOVvl8MJbU90VIZYjccgnVyp/K1lAU2OXbqAQxSqdSglFLOzzVmiNTKLtf7UiyCK0P7MXmixWIG8+08mQ9X7rZoW0AwJThVA5P4wtRAnxwieskagM932nAcdR/Ygs5C9hACTN72MBFLlyxk8wVbTl260tp2SZC/CEnJhwPSrVLWsxNCJECjKz2GEUgiDv/yNMzXO5P3sf+//HpJC5q3uAAAAAElFTkSuQmCC", + e: 1, + }, + { + id: "image_21", + w: 89, + h: 123, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFkAAAB7CAYAAAAfbyySAAAGFUlEQVR4Xu2dTW8bRRiA34k/GjVV05AQgVpB+AUN/AAIog5wItwag4RRHYkb4RdQfgHprVK2wkjFgRPhVsVBuOLACZFy5JK0QYpSWhLXiZXYjqdaZ52uN/sxuzuzmS/f7J2dnX329bPvzH4MAv1hTgAx34IkG8jl5yYR4BkMMNXbJQRQxYCWK+XFNb/d1JADgsCEC4AXAOAdn6L3U5104d6PtzfcymjIPuRy+bmCBXiY5A+JEXy1+oNhHpC+j4bsQc+K4L9I4PaVwfB9Zcko2H/TkL0gz86tAcJXQ0MGAGdEa8guFKfzxZsY4OsogK11aq1se6JaKu2a3zVkB8nImnDUY49mDdkJOYYmHFXdr5SNbrqnIdvIUNBEH+dK2ejy1ZAtLLQ0YaesIbPTRK/mh5WyMaEj2cJBWxMW2F9WysaMhgwALDRxfOzQ55XyYklDNiHTyybsAjpRhfKQWWjChIoH4N3Vu0a1R13Z7IKdJvCtSvnOvB67YKiJVrY92etOKx3JSWlCWchJakJdyIyyCTdNKAk5aU0oB5mZJlyuhDh67OoMEDHqdPQNzjvhKhXJrDSBMP54ZenOshdcZSB/cP2LiaOB9noQiLDLEcDJAFDQutL3+HL5otm99btnIoiR23IiTSgRydc+Kc4jDN9Goei3DqkmpIdsacK8fYroxhTSAxFGE9JD5kETUkPmRRPSQuZJE9JC5kkTUkLmTRPSQeZRE9JB5lETUkHmVRPSQOZZE9JA5lkTUkDmXRPCQxZBE8JDFkETQkMWRRPCQhZJE8JCZqWJVCc96fVEKelYsxQXUllpwutJ0rhwhYtkVpoAgJOnlGhBddYjzIXU6XxxGQN8RBlEjaUmhIrk6dkbMxihnykDPvV4Lu36hYE8VShcyjTT5isOqF4QTUITwkAWWRNCQBZdE9xDlkET3EOWQRNcQ5ZFE9xClkkT3EKWSRNcQpZNE9xBllET3EGWURNcQZZVE9xAllkT3ECWWRNcQJZdE2cOWQVNnDlkRpqAVCf9BqsLolEH9c/k8hMrTSCAb1bKxs2oMFitlzhkZprA6EFlaXGSFag49SYOOZe/sQCAvozTaPd10ZtBrz2nv02yGhOFfO3T4hTqwG9kTSMvxasmEj/xWZownxB9nRwfQUmONZE4ZBU1kShkVTWRGGSVNZEYZJU1kQhk1TXBHLLWxIvMiFmerDXBGLLWRH9+Tz2StSZOd6CoQ9aaYAxZa8Jj6IpgdICoiNaENyZqutCaYAxZa8L/zx47krUmgm0aG7LWBGPIrDQBcHoaieBd4bdE5EhmpgmAh37vh+cXJYMTH6sXPztnmxERqrPNkSKZ2fvhJdNErKFORu+Hl04TkSFrTYQXWChdaE2EB2yuEQ7yGcw2E223+FqLGLLWRPQDRwRZayI6YGJd6GyCMeS33vvwXiqVed/czGFjHzLnBiE7OAjnL1yEgVQq8tZl7HR4wfDVhZsm2q0mNOp1qO88gcHzQzA8Ng7pTDYkbLnGJoJ23h9yQDbRqD+D2pPHMDQ8AhdfGg3aVm+5tJ2O0JFMmk10jo5g5/FWt/7RV68EglZJE749vijZxNOtfwlAq6UJf8gROx0m6FQmC5fGxt0iWjlNeEIm1YQbRVMd24/Wu9owMxD7R0VNuEKOogkn7IPGPtT/fwovX3nNtkhNTbhDjqgJJ+jjaL7cS+2U1cQpyHE04YS8V9vp/nRheARU1kQfZNoPMDYPDqCx9wxGxsaJp7gMzP0ELtDtjOTycwUA/B3N/dj9b/tw6PLoK9VSaZdmvSLWdQx5tlgCBJ/R3IHtzfWf/v791+s06xS1LiuS6U7WetDYr25vbtz6588/AqcbFhVcmHazgFzb2lx/e69+9Ghjraq8KsyDQV0XYWfCDRMRopaleuKLMhOuqODCtLsLmVIKF2rC7DCNFL3syXhy3M6I1oR3KPQN2kedKEVrwv+/1ge5q43D9EKonBmjB61zrSnd6SCM5F4x60VMpaAZEcwIbmbbBQ04RCTbi5pRnW2m5zFGM4DwVduyGgKodgZgYfWuURX9pJRE+4lubkmiITJvQ0NO4Og+BwgNnakYw0mSAAAAAElFTkSuQmCC", + e: 1, + }, + { + id: "image_22", + w: 117, + h: 23, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHUAAAAXCAYAAAA1OADtAAAB7klEQVRoQ+2aQU7CQBSG/wfFrdxAPIF4AjER407cKS7UWBN31hvgCWRpQk0w0eqy7gxlATfwBuoJ1KUEGDOFIggsCI/O5nUJ7f+//F9m+jozhCnXzv55pp1sFxIKOQWkp90nv8ebAAENBfIDr/I6zZn+/5E7Pk6nfqwyCEfxlituMybQBMiZBHcEar54lgVUA8DyjAZyu6EEFOGy/uCWh+0HUAWoISoMtgRc1Ty3FEmFUMMpt2W9ywhlSNiQBCm1V3u89bV9CDV/YFflHWqIBp/tR+C5mRCq7nI7ifYbn7YomUuATgKvUqWtQ9shhWtzhYgzYwLNwHNztF20fQXsMgqLlMEEAs8lyhdt/QmzYbAOsWZNgNY1VN31rrDqipixBFQCmxqqMlaBGLMnEEGVkcoerTnBCKq8U80xYHdOdq1V6X7ZYzUrGHa/8p1qFgKnOwHPNc8tUH/d95NTXLRMJdBfUdL2+eJpGaALU6WIL0sCf2u/Wq4/WvVOunyvsuQbv4jueuv3rm56e7s0vdEqG+Txo+By7E27kdr4yQeFKkitcdmJzkIT+O4faRkAHRmpkbWeipdalqMARzbNFwpkPnGFu6SySi9PN3rxaOQaO3g2DDfVShWAbhag7HwVyNMcCRDw1SU0rI7lT4IZefwCpJ+NQG9NEnIAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_23", + w: 65, + h: 87, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABXCAYAAABbeCjDAAALuUlEQVR4Xt1cbWwUxxl+Z20fZ7CxzUcIuCkgiiEqLY4DialEwCSlaUWFoSglqlJMaX8kKQpJWykNSeuohX78SB2Rjx/BwRZVSVQJbMGfkmCbINUmwQaKU4gpwg4Bp4ABA8b22bdbPXOey97d7s7s3t7ZzSv5B+zMu/M+837P7DEaZZpfXDqLMmmWWMaZYy1N6V4SS/cLxftmFS/Pz9IGKxkZzySswaBaw9Cqzp7454l0rG9UQAAAAW0AO77QSUiD2KtD+rjKzhNNN1IJRtpBUAXAJHSXplFFKs0kLSAIuw/rrJyRUUFEeR529uWOtpZKD/OkU3wHATs9ThusIDLKDaJijwLbLfyCQfSbs20tNVLJXAzwFYS5xd8qZpoOW/ey0y6WTRcMYntJZzV+OE/fQBixdXjzmW6k8WFsl0GsLkM3qs6caOn0ws83EOaWlFYwol1eFuHXHEZ0WNe1LW61wzcQikpKsQsxWjB7ah4V5GTTs48uoqd2HaRbAyG/5HXkYxBtdOM3fAFhxBccFyubmB2gzSvvpx8vXRBd7PPvHKZ9xzrSAgJe4gYIX0Aouq+0hhhtwMvvnTGZ3ti4kmYU5MQIfPHaLVqx/Z20gcCB0LX7VEwjaRDmLypdruvUiJeuXVxEL6xeQrnBgKWw616to1MXrqQNCPiIT9palstemBQI5ogAAP7ww2WO72s9/zn96PX9UNW0kYo2JAXC3JIlVSiAHpgznXY/uUpJsOqmf9GfDxxVGuvHINQfZ9uatzjx8gyCCImFk3Kp/rm1tiZg9fLTl3roV39rorOfX/NDThmPro62lmipbjXYEwjmnAAAzJ8xWbYQy+d7P+qg2iPtdOZSj6f5qpNkJuEKBBRCegarIsNYjQVsWLqAO0I/6MNz3ZzN0XOXYtgh2kzMHsf/T4Bde+QU1X7Qrpx3MGLPftLWXGW3TmUQRqJAnagLkAs0bH3clRn4AZbgAZNCAnbp+m05W8bqO1qby5MCgWuARqgLooURkqGfryzhfG/2h+iJNw9E1frhr8+krauXEPxFKglAPPHGASWNCOnBArvmjJImmJMhIdSx32+IagFA2HGwlaDSwr6RK/xx/TJ6ZIGjT0oaI/iVX797WM6HsTUdrc3Q5ASSgjCSC1w3z3TKCQAI0uOaD07Rg3NmcCBSTWXb9sjNwqDajuMtaOi4B8GcEYrZjVsfT0iLUy2oE3+YonCsDuN6O9pa8n0BwU1ilC5gVr+yVynM2hVVUnOI1wQUR3B8fpIwoffbOwkgIyyq+hJoADTBibSMDNK0DBoeCnWF9GBxvIOUgjCvZMkWg4y/4CXw9g0vrPdTfs4LFebz7x6OUWlUoX9av5yD4kQyLQAABXdNp+uXu0kPh8EqoWErBaGopBQd3t9iNpzcmkVFvoMgGAKMmiPttO+jjmjYQ1EGR2xFsh5FIBikqYUz6b+fnocWcBYARdf1mEihDEI6kyOYh8gKsXCE43iSAZCTV0AT8vKpp/tiFADwyJ9yF924erlX06lY9CSlIMwrKW0yiJbFp8jCG+dmB7gNywiJjco4Mx9oxo6DbbThoQUxc51yg8ysAE2eXki6HuYAjJgAZwsABu708T8yhUxlEMxhcVt9M/fGAgjYLWoIOyGxa48smKns7JwABTDwA/H9Sqh+bsEUCo6fQD3dn0UENZF4jmeCRBYpBaGopNSAp3694tuWawMQyBZPX+zhtQTMxkyoEvHMr6RJmAF2HIJB6HHjJ1BoYID6eq8nCC/8wPRZX6Puzv/EaIamURmO9xxBECUzGiYyLw0gCgtyY5yYKJUxPx4cmflYPYcWfK9qPxccBJWH8PG7bp4LRzi18Ks8OmBszDMVEIpKSk8UTspd6CUsIuZj19Bv8KuQkjnDeOBEdLhysSsBAIyVmoNoo3sJi6K6Q2Jlp0HY1YsjZbBMy4Rwi16sVaoYMX7ipMncR9gBQKby2tYc0D/My856xm3PAOFtxbY9tPk79/OmixVBS56ueS/6CBUnHKtdPoCBqtUiTKVg2nQavNOHUBjjA0xrUQuRMIW1i4sWyjrIZiFFXwFRQtURQiP2Huug1w62cedrly6jgXLo4y5LUIWDxM7DP/RevRyTG8RN6jV0bbn5PMJWExAV3FaLsFmYAvyAW8K8Hf9o5Qc38dTd20/lbx6MZHuR1JeygkFeD4CGh4b4zt+5fdNu5wVL9doB/uDBudOOq7bR8QZEh/fbu3jr3Y9IYAZC1RRUgLfqN1pqAirH7Y8ta1StE0Qk2P3UKtdZocrCnUxBZX68OcT3FSxBWLfm+6v+vrl8v+oL0NlRqfhU+cWPcxMVVN4hkiQx1hKED6u3vbZ49t1PqzAUaayf+YD5vfAV5a/sVVmK8ph4k7AEIdyw81ON2D2qXGEOKHRQH2xY+g1ffYKf/uCLnY89h0gAwWjcVUyGHr1roAoExqGOeK+9k7fb/SI4XIRPP0lqDkbD2zVERmIB7+cqXPBKAQgJZ5OJmtBQjdujqb59pgyDEwi4CfPoN2fTx59d5R0p+CcpWZw/xIBgNO4sJ4PtkzJyMQALO3qu2zEldmJnB8K2xx6idQ/Mi5kKs8F4W7I5e4gF4dDbVcQsLly7ENo8VKTRqCGc6gIn9laO0antv72+mZ90J5DDeWQsCA3VuIjp6cgIoWxiMMDLZggfiRit/EQ5mSxSFGSik4QudP1zP4hGoNDtXuq/cZVypt1DGVkBfhKFvCWOLNNlyzzBaKj2fJMGIKB2MN81QMaJ6jDZNBq8scMg8Js7rYAyMzT+b0MPU3goxIHInRaJ6vN++VYMBrKbbPGa4BkE8VbRJ1DtEXi0tIRp186fpkmz77UCwfb4zXdN8EsYGZ+BoWEKZmXG7rQeppuXOinvK3MSQXA4iLUDYUyFRxkg4nn/jStkhMM0fvLdvOeAgkuQzBQwzjfHqLrgZMaFhsMUyBzpIQz2U+a4bBoe7OdaUDCziJiWwTtWcMojJL20lQjCoepKYpEjt7FId0JDND6QxZfWd+UiDQ9GuscTps7ggMQfzqpoQSIIjbtmkaGfH4sAyNaEEIqrO4gknCT3lMz8rNJmz7mCbKHJPMcu4wYMEq/4K4N4hhAaBYDoZEgPLlf9gMzXKjIZIWVzzbaOhKxw5AI52vbmmgH3mQf1YLkqAAnmEPWoY8w32GSBVrh5+ljMtttsNOysI2L80uZok6ww8vrFi5DLHoTGXflk6Ljy5qmW8BO4xS/V8nokniA806gy2W8mpafSo91kgTNETWIi/uGXX1/C2fqEeMTRZxgeGNidkRXIQUKSTkKT9cylnsMGUZOha3UqX7K4XZ9UEwTDnupfDOnDQ5lZ2TmUlT2BssbnkJYZ4OWrHaHCQ0aHv8CEPMexVjxuD4Zac7/75CK3QrkdrwTCrT2VLw7cvPY7O+bQDmRsglDa6sNf2DBq/eDESW7XhqR+Iyvb5OvXsFaLUALh5l9f+vdgX2+kTnVB0BqR0rqYJoZ2sRWbUnsxeuRNUhCMSJS4jt0N9fXS4M3rXL3tCCYCU8nOnxKjHa5BMOhl9vCmlHwgbhFlnJdnHKreQoz4ZU4zDfUnfmcg8xGugGBaASvbmNLfTRDrkWtCQ3XCl6+uhPE0mNWyFT+xvJHuiZ1kkiMIyZxGJbVYppexsp+l7bdVnEGwMYWkBJRPPslWbMLvLqSNZCCkv8mSprBoRnisgdDLVmyy/DAjlWoxtkBIY1gcu5rAtNmsbKOnX8NIRlMk0aG6gox0/TpGesOiuiYkcWHD3c4Y9cQyKtKVHLnPGFN9X2GU/ICyJmBgCpsqXcT0inQmRXbaKU+bU2ISo6v+rs0hog3e7y3EvbCLmLGFlf3U8nNdd37Ev9FSTeAg+HEyZbBXSWOVo+X8nCBTAoED4fksgqv+ltGI/6q6ogyCeyfJaomFa8aC45OB4QqEiEY4Xu46SQbVkabVjOWd9+QY4ydxH0HhYtJZpOTlv7yX2fn/JLirPEGmSl+G567N4csgdLwM/wMiRaqjXbIzuwAAAABJRU5ErkJggg==", + e: 1, + }, + { + id: "image_24", + w: 172, + h: 157, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACdCAYAAAApF5PQAAATq0lEQVR4Xu2de3Bc1X3Hv+fqYUkYSVjyA9vEMjg2tqHIiSsCxEYybTNNHxY0nUIJYo2SyZS0qSzo1JRMbZc8oANChIF0EoNlGTJt8wDGtGWmgKw2OCmmxk5NGxtjS9bDkm1ZWr1W8kr3dn5398qr1a503/fcu+fwh4z2PH+/j377O+f8zjkMIgkJpJGA8s7LjWBKeXoBKQNQ2NGkzwcgyfHfZQ+wqm3Jn1uSN7NUWhQOrASUlr3FUOR+GwfYCkwBHoc6+yir2jZgpA0BrBFpZVBepeWlEBTsdWHIYQBHY5ZaaYtZ5/QgC2Bd0Igfm1De3fM6wLZ62Pd2KGhid9XuSuyDANZDjfDatJ3uwGT0MrJycs0PlclVrOqrB7UKBLDmRRnYkna5A5GBC2BSFvIKF1iQlfIG2/KVagGsBREGvagd7sBQbwdy8q9KC2s0MoxI/0Uo8qQqzux5eZhXuADZ8/JnipdJK1nVtjb6QFjYoNNncHx2uAOzwUqADvV0gGVlIb+4dApQAnhssD815Aq2s7tqGwWwBpWZCdmtuAMEY7jzE+QVl6a1rKN9PcgpmI+c/PkpxUngStm5SX7vFbdAWNhMoNDAGM26A3pgpW5MjEdSf+3P3sd2tqW2TFhYA4rMhKxm3QG9sFqRIdtSqxpXYWGtSDFgZc24A27AqoIqgA0YbTYMx6g74Bas6tDiKwXCwtqg6CBUYdQdcBVWYWGDgJi9Y1Ba9pZBkZsA3DlXzQTrYHcbCkoWp53tz1WH0c+FS2BUYhmSX2nZWw5FqQMU2l0qSh42bbUO93bgqoVLzcz2TUtRAGtadJlRUHURIFdDQR2AW7QlKbKshUvLXIUVQCvbUlspVgkygz3Lo1RaflgZjUR2Dp07W+kBrOTB7mNbHgoJYC2rMjMquLT/sU1MVv61aNn18ymYxfXEsI1V1ZJ/LdZhXRe+zxqM/PRbK6Jj40fmL75ugSewJixpCWB9Bo/b3Y1NwOTXAaxwu+2E9o6xLbVT58rEOqyHmuC56TisFDg9Y6XA1X4nuAPCwroqef80prTsqYbCyGf0FlYgDCaVJR5UFBbWPxy50lMz8QSOdUzBbnGmyzHp+r9irmBNYV2FS+B/xmwbgfLuy02A8qBtFVqtKIV1FcBaFWpAynMHKzAVsJ0sYuHDBgQ6M8OIR2jRstWcAS9m6jddJulod2I9AljTUvV3wTistGylxglwkxT2HLvrIYpfSJkEsNxoyr2OxEMJybLyBSswbZMglUQEsO5xwkVL3GwIzJQGrbmWa/cPCAvLBS7edoJjWAGm3M2qvkJWf9YkLOxcEgrI55ytsU6XapolLOESBAQ+o8PgGtaEWFc94xIWVo+UfJxH+fHfb0JJyQEO4gJSSXHOSVZyIQGsj2Gcq+v/cN/d//S1zeu3Ys3KeXPl9eDzY2BSpbiB2wPJ89akUhcqfrnrwpuFhfM3fun+3+ERVl0rAsKHdZgsAoU1Nhm6s9/uLlEf3u65cLipK3zDK399H0NBnt1NWK2PYCXLauqxDuESWBU/AKUuVIYseRdkDLBnm9Pu0tjQ1KxVKHWh8nORkdavHj5V+Oy9W/DpjeucbtJ4/UzaYBZWakwAa1zkUyXImkGSCdCd8V/uZg3N0+7kt1C9oaLKI1+uDo9N7nvif04XLllUikcfvsdQeVcyJ50eMNOmANaM1Miq1j8QAhhdspsYld8OWSp32y2gvkRlZe9PT3ehqSuMt3bcD5QUmxyZQ8VsgFVYWBO6UR4NVUKWCdR0+/DHIEsh1thkykcz2iWlvoYs+s7DPRfx1Mlz+MbmDdj8+3cYrcbJ/GEwuTrxYQ0rjQkLq1N6qp8qqaDqewqIYR+Y1MSebpp6AUVnUzOyqW1nowzyZBnA6GLf8kvRydJrcrJXMSiLe0YiePWTbvx3RMGPHrsfHE20LE2wxCqBSWLiVox8VTOH8trBcBCKchBy1kHW2KQ+LpGcVMutTBRDkcqhoBgMdLSZvtenWfLBCRn7OvsxNj6O2hUluDo3B++cPYenT/fhpa13YMWdnzE5StuL2Q6rcAnm0FH8659Oj9p9Lr81oWndwdP/NzyO75w6j3sXFeC9i0P4zm+U4eiFSzh0PoxfRhQ01/8xUJj67QDbcZy9QtoUCFlZDUhXvXAJUlm72OyfQNX39e8CDT/rGVQt61OrF+GJ4234fsUaRCeiONR9Aa92h1FfsQ4V96j3pXmdTO1g6e20ADZJUmlm/3rl6Ui+59v60DUWxfayBXjsw9P4i7WfwobiAhXWjpEInusexaGHfw9YudyR9g1U6iiswiVI0ER8UqXrQl8DCrScdceve9Q6nli9CE8eb0NRQQG+sWoJRicm8M7ZHrwfjmBlyQI8FPqi15Mtx2EVwMZxokV3KBIPN51MA/zbpy5gaGIST964BAc6zuPVrjD+8XOfVvOQ79oxNIr9vSPYXbEGa7fqdoUt/xGlqMAVWDMeWHWnKktuhAJ+zuPHaSCf9bWeMPaXXwdatqo5fAo/+fx6FGZLao632roQlRV8t2MYh750O3DrzU6AqKdO12DNaGDj26r8nRoF8P7AKMi6Eqz5ErD9g49x27ULcf91sUeGCeDDvX3oiETxCXLxzBc+A5TfqAcue/N83N6N1SvXGw0RtNKJjJx08QwrrbNu/aAdL960FGvnz0NL90U0tvXhjdvXTOn5o74BnA4P4xf9o1izeCEe/MJG9ydcJ86MoyC/gj34+K+sAGi0bMYByzOspLyHj3fjniWF+K3S+erE6g//43/x0ufWYEXBlbBWWh3oGxtHS/8Y7r1hKSp+9zZ3YwfOnougs/dJ9s3n/84ocFbzZxSwvMP69sVh/NdABI+vWqjqdc/JDhwZncSL5eozq1NJ81/fvDiK2tXLUXHHze5Z2MFh4IPj77Nv/fBWq/CZKZ9ZwNbX0DFibjYDEhVGrsDXj3fhhZuWqRMrsqB/cugE9t2+Fsvycqbp9sDpTvX/X+gYwFt33gSsXAasX2VG/8bKEKw/PxIB2BftiJEw1ngsd8YAqzxS08TjaoCmNNocIJ+VXIHZrCt9pgH7Wu8w/urmlVi7sAi4y2GDFx4exntHsqAo/8yeaVZfdPEiZQSwvMNKiqcNAlpvpTR4OYo/PfRrvFCxeprvqgGiAftm7yBq15ahorgAuGUNcF2svO2JYP35EUBR5kOWVqYL4LG93RQVBh5YP8BK266UtK/+98714fETPThYuT4lAxqwxwYjGMnJx3fXLwfy84DNnwVysu3lhiZYvzqZH/8+3ueldQ28S+AHWJPpisoydn54CkuKCtUt2FRJA5Y+e+Zs+ArYFKl12y32QBudAI5/fBld53PjfQjHT1OkDI+0968kfW2BtbB+hJXUdDo8hD8/chrfv/XGlO4A5Wnt7FXdBkrkFlR+6lrct+yamJYJ2o3rrcUV9FwEPjolIzIe21aLJc/OqyXiG0hg/QqrBuM3T57Hf25Jv9WqbRxQ/tFJGS92DuLApnVT27aqgleviC11GXERCNQzXUDfjJPqx1hD89RbWW5Z01TtBA5YP8NKGwVNJzpwdEzGDz57Q1outK1ZLQNt0R4cVbBnQ9l0aCnDklJgcUlsYyHVHQUEJ4Ha0wdExlK3KUsb3DqjNtcfQ6CA1Q7kzTVoXj8nd+D5E11YVXoNvn794lm7+fbZc4hMTE7luRCV0cny8LerF80+PHIZyOrOtKLpynHhCmidCwyw8cDrvbzCqKdfdPL1e6d68WfrVuD2BbMfdTnRP4iT/YPTqi0tLMK7A2NTO2V62pwjTytraObiGEOggA0CrKQQmv0/13YJP9t808yv9hRkJU6+6OM/uH65ejKBtngfXB6fhJmnlotVgeTu+97CBgVW2oqloJadn/ThyG/re3qAVgo+PH9JXTFYUpCH3yR/1a7E5LvZM6/MeSO2Xc3prcfXwAYFVlIW+a8f9YXxg3PDOHCHsdjWCVlBlsTs22dn8HyDIB3AvgU2SLCScrQjL3t6RqbFvuq1PDbmo5trKt2+bklv/30JbNBgJWWRO/CLi4M4dpmheeP1evVndz7yWwlWV65ZMtN53wEbRFhJcRTj+tHgGKJ5Bdix+lozurShjLKNNeynw5jcJl8BG1RYtRWCk8Pj3gHLsd+a+NfjG2CDDKusKPiXM10gYC9l5+Pb65a6beE8uSbUzCB9AWyQYSWlUYTWW23dalzAj/uj+ElF+m1ZM0rWUYar3azZ+ss9sEGHlZRDy1L/1tal6qmxawjvbFqrgzE7s/Dvu2qj5RrYTIBVU4S2rPW97hH8++evHOm2E8u0dXl8isDIGLkFNpNgJYWNT06ieziCH12I4Nbi/KmzXUaUaTIvN6GDevrPJbCZBmuioujWF7qmSDvfpUeJ1vL4xx2gcXIHbCbDqoFX9cszeKV8+Yzj3dbATFmaNgrKeN3VStVjroAVsMZURFa2qXNAva7I4eSb1QHuJl0C1uloapcY/82qRbpCDTXQ1SPf+lI7a2iefqWMvnKe5uLCwgpYUzOgXRNPsa10wYZ21aaWm948IGvcOTaB5XnZap7kW2LS0iVJVV7d3mKFeM+BFbDOrj66wogCsglM+jfdDkOgEpgEKVlU+p2xpGxnDfvpCSffJU+BFbB6wItPYgbSScYzYAWsHsAK+GrNlZtVAgGrJ7D6bgmLC2AFrJ7ACnB0t4AVCbjqEghYrajKSln/TrKSR+0asAJWK8BZKvsGa2iutlQDR4VdAVbA6pnGfROYrVdCjgMrYNWrCgfyBcRvTZSMo8AKWB2AUHeVwfFbHQU29lLLZDUYq+T5TQHdevdnxkD5rbYDG3tYeLISYOTcc/lKiz+5M9XrwPmttgAbh7QaYPSiiL7LoEzJXxQyIAHuL8IwMJaUWQ35sAJSq+J2ury/Tg+YkcacwE75pDFL6ukb52YGmDllgg8r6TItsMqjoUoockhMnHyAvM8jsIxIeBqwcWsaAlgdgBVGKhJ5vZJAMJev0klzCtj4+wAEapFXohftGpJAO5hcx+Olw4ZGYTCzCqxSX0PXK4qZvkHheZQ9TBfEQJYa/XTa1S5ZCWDtkqTz9WQ0qJp4Y8DSBEuWW5yXuWjBhATaAWUX5KzXM9GiJssr2YfdaUKgoogzElBB5f2CYWeGnr7W6asE9TUHxVqr2ypIao/hBCDvyLTJlF6pp1jWkglaMQHTK0F78z3FGpp32FtlsGqbsXGg1IXKIanQiuUtV3WdGTtVVkWacqdLQGtVrAbLZ9BOlUHJzMiefmtWWFqrstVXXsCqT07xXLMGv8Qt7YeGahSZ9UtAwKpfVnqAVddo6x+g2AJfv5JtWCruFPD9LSzuiGl6K3OGF6rQxjYW6KFcMRGzR0tcP49pzxCdqUUXsNT05fqaDWf6B1svT8pXO9OV4NaaLTFclZONbElCXlbW8Wty8zaJXStz+tYNLFXf/bU/2jgwPvFu++Dw1VFZMddiAEvlSAyFublQf86L/SxSf0oozM1JHHGgz1u5oVpDwKruQV2ofGTycuvHA4OFHUOjbvSRizbys7NQkJ2Nonk5qqUszY/dyVqSp/tu1sCft3JDUYaB1aClzYXRiYmik/2DCAq4qaBMYSXN6EXAakZqKcqYAjYRWpqIjU5MqNCeCQ+Bd1fBQSjTqUTAahOsVI1pYNMteXUMjaBnJIKe0TEbu2m8Kvqq1nzKotwc5GRJRr6+jTeYrgST7xaBLDaK02pVyvaaRjD8ZXI9ZHUJ3L7IuGPwapOdRL9Ss6BWx2VPeREfYI8cr9RiycJq1eg5YtM3No6LkXEVYII5MjGpeyzaxKYkP2Y1aQZOs2/yL/lNAlYndGMPsCbjDugVa/ovVWJgoPVLf6bMOsnqpo5sI0Kpf6AOYM+62Xku2xLxAY6qxTZgY5OwGtq+zdzL4ASsjsJqeZUguXexizhkOjKeeZdwCFgdh9V2YFUrm5kncEXklSu4WlyHTdfH+C0ymXICV0ReuQSrIxbWyFKXi+N0qikBq1OSTVOvrZOuxDZid8mq/mxQY2hF5JXLsDpqYVV/9pEvV0ORXvNgXE43KeIDnJaw2xZ2yjV4pKYpYHfMClg9gtVxC6ta2WAtdQlYPYTVFWDj0NLlHH4/fUsTrBBrbCK/XCSPJODYpCt5PD7eug3HL2Vr9EhHotkECbgGrGpp/XfZHFnVatbY1Cao4UMC7gIb82dJ+fwvdSl4jj3bTFfoi8SRBFwF1j9LXSKWlSNGp3XFdWBVaNOcUuBASGFIUjV7uolubxSJQwl4A2zMNeDtHlqxZMUhoMld8gRYDpe6BKw+gJW66BmwHLkGAlafwOo9sN6vGghYfQSr58DG12Z3AfAidlbA6jNY+QDWGysrtll9CCsXwHpgZUXQtU9h5QfYmJXtd0GOb8QDWAZcaEs04YAEPF0lSByP4nzc7G7W0Ez+skg+lgBHwDp2OqEdkhQSu1c+pjSh69wAG/dlKTDGrjsN1NevhVUNBqjaKPgC1h63gOJX68Tr18EClVNgLbkFqkWFLDWKBy+CCSs3qwTTJl/1NcZf+2DYh0lplwi0Di6oXFrYuB9LUVx36hR9a3yZSpwI0Ckwv2fjyoc1sIlwDJJUJ2b+fsfPeP/5A3b2yzfa4wcCm4wPVZQIggT4AzZ2xdGZJOGKJaog0GbDGLgDNu4WJE68douZvw2aDkgVvAJ7FAxHxcw/IJTZOAw+ga0LlYklKhu1HKCq/h/637kHhv8omgAAAABJRU5ErkJggg==", + e: 1, + }, + { + id: "image_25", + w: 251, + h: 182, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPsAAAC2CAYAAAAftPsUAAAZwUlEQVR4Xu1dC3CdxXU+++t1ZVnvl4VkYwM2ZjKTKKZNbZgUZwY6QCbBFJzOpE0RbWfaaZJG7mQ6yfSBSFOmDzAiUJqUBMuPkgEK2JSWh90gU4I0YGSpxCBLdpHwU7ZeVy9f3cf/d86vu+JKutL9H7v/4/7nn/HYHu2e3f3Oftrdc86eZeCzTzt44IegaqPst7+x22ddp+4SAq4iwFxt3WTjOtFr6/8SLp45xu7+/V83WZ2KEwKBRsA3ZNde/fe3oazyZl1b5wY+ZPfe/5lAa44GTwiYRMAXZF9AdBzgsbf3sm//dZPJsVJxQiDQCHie7EuI/t7bAAP9D7Ld+1oCrTkaPCFgEgFPk30ZogMoypfYw23tJsdKxQmBQCPgWbIvS3QAYLv3ebbfgZ5NNHhPI+A50mgv/KQOVlU+P2+MQ/j6TwB0v8uBPMR279vhaVSpc4SABxHwFNl1opc3dEHhqjXzWA30A+A5ff7TdrHd+1s9iCV1iRDwNAKeIbsxogOAqmxgrW0DnkaVOkcIeBABT5DdMNEBetjufY0exJG6RAh4HgHXyW6C6ABAW3jPzyjqoGcRcJXs5oiub+HLWWvbuGfRpI4RAh5GwDWya8/tuR2qavasbIxbgBxZ4T08kahr3kfAFbLrRK9rOAi5uQXLW90XgcfUu9kjBw56H1LqISHgTQQcJ7sRoh8ZnoIvlK2CklyFoxZmu/eVeRNC6hUh4A8EHCW7EaIjbC9enICHTl2C+xrK4daq1XBDUcFj7NF9zf6AlHpJCHgTAcfIbpToHKZ3x2eg7ew4TMYTMKvBHz//5pv/6k0IqVeEgD8QcITsZom+CDoyzPljLlEvPY6AdLLr2WUqa7+7wBg3PgJw+GVj0NANN2M4USlCIAMCUsk+n0YqtRNI9KOvAUSjRpQzyHbvW2+kIJUhBAiBlRGQRnazRP9oahb2nh3TDXJoicezeudY5IF7f/7SD0iJhAAhYB8BKWQ3S3Q+jMcHRnRL/PlIDDYVFSSmVO2+9l++9W/2h0kSCAFCQDjZrRI9jSoo9RTNT0JAIAJCyS6Q6HSVVaCSSRQhgAgII7v2ynP/CZXVdy6A1Zwx7tOqDPayR/ZR9liao4SAQASEkH1JvjjsoEWiT8RVeOrM8Be/+9JrqelpBA6ZRBECwUTANtntEh2t8Gh5PxuJA0bNdY7NqLfXFH/9+4defTaYKqFREwJyELBFdrtExyEhwdECfy4Sg82rQ9DUUAb1obwwqMp21trWLWfYJJUQCB4ClskugugZ4CbCB28+0oglImCJ7A4QnQ+ZCC9R+SQ6WAiYInvaNFKIVywKcPgQwPSUcPS+fvxM/Jkt9TspcYVwaElgwBAwTHatZVcF/OatJxakkeJEb38VYHxUOHTf672on+X3N67FZJP3s93724Q3QgIJgYAgYI/suKJLIDoS/E9/dV5XARL904w1RPiAzEsapgQEDJMd29a38aVrPoSikjJ96y6B6NgOXogpzs3RL8WkpKZKDp8IL2EekMgAIGCK7Drhf7jrC9CwoR3+r68QpiYMQRStnnvNKf/yRUPlMxfS7t/U3g/9XZ20rc8MFpUgBHQETJMdK515+omhq3qP1yjxmCEYh+75A4jUrwclGoHaF562RXqMsPtG9xnonZrFtnuiamj7QHc75ZI3pAkqFGQETJO9b/9Tx/Nr1jTmT45D7bvtYITwg382dyUdyV6/ZzcosxFLmGO0HZ7l8QpsyhdWFNjRe6yT3mu3hCpVCgoCpsj+0Y8f/VHhhuu+zcHJGb0Ma95th9wVpKgFIZho3AazDRsgd2IcKg+/aAlbjLRDok/G1bT1GbBdJ7s66HVXS+hSpSAgYJjsJ5/4p7sLNm5ewNSzb74BbPAU3FRXLRUrDKf9fq+B8z5jh6KJgiba1ktVBwn3KQKGyP7Row9tC2284SjLy83j4xw7+SGc+cXr+n/XFhdBY3W5FAjQ1/7SRWOGwGQHejRVaervfofi6qVohIT6FYGMZD/x2N+vy69fezyvuKSCDzIychlOH3oeErO6kUwK4dEQ981fnYN3x69YwTasATSTtd4KdFQnWxHISHZukOMAJKJROH3oOYgMX16CiagVngfVJC3u1rHXYG/f8U5KgmEdQaqZRQisSPbeHz92ILThmt9NHS+e00d7TywLgV3Co8UdXWvLGeIsYN+jqLCjt7tzwEJdqkIIZA0Cy5L9oycf/pvCa69/MHWkw/97HM7/cmUP1xVVg3WlJbC1utQ0SIYNcaYlQxgYa+p7v4NegTWPHdXIEgTSkh0t7/nrr3s21SCH5/S+5w5kHDaS/dh0Au5ZWwW/UbE6Y3le4O9OXYZ9Z8cMl7dSUAP2WH9XBz0QaQU8quN7BJaQPZ1BDs/p/c/th+ikKas4NFZXwNriVSuChIY4fLHVpMXdMvAM4OisGtpB7jnLEFJFnyKwhOz9P9/Tl1dRtTF1PAOvvQwTH5+2NMSVCL8o9NWSfIuVKOrOInBUzb8ILCB7X9u/vJVf1/DF1OEMHeuEofc6bI0wHeElGOKs9PHBvq7OFisVqQ4h4DcE5sm+OBQWBzJ9/qzuTxfx3dJQCyX5czE5R4anAINlBFrcLXeRtvWWoaOKPkNAJ3s6gxye03sP/HRB4IydsX0QUWHn1bXwztgMPHRqqY/ejmwBdWlbLwBEEuFtBFjvPzxwVcFnGgdSLe/YZVzRcWUX+b0wrUDHiPg8dQL7SNt6gWCSKG8hwE7/pLUnZ/21nxV9Tk83zNfjIXjz8hTEMcuNRz/a1ntUMdQt2wiw0488cGei/pqX8ssr8lHaxMBpGHj1ZUOCa2+/C6KjwxAbHYGpU72G6vxztBg+vjhkqKyLhWhb7yL41LQcBPQzO/rWtYLQe/lV1TX9zx8wfE7/bOvTeq8SkStw4nvfNNTDU/EceCaSDxOjI4bKu1yItvUuK4CaF4fAAtfbka/d+cpMNPJlI+JXX7cZrvnWX+hFJz44DgM/e9xINb3Ms/HV0DM6AdGItYw1hhsSU5Bi68XgSFJcRmBJUM1/3/tbfzsdj/9Vpn7lFK6Cous2Q2H9Wrhy7gxMfNCVqcr8zzGk9kmtEi6cE2sANNwB8wUptt48ZlTDYwikjY0/uvP2r07Gos+oAEUy+otkf2IMYLawGMaHL8loQopMjK2PqQUtFGorBV4SKhmBZW+9vfW1O26eikX3xjXtWtF92HN5Fk5cSUBJRaW+lY/MTItuQqY8yoQjE12SLQ2BFe+zv7XzjurpRPT1mKp9XlQPDo1F4X8m4/PiKusaYOzSBVATCVFNOCEnzIC1UIJLJ6CmNkQhkDFTDTZ05N7b9s/EE79nt9H3puPw7MhCH7uSkwOVdfVw+ewndsU7X58SXDqPObVoGQFDZEfpv9h5259PxRKPWG3pfFSFJy/NQkTVlogIrSoC/OOn83vKIMgnb3VSUD1HETBMduwVnuMnorOvmzXcoUFu98UIjMWXEp2PFs/v8VgMZkzemXcUrRUao8QYXtEE9WM5BEyRHYUc/Z1bb5iOav9hxnDHDXKZ1FBRWwdT4TG/+N/TDYeMd5mUTD93DQHTZNdX+J13VEfU+M8iicRXMvUcjXFolDPy8fP7yIVzfjPYpQ6PjHdGlE1lHEfAEtl5Lw/fc9vjVxKJby3X65XO6cvVyc3LnzPYnfvEz4THFzOPMhWaKKut43OaGlwGAVtkR5louJuJJX6Q7hyP53QkvNkvPxSC1aXlMDp0wWxVr5WnyDuvaSTA/bFNdn1bP2e4e0EFqOVYvhGOAf6x+iHZC1YVwcgF34TULj9UctFZnQZUTyACQsjOz/FT8WgHGu5G43PW93RuNjN9R8IrOYpfbshlGhqt8pkQop9LRUAY2edX9Htue7nt0pWvHJv+NErOzgjQQo8htWilz4qPVvmsUKMfByGc7Jsbt65XFfhYJBgYUjs7M509hAd6oUbk/CBZxhAQTvZNn9/aBgzuM9a88VJZSHiy2BtXP5UUgIBQsq9v3F6Wr0Sk7bezkfAAQH55AROZRGRGQCjZN27Z2sQA9mRu1nqJLCU8AtKjKNDce6xz5ZczrUNHNQOOgFCyy9rCL9ZRFhMeQIO9US3UTAkyAs5MCcMXS/Ybtx0ETbtLQj+XiEQrPVNyssMPvxSwMAC0RtVQK5HeidkUjDaEkl0/s7NIqwwDXTp1ZFXgTfr5pp/nZ9WCNiJ9MAgpc5RCyc476tR2HttDwheVlvk+lj6DkvWVXlGhjWLtZdIhu2VLITtCtmnLVnwd9QEn4MNY+vKaOsDbcl5+bUYQFj3A2ABoWjcw1q0l2EB/9zvdgmSTmCxGQBrZETMnrPNcN5zwmM/OJ/noRU+r+V8CGsBAjgIDZNkXDbG/5Uklu77C37htB2haGwCUyoYK78NX16+D6fB4NkXb2YWtRwNo7e/qRB3QF2AEpJNdX+Ebb2pkior+Y+mEx/bQNYdfVtyYEzc56dwvDktfSnKE7IhMMmb+IAB8zgmk0HBXXFEJQ5987OskGFKw0mCvkgNttM2Xgq5nhTpGdkQAXXMFSuSgBnCLE4jgOV7PSz90wW8PUTgBD7ZBW3ynkPZAO46SnY/XSdccz2sXi0T8mqraiWlCW3wnUHa5DVfIjmO+fsu2Zg20R50aP6aqLlxdEhT3nHVYaYtvHTuP13SN7IiLk5Z6bI9v68PDl3ybn96p+YQJM1WANrLiO4W4/HZcJXuKpR4Nd1fLHy4A39YnYjF9W++zN+acgGhxG4MA0EZx+m5AL7ZN18nODXf5SgRdc45Y6rFNvq0PcBCO+ZmkwV5NU1opYs88dF6o4Qmyu2G4S93WT4fHsiWppSNzirb4jsAsvBFPkV3f1juQAGMxinhdNq8glO2XaYRPHgAYBMaa+97vwGMYfR5HwHNkR7w2/9rW7aoKOIEcibjDNvEVWf5WvF8fl3Rrrumv3yjQQkE6bmnAWLueJLtO+LkstY5F3GGb3HinJlTAszwZ74xNIl6KSG8OL6dLe5bs84Y7B5NhcPDReFdUWq7H1gf0Bp29ecjYISWhNdPde3swiq7tabLzwTodgIPt4gOT1Q3r4MrkBEXeWZ11GKCjQQuR3iqAYuv5guy64c7hm3Mc5rKqGigsLoHLZz8JQmIMsbMrKU0D9lhMLWih1FpS4DUs1Ddk59t6Jy/ScBTReFdeWwfkojM8r9IVpCSatuCzX9lXZOfD3bhlWysD7Tv2h29cAhrvMPUVPjSJ6a/IeGccu0UlifSWobNX0ZdkxyE7HVfPYV5VXKKTHq315KKzNfkGNYAWir23haGpyr4lO47SDfcctstddPhvWuVNzbd0hYn0tiE0JsDXZHdzW49t0ypvbJIZLDWoKNBEgTkG0bJQLCvI7ua2Hl10lXX1EI/FKBDHwgRcXIUCcwSAuIyIrCE739ZrCrQ5lfYqFVMMxCkur6KzvKC5SqQXBGSKmKwiOx+Xkw9UpKqEr/KqmqCzvKi5SoE5opCErCQ7opMMwnEsKUaqRjCzbWlVDa3ywqYp6K/bUjSePUCzluwIC2azzVNmW5z2yS+22I8NXaToO3vzdL42ReNZBzKryT6/rXfwVZrFquAW+8mxYUqQYX2eLq5JgTkWsAwE2fkqn58z2+bU+/GpukC/PMbYY4IMSoNlYZYuX4VIbwLOwJDdC6s8j7GfnZmmZJcmJqmBohSYYwCkwJHd7VUe2yc3nYGZaa3IYF5ewT/WX3Pd+WhBor29rW3cmpjsrBVIsi9a5VudSmOdOoXQTVdeuwYUJYcerhDMrbz8/HO1664ZyM3NPRLNj7cS6ecADjTZ3bbYY/s8951+fXZshG7TCSR+YXFxT9WaBlByclsPP/NU4J+sDjzZ+dxK+uVxQjiWuz51XqMBD1Nh4Ws1U+ExgVOeRJVV1ZwurqgGlsv+6MiBn+L7BIH8iOyL1J5MgdXiZGZb3oXUrT1Z7cXyET0iVVetPR0qXDXMlJw/OfzMU91iW/C+NCJ7Gh25GYyTurW/MjWX/44SZYgjEh6byqrXzABoHfHZyB++818v4vNWgfiI7CuoGe/Lu3WxBrvF89/RQ5TiuchDmqfGRy6Eh4ff0Bi056jQns3JMYnsBuZR8tEKtNo7fp4nq70BBVkswoOdClYVpaYNx1duupkG7arK2rPpXTsiu4mJknyaCs/zjrw4m9o1DLvFyzWU9NKEwgwWzRDsFGYA3RpAu6JAu5+TaxDZDU6I1GJukX6ZlcjCCKhKOgT44yCZjk1zD1uybsagPZooaPdLimwiu415j0kvmaY1O50sI9U3jwY8+sQhwI9NKNFEfsEe0KDb6+d+IruAeaL76JnaDAzuEyDOkIjUyzU4KeOxqKF6VMgYAjbzC3ry3E9kN6Z7Q6XmXHaRHQyg2SljHl/lKRjHkIpMFeK/UHPy8sys8una8MS5n8huSv3GC6es9jtkB+hQamvjerFSEn+honEUf6FGZqatiFhSB8/9AOzgya4O9PI48hHZJcPs5GrPfcf4+qyoSSkZHt+I56s8dnh06IKwfisqbHDKt09kF6a2zIJ0f30CmmSe7fnrs3hnXuSkzDy6YJTID4XmswgLiWxk7FDf+x24+5P+EdmlQ7y0geRLNk0wd7YvldEFHn1Hb8zLQFesTEWBLznhvyeyi9WbaWlJn70Ugx6uQtX1VwPlvzOtFkcr4Pn9ZFfndtmNEtllI2xQPm7xNRVaRPvsyUVnUAEuF9MA7pf9yCWR3WUlL25e3+IzaBF9rrfpN/YYSlnZncG+rs71MkdGZJeJrg3ZMs713EWnJlR6l86GbiRWfbCvqxPvXkj5iOxSYBUnFF13+UoEz/TCjHk8Bnxs6AK56MSpSoSkcFQNrZcVa09kF6EiB2SkkB6t+LZv3XEX3ZXJuQQZ9HkDAXzxpr+rA3+xC/+I7MIhlS9Q5K07ctHJ15fZFmQF2hDZzWrCQ+VFkZ7f56a78h5RrqRAGyK7R/RrpxsiSI/Gu/KaOlByFLuXPuwMheomEZARaENkz6LplXyX3pYhj1x0npkQPX1dnY0ie0NkF4mmB2SJsN7jKl9dvw5isxHKbuuiTkUH2hDZXVSmzKZFkB5ddIWrS+jlWZmKWln25aga2iTKFUdkd0+RjrRsNyIP4+sr6xqAXHSOqCtNI9rJqFq4VQThiexu6dDhdu3mwEcX3VzKZUqB5bDqsLkJYOy+vvc7Dtppm8huBz0f1rWTA5+76CZHR+g9Ohd0jwE3MbWgxeoqT2R3QWleaNKqu45SYLmuvR5NVZqsPF5BZHddd+51wI4Rjz9aQfH1rugvrAE0m70SS2R3RVfealQ34uWwVtC0u8z0DOPrK+vqdRcdpcAyg5yYsmbj6InsYnDPCinJ8zy+UW/qog2/RUcpsJyfBpjlZlYN7TByjieyO68fz7eYPM9jimPD+fHQRYfhtvjM9MToiOfHmGUd7Imqoe2ZCE9kzzKtixqO1fN8RW0d5BWE4PK5T+hdeVHKMCYnI+GJ7MaADGwpnfQs0momTRZ30WV6IDGwoMob+IqEJ7LLAz6rJJs14nEXXSIWo/h6B2fCSkY7IruDisiGpsxmweUuOjLeOaf95a7HEtmd00FWtWTGcs9ddPhKDaXAkj8NlstDT2SXj31Wt2AmEo/foqP4evlTIt3qTmSXj3vWt2DGcs9ddNPhcYqvlzgz0q3uRHaJgAdN9NyLtbMtDLTvZBo7uugEvHueqZlA/3zx6k5kD/R0kDN4o3foZbx7LmdEPpW6KHElkd2nevRDt41Y7lNddBRfL16rqWmpiezi8SWJixAwYrlHF11xeSWlwBI/e+aflCKyiweXJC6DQCbLPbroymvXALroKL5e2DSafzCSyC4MUxJkBAEjlnvuoqP4eiOIZi7Dt/JE9sxYUQkJCGSy3HMX3eTYCMxMTkjoQXBEcqs8kT04OvfkSDNZ7tFFhx9G3qmJhCfH4INO6ed2IrsPNBWELq5kuUcXXXFFJeAtumgkEgQ4RI+RyC4aUZJnH4Hlst9yFx0Z7yxhTGS3BBtVcgSB5Sz36KIrKi2DsaGLEI9FHemL7xtJBtfQNt73mszuASQfq9wFACV8pNxFh/H1ZLzLrH8eJ09kz4wVlXAZgRR33QOpXUEXHRKfjHcrK4jI7vIEpubNI5B8wuphDeAeXhtddKVVNWS8WwFOIrv5uUY1PILAxsabGpmivgIA9bxL+BYdfpQcY6mSeKoq2sZ7ZAJTN8wjcP2Wbc0aaA8DQA7W5i46Mt4txJIB23Wyq6OVyG5+jlENDyGQzH77CjC4GbuFLjpc5dEfPxUe81BP3esKhcu6hz21LAGB5Cr/KBeNLrrC1SX6LbqAR9719HV1NiIutLJLmHgk0h0Ekmd5fL7qc3yVx1dqpsNjEJmZdqdTLrfKt/BEdpcVQc2LRyDdBRt00eEXwGuz4agaWs+fhaKVXfx8I4keQGDTjdt2gKbhKq+/V4f+eO6iC1Dk3XziClrZPTApqQvyEMBVvkCJHNQAbuGt4CqvJtQgGO8Go2qoMfWxR1rZ5c01kuwRBJLGuxa+ymMgDrrppsLj2Wi8G2QAAxpjrX3vdxxMVQGR3SMTkrohF4Fk9F1b6iovt0Up0nsYwLjG2DhoWrduhFSgHf+OxEPd9GSzFMxJqF8RSN6ma+YWew+MQycw9kMF1s1A0//NSZyIK+P93e/oxLb70cpuF0Gq70sE8Dwfyo00qipsTxqv9L/x0wDKDPwyCDOAtCTUYG61nf8Y61bYHInx6z3WufDnDiFIZHcIaGqGEHAbASK72xqg9gkBhxAgsjsENDVDCLiNwP8DQl5LXN7I90UAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_26", + w: 10, + h: 34, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAiCAYAAABmzUjmAAAB6UlEQVQ4T32UMXKbUBCG/11NMi51BDWWXRLkArniCLqBX5EDcIAUHIEiB+AI+AZUFkVCKG2p0RFU2p6wm1kmIJBAVDzeN7v/7v4LoffcPwShHeu/fNxXL1X/jtrD8luQ8gypnaWGA1O2+73N2vsTuFrbxcYuFl44/zr7SNuzfevAW+/RY9ZQhHJLe+cH+VtZNFIG4ECrFyyEEO/+FO4q2Op9/VXkk+BytTadrq/vIrXpJJb0U27CQ5UfR9vTVMrvuQq78x4OIpou652qzmeMQ19fB95blYzMUn7hj3hfbqN+2g5sClD1mNFUeR6tA2/9wBGwYEFaM0WTEZtqSSJr8HK1zrSmeNIUNjIlSrjWShhW/aYPd7P+X1CuQAzhiliyPtyBnWusl6AcQqnBLAhfq+IwAPvetHfzpwpic9EoaJAVxaRJLbRhYDyigY3mGSUGi2A6osHWCWLEV0HrLVgdQY82sVGNnZNAPwj681NuvAvwBCFhwAmQ7ssiHYCtcdUiEb6rambQcAv9wFkEVn6qSZ4VSFpo6B5FqMpJMw2GuzBuu+zmmPP5Dnbmzl9HxFrZqEQ4GtuXJrXtihJyBs3fym1yvgLdXi/9IIZi0f8rjMHU7suuLOKpaE1q02gv19Ke2uM9elNFtFn+Ae3qD8hey6gjAAAAAElFTkSuQmCC", + e: 1, + }, + { + id: "image_27", + w: 53, + h: 30, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADUAAAAeCAYAAACMjVaFAAAFOklEQVRYR+2YTWxUVRTH/+fNm5k3M52PMqltoZQCmmhiUoiaqETolIAWYgA3ChtbpiQmLooLd4aUvYm40sSQ4sa4Ml2JSGJloytim5CYiMq0QD+cdjqf7Xy9d825wxs6w7R9Ux8RE+9m5s2cd+753fNxz7105Ez0EkD7YNNIzM3+fnPi22ExMRaCYQyCRJ9ULWgSCmKAEaPIuR9tmq6hGjpyZpgnOGTXJEtzs1M3L7w1CkFXAAQ30JsCMAlQDEJMQlHGKTIUs8MO26HK6aXCJ6cPuk3jejsDzdg5DYErdDg62sxL9bK2QyUX/0JvTwd8Ksm59oS9OPrMU+gJqDBKxer8Tm8LnJ6W9Wy/AVJOUmQouRU426Eou4SvTuyBJ7Ctxh5yOKC6PZX00nWUVrMoreagqC64WgIS0OF0rX1nCqT0bQXMdqjXw3kMv9SNYNdeS4usl4oSsJhNQxg6nB4fXC1BcwG2BGY71C6RwMcDz1qGqicvF1ZRzKZQzKXR0r6T4ZoGsx0qOzeNq0MvghQVvrbt9SFlyXsyRA0dmfm7MjS1wLamwGyHyszG8POF0zKkcvFZkFOD21fJF84pUhyWwVgwF78Ph9vTFJjtUNn5Gfz00dvS8G9uzeHqrRkc3O7BCx0edLWoEIYhveDyBeBpbbMEmU8nZFHxt++05DHboRL3pzHy5gF8/1scC9mChPO5HPisvx0dXbuqXmJDC+llqG4NvrYdm3qPc62QTrAsg3G5X3ejth1qYeYO2rt3V43UVKX84aGniy93uL31+xIbuppchBZo3WjPqupiD/NieEJtaZByiCJDk41Ww3ao+L0ZtHV1w+lQ8vs7g/H3D/SEOv2aP7Nwl8OnxgbOFy3UJnMvsL1nU2/VCawLZjsU5ZZxbeTYtDB0GWtmYVhZmkd9F5G694cs/fyf4nRxMWgWLAtSXqv3mO1QIpPIXf/guI+tY+/wZsrGbgTFsgzI3mq2OgJYASk71nYe9kPlksvXRwZa2VDOGTY2vPd5pO7/CU8wLLsFc5ie4udKV5GyVDQecSfRdYqcPWr+Tq8MnLpSyK++63R74PX7odb2X5bCwdB1ZFNJlEtFHN+/d+7isd5O88XF21Nyf9JCYeTic9i2+7mqNxJ3fpXP5mjkTUsGABnqj1aPA7KV5oNiMV8YySwvolwqQXU6wZAuTZM6Na+MJjmK+TwMQ5cA/L1UyEt5X7AVHq/v4rXoqyGQGDHlk3dvy/DTgmHpNXegVT5zz9eoQKRnY/B37Gw6DKk/WjkWcB6bX954570eXSmdh1D6yuVCLxtcLOTl5AxqDkVxwKlp4E+GdWnaDUEYV3V1/LuvP4+JibF9EMYvpjyXYQYjUuANd6CcX5GfXJrlgtUVB5Znj1nZu9Z6sSFUvZuPnDm3TygixL8rBuSR3CAkQXxaBdSyGmOIRuEhfrjMv1d32tVkvNJJ6GWz5ZHtD8M1Kgyci5WOfd3zVv20U9QfrV5JVD1lMXYtiYmJy4MQGDOF5dlpJbv2SCGLiHm+sqR0QyH6kvrPDj4Sfv9cca2GB2HI9x9B9hQDVFeelP0wDPZ+CITzm9xlbG4aGZG1lzmPxVPVfKrk16VCZnmX299qtgzT1B+ttg/y1gnGSQjwvcTD5nBzFFOiRl9NobCuY2uSD0LyEkgMUmR4vGEuVsKWw8j67RaJU/X6HquntoYPiIkv+iDoPEAnNtQh6FM6fJbDt2Y8kVC14auPNoBLcbjSYb6IfXQ80VBr4EJA+WHJ3uSG9z8B1WwY/w/V7Ir9W/J/A97dKz1MnVK8AAAAAElFTkSuQmCC", + e: 1, + }, + { + id: "image_28", + w: 50, + h: 60, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAA8CAYAAAAkNenBAAADPElEQVRoQ92azZXTMBDHZ/y4QwdsB4QKiJMCCBWwWS9nQgUsFRDOrDehApYCEi8VsKkA6CBpwMOTvxIrsi1bI9mPXC1N9PP8R6MZGaHmR5twAR7s0Q/WdeOG8AyrFkHRagQU/0qeI8yHDlMNsg0fAOBVAYr0Bv3r+yG8fdUalCCJpBA+SxMOgN4Y/fnjEGHOQChaPQOK/wDAU8WCBwtzDrK9vQfA1zVvfZAwJRCKbmdA+F1DOoODKUAySQn9P9cAEUMGBXME2dwtAem9JkQ+TMBcoD/ft5zHPjwBoejrGMiLOlrfZbtZrzApyDYUknrREURM6x0GaRPeAMJHA4h8aq8wSHIGNyPqDQYN40OF3QtMHiPlc5WZV8TsnzgJxuZm9C1w7FoV/4bfcHJ1qb8Us5HHPMIbK9mq3MGcZvZj/WH2cqTZbmDKZ63t3RqA3rJyJMbsw0iHxtUFUPybH8Q+jOIYb8sr4ggBH3AaLG28KFVhZdEr9up/dalrLVbyzYy/maEGqS93eZTB3Jmp7qLwHSarwRlh6vpadU0IHq8kmxmPzCpBkjrFhVeYSuZ6EBexkvrWuP6vBcm8omrW8UnraMkIphEkgdmGomGn210xgewMowcShZdAsDJZYYu5nWC0QDKvcBdfdWytYfRBIpsHSiVTq5JZG8ThdnxKpQ3TCsRx4OdAWjDtQcy6ki1ivjS0EaY1SCqxTn3irhBanukG4i7jy/CVbaZOIIlX9O9STD1Rnk/4BadXC9loZ5A08Btvt3ghcmsY++i/E3mt+JmBDEhiRiC9Sgy9l6c3zMYgvUmM4BNOg5tCbRwibrjS5vgLlY3SDsbikZ4ktsNJMGL1SG6MbLeRJL/gJCgcweaR1CvJVxNtrrhNZGdHWoVXnJ3F6AdOrmdWpFXAuOi+SG0kVmmd6oT5klWW4NmHCvZAbGZ9KYcISmsgWfDbuAX7C+iN5M9GrIKkMKwdmMqmhHWQBIYn+A+A8Uw+9VrdtVTJwTBZCjnN6j5DdOIRg8x/AIIleN6y6VMqpyCpzLTq/R0QrMHz1k0AzqVVyjFpmbwAoD2Atwci0VsG8OIHgCePuos/tencIyaHq7q5/w3IP4Y8h0xOB9+lAAAAAElFTkSuQmCC", + e: 1, + }, + { + id: "image_29", + w: 16, + h: 44, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAsCAYAAABsSzi3AAAAWElEQVRIS+2WUQ2AUAwDbw6QggO04QAJSMFJ56TkBQcLn93/9nFplytJV1XtDMb2Xd39AMdgH9tnDoRBckC6QBisH5ouhEFy8NlEuhAG/+VA0tLcbWKqQL+xxDW4j9bMdwAAAABJRU5ErkJggg==", + e: 1, + }, + { + id: "image_30", + w: 6, + h: 42, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAqCAYAAACQoioFAAAA1UlEQVQ4T+2TvWrDUAyFj6Rre807FDoHMmTMK+aR0q2GDt1KIPQB/IODvfhXCjdDuY6XYDp0qEDTBzpIOoeKojia2RZBEdEn5Xl+AnAIAYC3FaCqqg/n3C4c1fd9Sk3TXJj5JQSq+n3XEJEDEd2ZmWGapjXiT+3hdbzGYsEoijAMwxwwM+I4Rtu2c+Ccg+9/8OOSv3kS/7YkSdB13fLnIuLNtgSBTX/ViT4fAGb5UNWU6ro+i8irN5wvVcU4jl9UluU7M+8fgpOuCGeWZVsi2oSjzOx6A3jmHSuVqrH1AAAAAElFTkSuQmCC", + e: 1, + }, + { + id: "image_31", + w: 20, + h: 38, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAmCAYAAADEO7urAAAA3ElEQVRIS+2WMQ6DMAxFP4GIhUN069qNkav0Kh27de3WozD2CD0FGyAcgqtEggGhChLKFEuZEn99vzhyIiJ6ALhgn3hFRFQCKPbQY+ZbEPQjOTGs67oYhgFaa/R9v1k1TVObI6V8HncpxrFSatHt6Gi+aUtumubdtm2+uc6FhCzLQh96ggxv2RMggMAwMHQgENrGAdosZZopWuuciJwV4ziGWVLKux2jSik7l30iSRIIIQ4YUl3XrTZqXJlSx7AMq6r6MPN5tcqPg8d+RVwc/+3pXZn55OJoniOEKL8CUy7M3A8ekgAAAABJRU5ErkJggg==", + e: 1, + }, + { + id: "image_32", + w: 12, + h: 42, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAqCAYAAACHgLrMAAACHElEQVRIS8WVXY6iQBSFCw1iEBQJhFnGLGASMjuapfSS+qEX0DvAxzYaQMQ//GHylV221TIz9dKZ+6Kx6tQ995x7r1aWZU+WZX0XHeF53re6rt/UUdu2v6zZbPYshEi7AL1eT/i+L1arlTxu2/bnXwFcchxHWJYl9vu9GQDQZDKRWYwyABgOh5LSbrf7NyVVG1nKsjQHUHxVVV8ICIJAFEVhlqHf7wvXdXVKtm1LkzDrcrlI3bfbrax5NBqJ0+nEb9cMtm2nqFAUhTifz0K9iJxlWUoflsvlhw9RFKV5nsuX74OsYRhK0zSnfd9Pm6YRh8NBA8AbOpxpTkMJFcgCJVXP8XgU6/VaJEkiFosFZx8qcYkX+eRiXdcSTCAGvxm3Bh07GAzMnf6PAArG6S55mbq6rq8qOY6TogT2t20rC8QoJCUwj+9N01wBSZKktMD9y/hCcHE6neqtEcdxWlXVAxVeJhs9xmO3mXZdN6UF7kFIOR6PZRZcflgzdCipCQrE5c1mIxcArxuvGZQjOzUar5k4jiUtY0AURbpKf9qtajg6ARTteZ4s+L2VbxP4AMBpCmOqUAdJ1dZmbPmuFR2GoXT6fqbpKYxTbmvGBUEgAZ+DrNCcz+e6cZ8pKe25xQJQe0qTVe0i+FM0zkIDamSiCY19oOivA0AVmuxZI0rsKmrBHyMABdPmt3nIsow/9es8dkQYhj/yPH95P3r9DdFbHktcqNZ4AAAAAElFTkSuQmCC", + e: 1, + }, + { + id: "image_33", + w: 15, + h: 40, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAoCAYAAAAhf6DEAAAA8UlEQVRIS+2VTQ6CMBCFZ0rv4sKNiQfgih5JliaSuHChZ4CEwIqUnzEPJSCCoWXBhkm6m6+deW3ncRzHJxE5kGUw842jKDoTkW/JIj3gJEmuRHR0gMNRWClFWG3UdU1YgwibsrXWvud5xMyzCvhs9obRswMcLBNskdr/YLRSVdWUDtNlQzzAZVnaw1rrBnKGcdfGGLeTcXqe5xvcKTB9zxBrE+znrWyC9SVZ95FgFBVF4fafnccQQPTtNMMAY4aNeFTbxpqOkabpXSm1n2WPvSRjzOXL6Ia+PNwQ1iMiXc9Zlj2YeWd7sog8V7RY23L7+S/3pBk1t0RC+gAAAABJRU5ErkJggg==", + e: 1, + }, + { + id: "image_34", + w: 13, + h: 44, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAsCAYAAAC+GzLvAAABP0lEQVRIS+2Wu2qFQBCGZxXviKK9KCnSpktpHjGPdMo8QoqAFpbiXXHxFkaiiecYz5IuoGDlfvrPx8wgCYLglRDyBIyX67ovJAzDCwD4jAy4rktOCOAUsXTM3zsijuMPSulD13VM7bd+yTAMH6Gmae6Cm3imacI0TZDn+SF4U5OqqiDLMmRZBuM47sK7IhDEO0mSXfBXe4IggGVZM3gtaIaiKHrr+/75OgvHcTNYVRW0bbs+nqE4jt95nn/cE4AgCkJoMbvGEwTBNwwD0jSFYRhuBOi6PtdX1/V2NLAOBK/jLG9Aq3jGtu3tYlniYPFlWbIrx5OapoGiKLvaDxsWo6CEoiiAUrq1d7Qs9+IyjwZ2iCiK81cdx2HfsDzPA6qXJMk71/K5lr+nhLn3fg7Wf4CCIMBfHPPu5v864Hne5RNJPxNBx77Q9gAAAABJRU5ErkJggg==", + e: 1, + }, + { + id: "image_35", + w: 12, + h: 42, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAqCAYAAACHgLrMAAAB7UlEQVRIS82VX26CQBDGF1n5s0DSxx7DAzQhvVGP0iP1oQfoMRr1TQVX1G1+wCgoVnxqNyGB2f12Zr5vZvCWy+W7c26mBlYYhs/W2m/Zcs69eYvF4kMplQ8BPM9TYRiq7XYr26+/AjiltVYAq6ri8z6AU1EUiZdxgOl0WodUVdU4QMfLfwLEcazKshwX0mQyUUEQwNQZ4Pt+LRKcO+fUfr9Xu92uZgf74XDA1gB838/huixLdTweldyIaNjY22w2Z+GSJMmLoqhv7i68GmNq0XpKR1GUEwJPdxE3D/a2ns4hwQJeCEny4Z2DWZap9XpNBP2kKQEOkyAJAxCVsY0uDZLn6dE61A9i+0MACaP0EL3YrbUNS1rrHPlhBfGIucN9LZ61FvYaQJZlOSXQvRldWBzkvVcaaZrmCHQZCjfjDUHbvcZDEAR5W74nEAcpOhYqt+usNBUqYZAg+aA2wFblcWMG5vBOjqPnUpqmEta4Fk2SpM/SrdkqmQ4CpC27CUsHXgFQWmiFHZiRqQ2I917Sxpha6W5P4wnhRO2ecHEc14DLxc14Xq1WfeEuQxLuOYVoeL76P0jS0tMyRS7+QuN0ePiH8hCAUKG5nbP3Q5LJ186o+wCopetO/TCfz2ee5z3dmkvGmJeiKD7Z11p//QCl/twtAL+1HQAAAABJRU5ErkJggg==", + e: 1, + }, + { + id: "image_36", + w: 15, + h: 39, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAnCAYAAADQKRIRAAAA6ElEQVRIS+2W0QmDMBCG/yiiLxJBB+gI3aCruEo36AgdxU3iAEEUURTRlJP2odQ0mtKHFvOc75L77/JfmBDiwhg7YuNSSl1ZnucZgNNGFkqp87/BjuNgmiatFNqcPc9DGIYYhmEO0DTNSxAtHAQB6OS2bRFFEcqyXA8TGMcxuq4D3aIoivXwYyeB4zgu5m6ss+u6M7y0jLDv++j73g4mxeu6toM556iqyg5OkgRSyh2+K2Cs8y7Yc6/sgi28nR9tEp1nU4bGOn/kYTQ5yPitrJdMn+aVFfzut2DM+buwECIFcNj6oQGQ3QBZjntChu/l3gAAAABJRU5ErkJggg==", + e: 1, + }, + { + id: "image_37", + w: 19, + h: 32, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAgCAYAAADwvkPPAAABIElEQVRIS+1WyY3DMAwkLVq2fykl/zyMlLFdbAPpISXtIwWkDtsFWL64GG2EzQ0oycMPExAEyNRwNBgS5qZp9qq6pjdDVb+5rusfIirfxML17efBRKQ0xpCIRBOcpomGYSBm/vo8s/lqtjCLscrrpoUvmZnGcSRV/e+APM9L51w4fMgmSRLKsoywAyQEwJxzf8yYuUQSDruuuwEFC2utB0FROP480DnW2t1FB5wOfR6eEAItgyLnbO7Q98wORLSJURpFsfCSvu8JxcLUOBRFsWnb9qlmYAopAAKAwDKA3mgGeDznVMmThV5pmnoQfMO6DuQYYy6nRriIHZXDDsGvRX+k2Ywn7TI1Yrz8+tRYrDHHf42qqtbMvIrxwL1cETn+Aj8l7LjrhQzsAAAAAElFTkSuQmCC", + e: 1, + }, + { + id: "image_38", + w: 148, + h: 9, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJQAAAAJCAYAAADUxAVJAAAAfUlEQVRYR+2YsQ3AMAgEYYQsgNgg2SArZqTsg1uLkrRpcYGU8K6N0N9fBY8xrog4CA8EXgTcfc8CEZGNzewmojM7jP//JjDnTAdUVYZQaWw9BiBUj57LUkKoMtQ9FkGoHj2XpYRQZah7LIJQPXouS7ksFO5QZR19atHqHeoBGbZFCqQSjQIAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_39", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_40", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_41", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_42", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_43", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_44", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2N88+bNhP///xswQAEjI+MFxtevXx9gYGCwhwkyMDAcJEEQm5kATJEcMXBUZ3YAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_45", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_46", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_47", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2N88+bNhP///xswQAEjI+MFxtevXx9gYGCwhwkyMDAcJEEQm5kATJEcMXBUZ3YAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_48", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_49", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_50", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_51", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_52", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_53", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_54", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_55", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_56", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2N88+bNhP///xswQAEjI+MFxtevXx9gYGCwhwkyMDAcJEEQm5kATJEcMXBUZ3YAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_57", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_58", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_59", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_60", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_61", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_62", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_63", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_64", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2N88+bNhP///xswQAEjI+MFxtevXx9gYGCwhwkyMDAcJEEQm5kATJEcMXBUZ3YAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_65", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_66", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2N88+bNhP///xswQAEjI+MFxtevXx9gYGCwhwkyMDAcJEEQm5kATJEcMXBUZ3YAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_67", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2N88+bNhP///xswQAEjI+MFxtevXx9gYGCwhwkyMDAcJEEQm5kATJEcMXBUZ3YAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_68", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_69", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_70", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_71", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_72", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_73", + w: 5, + h: 5, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAALElEQVQYV2O8f//+BEZGRgMGKPj///8FxgcPHhxgYGCwhwkyMDAcJEEQm5kA2uUbgEqWWRsAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_74", + w: 104, + h: 93, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABdCAYAAABJqyO/AAACTUlEQVR4Xu2cP4saUQAHn6soWkhOVBBPPCGFpd+/zgdIyhTBROyMoFbq+ufYIpDCxC3eC6OZ7Y7bezc7cz/Yg+Mqi8XiU5Zlr8ELZeB6ve5Ho9G0slwuv/f7/TGKTpiwWq02w+HwxUDQHwYDQcP8wjKQgeAG4HguyEBwA3A8F2QguAE4ngsyENwAHM8FGQhuAI7nggwENwDHi7Kgw+EQjsfjzUfN8zxcLpdSGhqNxs37qtVqaLVapc54tpuiBLon5Xw+h9Pp9Nfb/hTn3tnP/vl/EujZJaZ8PgOltBvhbANFkJjyCAOltBvhbANFkJjyiGiBilfp4pW6uH5/5S7zBpfyAVOeXavVQvErQHFlWRaKj4sr5htptEApRfzPZxsIXt9ABoIbgOOt1+ufg8Gg51+WQkNtt9sfvV7vzUAGghqAY7kgA8ENwPFckIHgBuB4LshAcANwPBdkILgBOJ4LMhDcABzPBRkIbgCO54IMBDcAx3NBBoIbgOO5IAPBDcDxXJCB4AbgeC7IQHADcDwXZCC4ATieCzIQ3AAczwUZCG4AjueCDAQ3AMdzQQaCG4DjuSADwQ3A8VyQgeAG4HguyEBwA3A8F2QguAE4ngsyENwAHM8FGQhuAI7nggwENwDHc0EGghuA47kgA8ENwPF2u923brf70f9ZCg213++/tNvtmYEMBDUAx3JBBoIbgOO5IAPBDcDxXJCB4AbgeC7okQI1m80xnPcp8Or1eunnyPP8a6fTmVbm8/kshPCh9Femv/HzZDLZpP82j/Ed3gGHcAaLF9EWPgAAAABJRU5ErkJggg==", + e: 1, + }, + { + id: "image_75", + w: 85, + h: 48, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFUAAAAwCAYAAABgzDazAAACEUlEQVR4Xu2asU4CQRCGZ7jlsDMWRC9cQXwBTOxs1M7SR/AxrIyP4CvY0dpRam/haxhC2OJCcXCcWROIHGcQdgYQ/u2A8O/st//s7uwdU6ElSfJERGfF73fps7W2JTmeOI6PfupxCdRXZr6U7HTbtLrdrmhIzWZzhiOgCuAFVCKCUwWcVJQAVEBVIKAgCacCqgIBBUk4FVAVCChIwqmAqkBAQRJOBVQFAgqScCqgKhBQkIRTdxHqaDSiPM8VhrY5SWutaOcL71P7/f4HM7cczPF4LNr5togNBgPRUIwxzxPBOI7vcPMvipdcVl8DKqDKEJDe/Y0xn0TUcdENh8NHOFVgnmq12lsURVcTKUAFVAECCk9T55za6/Ue0jS9IKIDF3IQBO7tlEN3nMqyTGYUG1QxxhDzbEJKH6nmoCZJsvNvpBTn1GejcgCzLDvJ8/zbhK4ZY9pRFN1P11Rr7TsRnS9rpm0pDoIgcNm1VPg+FVWxeirrmF36E9Hp5MdKpXLDzMd/jdItEw7wulsYhit3qQ61GNk+LAc+6f+zJJ2mO3On0Wi0caRa2efzf8Q5dR1HKqS/v2XhVDjV30VlCj4bVZkenAqn7ohTXYWVpunCCus/3Q1Uq9WZ2VGv/bH7+2cD1lSsqf4uwu6vw3BOFUcqBdCACqgKBBQk4VQFqD6X1GXhhGH4Uq/Xb3+9T1UYw95JfgGbFJy3cuqUuAAAAABJRU5ErkJggg==", + e: 1, + }, + { + id: "image_76", + w: 76, + h: 7, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAAAHCAYAAACiCKuEAAAAdElEQVRIS2N88+bNhP///xswDDPw798/np8/fypT01uMjIxrGV+/fn2AgYHBnpoGDwaz/v79y/Djxw+qOoWFheXgaICREKSjAUZCYIGUjgbYaIAhQoBmZdirV68MGBkZBUgM7EGv/O/fvzz//v1TobJDzwAAftZLV1+WGloAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_77", + w: 85, + h: 48, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFUAAAAwCAYAAABgzDazAAACCElEQVR4Xu2aPU7DQBCFZ2xnQ0dlkcgpIi4AEh0NlJQcgZNwBgouQEcJHSX0FFyAE0RRXEQpVnGCRihRsjHKz+7EIn7uHMdvd799+zOzZnKu4XD4zsxX7u+HdJ/nedDmZFnGi4JLN/KgDlB7vV5QqN1uF1ABNainfsUAFVAVCChIwqmAqkBAQRJOBVQFAgqScCqgKhBQkIRTAVWBgIIknAqoCgQUJOFUQFUgoCBZuVPH4zFNp1OFplUnGTrzvzZJPRgMvpj5TGBOJpPqWq5Y8mg0CqqeJMnTTLDT6dzhOCUoXiJxLaACahgCoRcqY8x3FEWPUrtWq/UApwbop2az+dFut69nUoAKqAEIKJymrji13+/fW2sviehIqhzH8TkRHct2qiiKMK2oUCVJEmJnPQ69pVqBWocvUtw+9VmoBKCrx8wvskDN59Q8zz+J6GJbM1lrt31F5f9xHMvo2krbJ6Jyo6eyglmGPxGdzh5GUXTDzCeb1lKmCYm+9n0ZY3YuUh2qW7M6TAc+w38xJJ0Pd+a3LMuesaXa2eerL2Kfuo8tFYa/v2XhVDjV30VlCj4LVZkenAqnHohTJcKy1q6NsP5TbqDRaCz1jnrsX9XqL8maTc/AXCi+/sWc6kuw5H1ABVQFAgqScCqgKhBQkIRTAVWBgIKkT5K6rDrGmNc0TW//zKcqtKF2kj+c9ZFAfACFtQAAAABJRU5ErkJggg==", + e: 1, + }, + { + id: "image_78", + w: 76, + h: 7, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAAAHCAYAAACiCKuEAAAAdElEQVRIS2N88+bNhP///xswDDPw798/np8/fypT01uMjIxrGV+/fn2AgYHBnpoGDwaz/v79y/Djxw+qOoWFheXgaICREKSjAUZCYIGUjgbYaIAhQoBmZdirV68MGBkZBUgM7EGv/O/fvzz//v1TobJDzwAAftZLV1+WGloAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_79", + w: 118, + h: 152, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHYAAACYCAYAAAAx6R3jAAAGQ0lEQVR4Xu2dW27bOhCGSTk3xwqSxwJ9iYAuoMBZQLuULuHs4LQ76BKyk6Y7KPpcQHnqoxHDytUXHowL5y5riJCcofrrLchoZvR/nqFkUrRtmua9c+7IvOKYzWZvbm5u/pnP5++KohguFou3xpjhK1z+DaeOB4PB2Dn3ezab/SyK4tdyuWwCXfiZbZrm1Fr7IZBDuPFUYDabmfPzc8+zNps7574AbFBJ/Z0BrL9mWZwBsFlg8k8SYP01y+IMgM0Ck3+SycGGvlPzveTBYGCKovA9TZ29c87s7e2Zra2tF3NLDvbi4sKMRiN1QuWWEIGjY3t7G2Bzg7cpX4DtE80H1wKwABtMgY3fPGGMDaMzKjaMjuq8AKw6JGESAtgwOqrzArDqkIRJCGDD6KjOC8CqQxImIYANo6M6LwDriYS+XLfWep6V3hxgPTS/vr42t7e3hmaACDDNnNAMisYDYJlUCORkMjFHR/cLK+lbsv39fZUVDLBMsCQUVevDKcXFYmGWy2Xr1BjTdRQzgGXKShCn0+mziqVWTK1Z2wGwHkQejrHrSsUYey9g1rM7VLkaK/Tp5xMV61GxOZkSWLprb3s0w5qnnGg+yJXAta13IjOABVi2AlmPseyrFDZExQoDiBUeYGMpK+wXYIUBxAoPsLGUFfYLsMIAYoUH2FjKCvsFWGEAscIDbCxlhf2qA0tTY314PzUWV/r+l6MPzT7t7u62ppH8K8VYgsDvYwUAtqefCIAFWLYC2MCLLVU8Q1RsPG1FPScHS7vGbJogFlUjo+B0V0zrsbC5SEbQOKlizRNHpQxtADZDaJyUAZajUoY2AJshNE7KAMtRKUMbgM0QGidlgOWolKENwGYIjZMywHJUytAGYDOExkkZYDkqZWgDsB7QaB8KevmZXk2kd2Q1T1YArAdYmnkaDoerNUc0e0J7UhwcHHh4SGcKsEyt5/P5qlrLsrw7g/6mxWVtP6jAdB3FDGCZspJQT3eN6RKP6TqKWVduySfaNe8wTq348PDw7vV/WiqLVnz/ucz2xWdqx1dXV6sroXGW1u1qbMOUHyo2SiOUdwqw8gyiZKDuFQ/NY2wUApGcAmwkYaXdAqw0gUjxATaSsNJuAVaaQKT4ABtJWGm3ACtNIFJ8gI0krLRbgJUmECk+wEYSVtqtOrA0Y6J1O/aUsGiVxmsmGNSBpa8UOQd39xSOr77aqNqIuq8ia7uu5BPt2gToaz4A21OyAAuwbAWwHRBbqniGySt2PB6z9gqMd8n98EyL22mpLHaN6QfPu6vAmqeeAV1fDsACbDAFsl1XHEyBBI5QsQlElggBsBKqJ4gJsAlElggBsBKqJ4gJsAlElggBsBKqJ4gJsAlElggBsBKqJ4gJsJ4idwnm6S6aeVeeyWd3NL9Guf4VL9oKaLFYmPUMSjQ6r3AMsEzxCOTl5eWjPSdo24KdnZ3Vnk/aDoBlEiGhnu4aQ7BpvyeNG3kBLBMstd3JZPJs1xiazKY1wNoOgPUgQmLRPQCtaSbQm37XxsNtFFOAjSKrvFOAlWcQJQOVr3iMRqMoF/s3OQXYntIGWIANpgDWPAWTst0RKjaByBIhAFZC9QQxATaByBIhAFZC9QQxATaByBIhAFZC9QQxATaByBIhVIKVEKJvMWkBAHaN6RtVxvUkX/PEyAkmARQA2AAianQBsBqpBMgJYAOIqNEFwGqkEiAngA0gokYXAKuRSoCcADaAiBpdAKxGKgFyAtgAImp0AbAaqQTICWADiKjRBcBqpBIgp2hgu3KbTqcfi6L41mW3/r9z7ntZlh+59r52dV1/ttb+53He9+Pj46D5NE1zaq394JHDl9Fo9LnN/uzs7NQYw/ZH64arqmr1R3E63zsE2Oc4ANbjI801RcUaenUUFWuMQSt+qWrQitGKVwrg5unFQQU3T11jLcZYjLHrzwjGWIyxXf3iz//xuMPTycsKrRitGK14U8ngcQePO3jcaa8QPO50DbgYYzHGYozFGNvVJx7/H487fnqxrNGK0YrRitGKWc3izgit2E8vljVaMVoxWvGmUmma5r0x5iurnP4Y/SjL8l8Pey/Tuq4/WWs/cU9yzv2oqipoPk3TkB6kC/c4KcvypM24ruuv1lq2P+fcSVVVrf4ozv/hRdyYpZNOYAAAAABJRU5ErkJggg==", + e: 1, + }, + { + id: "image_80", + w: 40, + h: 25, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAZCAYAAABD2GxlAAABRUlEQVRYR+2W4VHDMAyF9bIAZQNpAtiAMAFsQDYAJqBsUCYgG9ANoBuwgewN6ATinEtyrqHX65XW5i7+6ch53z3ZkkBblqreVlXVmNlsW8yx982sRSqiqgygJaKrYwPs+r+ZPW8AquolgA8iOtt1+BTfNwBVddbDXSTiq2A1EblTQCUabnRQVRcA7qOAtZk1IrLMADZKdoD9vdMErhaRz5xwQbsD9N63ZnY3wJjZo4gscsONgM65r+hheGbmEuA6wFDvALxF7r2IyENJgHMATxHgtYiEUlPEgvd+aWY3EeC5iISUF7HgnAtujV2DmX90l5ykKeCambP13t+MSAFXzFzndCzVngAPzUZ4xXEXKS/FqhrXwQlw35SHVjc5uK9rcfy/cLAB8NpTFzVqDeNWDeB9sLW4XhzGfSJqBkARmR9yZ/767DcBkaUOn9u9agAAAABJRU5ErkJggg==", + e: 1, + }, + { + id: "image_81", + w: 44, + h: 4, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAECAYAAAD1e91aAAAAb0lEQVQoU83Q0QmAMAwE0F4ncAPJJo7SDXSEjqAbOIqbHG7gBicRhNoPP0vzdyRwjyBUQ3KKMS6ShnrXOkvKZnaUvXgDSQdmAHNr2F+fpM1dZnb53QP2rwLYQwhjT9jCckpK/m2QTABSp9APS9J6AyQoI/Lp40UAAAAAAElFTkSuQmCC", + e: 1, + }, + { + id: "image_82", + w: 32, + h: 19, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAATCAYAAADxlA/3AAABE0lEQVRIS82WfVHDQBDF3zsD1EFyDkABwQEoIA7AAcEBEooDJFRCUbCJgyrIYzZzMNNSplfmMmn+vb33fvuRbIiZHzOrAdyHEBpJK5L9OI7rGOPGrTmXvxuHEDpJj8c8SL5XVdUWBzCzFYBnki+nkpN0UxTAzFqSHYDqlLmfS7rbA0j9cpEmBXifegDbGOP2UDRl67ENyRbAVY7xd8wegJl1GWX7BLBLAtfnGh7C/QBkmp+TXFbsBOBlJ2lZNwoH1XVNB3gj+VRYO0tuAuj73gftNutG4aDFASTFRSswDeGSLbgMgGEY1n8tjMIz90tO0oO/hjlfwFlYJL1eBIAvkg9fOLOkeUQ0/ZT4ktsUXcf/SeAL2jGLrcOfEs0AAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_83", + w: 37, + h: 34, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACUAAAAiCAYAAADYmxC7AAAA+0lEQVRYR+2SwY3CQAxFbd+iySUVLNvBdkC2EugASqADoAO2EugA0QHbAVLGOfgQrxJpVogD+AIZIec0mfkav3k2ws3HzCtVrW/3n/WPiAcR2VRVdUk18LoYM+8AYPYsgDv3nkSkTmD/UG3bLlV1PQLQUFJVt2VZLvv1ABVj/ELE41hAqS4RfRZFcU5QB0Scjg0FAD8hhDk2TVMT0T4DoB7hN4QwwRjjBhEXmUCBiFQ9VC6tG7x0XfeNzHwGgI9cTCUozQXo2pRDPeqKt++RoXTuptyU1YA15zPlpqwGrDmfKTdlNWDN+Uy5KasBa85n6i1MrayveEWOiHZ/dUfyj8QHeXoAAAAASUVORK5CYII=", + e: 1, + }, + { + id: "image_84", + w: 77, + h: 99, + u: "", + p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE0AAABjCAYAAADer432AAACyElEQVR4Xu3dUY7SQBzH8ZmhLCYDiZxAvIGJB1APYMIN9AjewPUEegSOsr77oCdQb4AJBUPLjJlmIUCy2e2vbeySL29s+5v++fS33YcFas3ZY7PZzGKM8xDC/HzbY3seQnjinPurzG2t/RVCWEwmk5vzvD3+QZ7n18aYj8pB+pYpy9LEGM1wOGw0Wozxa1EU8+l0utwvdEDL83xhjHnX6Ag9ChdFUU3TFO32Jf2JMb4ej8ff0/MK7ZIatj9vLaOlZX94719UaOkaFkL42aOStDJKB2hprk/e+2u7Xq8/xBg/tzJpjxbpCO23935mV6vVjbX2VY9ebyujdIRmnHPPQat5ikIIb+xyufxmjHmZsunPdAih5jL93H2321WDDQaDxgNmWZYaVq3jnHt70rR9pRsfpQcL7AtwdXXVeJoEtsevmnbJ17Ttdmu8943RjhcATeAEDbRTgXR95tezZitAqwmWdgcNNEFAiNA00AQBIULTQBMEhAhNA00QECI0DTRBQIjQNNAEASFC00ATBIQITQNNEBAiNA00QUCI0DTQBAEhQtNAEwSECE0T0PI8r1K8l6MGHmg1sPa7ggaaICBEaFoP0b4YY6oPFTyGh7V2Zox5dt+snTbtvoP3bftDP10D2tGZA02oMWigCQJChKaBJggIEZoGmiAgRGgaaIKAEKFpoAkCQoSmgSYICBGaBpogIEQe2rRO/+8pzP1fI6AJ/KCBJggIEZoGmiAgRGgaaIKAEKFpoAkCQoSmgSYICBGaBpogIERoGmiCgBChaaAJAkKEpoEmCAgRmgaaICBEaBpogoAQoWmgCQJCpDdNu8Rviu/8bQmXipZuSDEajYQ+3x2pviU+bb5UtPTaWrpv1EERNKGDoIF2KtDVLZBoGk2jaUIHQGuM1tb9Pc8HOb6mvb/9FoLGw/ZpgbIsn2ZZdriZaRuzOecW/wCP+6yWxKEr0gAAAABJRU5ErkJggg==", + e: 1, + }, + { + id: "comp_0", + layers: [ + { + ddd: 0, + ind: 1, + ty: 2, + nm: "пол", + refId: "image_0", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [249.49, 470.412, 0], ix: 2 }, + a: { a: 0, k: [221.747, 0.511, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [0, 100, 100], + }, + { t: 8, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 0, + op: 375, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 2, + ty: 0, + nm: "часы", + refId: "comp_1", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [103.798, 83.659, 0], ix: 2 }, + a: { a: 0, k: [103.798, 83.659, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + w: 500, + h: 500, + ip: 24, + op: 399, + st: 24, + bm: 0, + }, + { + ddd: 0, + ind: 3, + ty: 0, + nm: "цветок на полу", + refId: "comp_2", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [401.51, 402, 0], ix: 2 }, + a: { a: 0, k: [401.51, 402, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + w: 500, + h: 500, + ip: 20, + op: 395, + st: 20, + bm: 0, + }, + { + ddd: 0, + ind: 4, + ty: 0, + nm: "человек, стол, кресло", + refId: "comp_3", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [250, 250, 0], ix: 2 }, + a: { a: 0, k: [250, 250, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + w: 500, + h: 500, + ip: 31, + op: 406, + st: 31, + bm: 0, + }, + { + ddd: 0, + ind: 5, + ty: 0, + nm: "книжная полка", + refId: "comp_7", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [370.196, 89.518, 0], ix: 2 }, + a: { a: 0, k: [370.196, 89.518, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + w: 500, + h: 500, + ip: 9, + op: 384, + st: 9, + bm: 0, + }, + { + ddd: 0, + ind: 6, + ty: 0, + nm: "календарь", + refId: "comp_8", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [219.337, 135.95, 0], ix: 2 }, + a: { a: 0, k: [219.337, 135.95, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + w: 500, + h: 500, + ip: 17, + op: 392, + st: 17, + bm: 0, + }, + { + ddd: 0, + ind: 7, + ty: 0, + nm: "документы на полу", + refId: "comp_9", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [61.854, 417.895, 0], ix: 2 }, + a: { a: 0, k: [61.854, 417.895, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + w: 500, + h: 500, + ip: 65, + op: 440, + st: 65, + bm: 0, + }, + { + ddd: 0, + ind: 8, + ty: 0, + nm: "тумбочка и кофемашинка", + refId: "comp_10", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [434, 346, 0], ix: 2 }, + a: { a: 0, k: [434, 346, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + w: 500, + h: 500, + ip: 5, + op: 380, + st: 5, + bm: 0, + }, + ], + }, + { + id: "comp_1", + layers: [ + { + ddd: 0, + ind: 1, + ty: 2, + nm: "Слой 17", + refId: "image_1", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [103.798, 83.659, 0], ix: 2 }, + a: { a: 0, k: [13.603, 20.548, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 10, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 21, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 27, + s: [95, 95, 100], + }, + { t: 30, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 10, + op: 385, + st: 10, + bm: 0, + }, + { + ddd: 0, + ind: 2, + ty: 2, + nm: "Слой 18", + refId: "image_2", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [103.465, 83.272, 0], ix: 2 }, + a: { a: 0, k: [39.37, 39.369, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 4, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 15, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 21, + s: [95, 95, 100], + }, + { t: 24, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 4, + op: 379, + st: 4, + bm: 0, + }, + { + ddd: 0, + ind: 3, + ty: 2, + nm: "Слой 20", + refId: "image_3", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [103.616, 83.476, 0], ix: 2 }, + a: { a: 0, k: [40.317, 40.317, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 11, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 17, + s: [95, 95, 100], + }, + { t: 20, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 0, + op: 375, + st: 0, + bm: 0, + }, + ], + }, + { + id: "comp_2", + layers: [ + { + ddd: 0, + ind: 1, + ty: 2, + nm: "Слой 105", + refId: "image_4", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [407.745, 451.741, 0], ix: 2 }, + a: { a: 0, k: [17, 5, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 11, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 17, + s: [95, 95, 100], + }, + { t: 20, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 0, + op: 375, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 2, + ty: 2, + nm: "Слой 106", + refId: "image_5", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [407.987, 447.731, 0], ix: 2 }, + a: { a: 0, k: [19, 11, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 3, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 14, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 20, + s: [95, 95, 100], + }, + { t: 23, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 3, + op: 378, + st: 3, + bm: 0, + }, + { + ddd: 0, + ind: 3, + ty: 2, + nm: "Слой 107", + refId: "image_6", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [407.987, 471.731, 0], ix: 2 }, + a: { a: 0, k: [19, 35, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 6, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 17, + s: [101, 101, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 23, + s: [95, 95, 100], + }, + { t: 26, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 6, + op: 381, + st: 6, + bm: 0, + }, + { + ddd: 0, + ind: 4, + ty: 2, + nm: "Слой 21", + refId: "image_7", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 9, + s: [15], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 21.857, + s: [-23], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 22, + s: [-15], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 32, + s: [5], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 41, + s: [-5], + }, + { t: 49, s: [0] }, + ], + ix: 10, + }, + p: { a: 0, k: [409.002, 440.08, 0], ix: 2 }, + a: { a: 0, k: [1.219, 55.611, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 9, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 20, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 26, + s: [95, 95, 100], + }, + { t: 29, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 9, + op: 384, + st: 9, + bm: 0, + }, + { + ddd: 0, + ind: 5, + ty: 2, + nm: "Слой 22", + refId: "image_8", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 6, + s: [15], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 18.857, + s: [-23], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 19, + s: [-15], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 29, + s: [5], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 38, + s: [-5], + }, + { t: 46, s: [0] }, + ], + ix: 10, + }, + p: { a: 0, k: [409.598, 440.638, 0], ix: 2 }, + a: { a: 0, k: [8.088, 101.776, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 6, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 17, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 23, + s: [95, 95, 100], + }, + { t: 26, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 6, + op: 381, + st: 6, + bm: 0, + }, + { + ddd: 0, + ind: 6, + ty: 2, + nm: "Слой 23", + refId: "image_9", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 15, + s: [15], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 27.857, + s: [-23], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 28, + s: [-15], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 38, + s: [5], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 47, + s: [-5], + }, + { t: 55, s: [0] }, + ], + ix: 10, + }, + p: { a: 0, k: [408.005, 440.368, 0], ix: 2 }, + a: { a: 0, k: [33.302, 113.984, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 15, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 26, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 32, + s: [95, 95, 100], + }, + { t: 35, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 15, + op: 390, + st: 15, + bm: 0, + }, + { + ddd: 0, + ind: 7, + ty: 2, + nm: "Слой 24", + refId: "image_10", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 12, + s: [15], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 24.857, + s: [-23], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 25, + s: [-15], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 35, + s: [5], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 44, + s: [-5], + }, + { t: 52, s: [0] }, + ], + ix: 10, + }, + p: { a: 0, k: [405.903, 440.783, 0], ix: 2 }, + a: { a: 0, k: [68.473, 31.762, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 12, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 23, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 29, + s: [95, 95, 100], + }, + { t: 32, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 12, + op: 387, + st: 12, + bm: 0, + }, + { + ddd: 0, + ind: 8, + ty: 2, + nm: "Слой 25", + refId: "image_11", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 18, + s: [15], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 31, + s: [-15], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 41, + s: [5], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 50, + s: [-5], + }, + { t: 58, s: [0] }, + ], + ix: 10, + }, + p: { a: 0, k: [407.553, 441.083, 0], ix: 2 }, + a: { a: 0, k: [57.255, 81.75, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 18, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 29, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 35, + s: [95, 95, 100], + }, + { t: 38, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 18, + op: 393, + st: 18, + bm: 0, + }, + ], + }, + { + id: "comp_3", + layers: [ + { + ddd: 0, + ind: 1, + ty: 0, + nm: "кактус", + refId: "comp_4", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [115.969, 263.652, 0], ix: 2 }, + a: { a: 0, k: [115.969, 263.652, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + w: 500, + h: 500, + ip: 15, + op: 390, + st: 15, + bm: 0, + }, + { + ddd: 0, + ind: 2, + ty: 2, + nm: "документы на столе", + refId: "image_15", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.675, y: 1 }, + o: { x: 0.879, y: 0 }, + t: 10, + s: [72.646, 227.15, 0], + to: [16, 4.667, 0], + ti: [2, -9.167, 0], + }, + { t: 18, s: [87.646, 267.15, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [38.577, 21.613, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 10, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 17, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 22.333, + s: [95, 95, 100], + }, + { t: 25, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 10, + op: 385, + st: 10, + bm: 0, + }, + { + ddd: 0, + ind: 3, + ty: 2, + nm: "ноутбку", + refId: "image_16", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [211.425, 290.801, 0], ix: 2 }, + a: { a: 0, k: [54.5, 47, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 20, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 28, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 34, + s: [95, 95, 100], + }, + { t: 37, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 20, + op: 395, + st: 20, + bm: 0, + }, + { + ddd: 0, + ind: 5, + ty: 0, + nm: "стол", + refId: "comp_5", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [219.797, 470.367, 0], ix: 2 }, + a: { a: 0, k: [219.797, 470.367, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 7, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 12.333, + s: [95, 95, 100], + }, + { t: 15, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + w: 500, + h: 500, + ip: 0, + op: 375, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 6, + ty: 0, + nm: "кресло", + refId: "comp_6", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 24, + s: [32], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 37, + s: [-8], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 43, + s: [3], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 48, + s: [0], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 51, + s: [0], + }, + { + i: { x: [0.567], y: [0.694] }, + o: { x: [0.177], y: [0] }, + t: 57, + s: [5], + }, + { + i: { x: [0.84], y: [1] }, + o: { x: [0.391], y: [-1.153] }, + t: 63, + s: [0], + }, + { t: 68, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 24, + s: [347.97, 326.962, 0], + to: [-16.333, 5.5, 0], + ti: [7.833, -17.75, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.167, y: 0 }, + t: 37, + s: [316.97, 359.962, 0], + to: [1.225, 15.065, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 0.667 }, + o: { x: 0.167, y: 0.167 }, + t: 43, + s: [330.97, 369.962, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.593, y: 0.522 }, + o: { x: 0.175, y: 0 }, + t: 58, + s: [330.97, 369.962, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.698, y: 1 }, + o: { x: 0.351, y: 0.33 }, + t: 64, + s: [330.97, 381.037, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.959, y: 0 }, + o: { x: 0.197, y: 0 }, + t: 67, + s: [330.97, 387.962, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.659, y: 0.476 }, + o: { x: 0.319, y: 0.279 }, + t: 70, + s: [330.97, 388.293, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.7, y: 1 }, + o: { x: 0.35, y: 0.414 }, + t: 72, + s: [330.97, 382.084, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { t: 75, s: [330.97, 369.962, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [330.97, 370.962, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 24, + s: [0, 0, 100], + }, + { + i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, + o: { x: [0.167, 0.167, 0.167], y: [0, 0, 0] }, + t: 33, + s: [100, 100, 100], + }, + { + i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, + o: { x: [0.167, 0.163, 0.167], y: [0, -0.267, 0] }, + t: 58, + s: [100, 100, 100], + }, + { + i: { x: [0.833, 0.833, 0.833], y: [1, 1, 1] }, + o: { x: [0.167, 0.549, 0.167], y: [0, -0.635, 0] }, + t: 67, + s: [100, 85, 100], + }, + { t: 75, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + w: 500, + h: 500, + ip: 23, + op: 398, + st: 23, + bm: 0, + }, + { + ddd: 0, + ind: 7, + ty: 2, + nm: "голова", + parent: 8, + refId: "image_23", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [0.383] }, + o: { x: [0.333], y: [0] }, + t: 50, + s: [-8], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [0.333], y: [1.146] }, + t: 75, + s: [-2.816], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 136, + s: [4], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 180, + s: [-3], + }, + { t: 228, s: [3] }, + ], + ix: 10, + }, + p: { a: 0, k: [92.325, 47.429, 0], ix: 2 }, + a: { a: 0, k: [16.911, 76.919, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + ip: 17, + op: 392, + st: 17, + bm: 0, + }, + { + ddd: 0, + ind: 8, + ty: 2, + nm: "туловище", + refId: "image_24", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 53, + s: [8], + }, + { t: 63, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 50, + s: [284.271, 302.787, 0], + to: [0, 7, 0], + ti: [0, -11.333, 0], + }, + { + i: { x: 0.667, y: 0.614 }, + o: { x: 0.333, y: 0 }, + t: 58, + s: [284.271, 344.787, 0], + to: [0, 7.707, 0], + ti: [0, -5.136, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0.453 }, + t: 64, + s: [284.271, 363.724, 0], + to: [0, 2.416, 0], + ti: [0, -0.107, 0], + }, + { + i: { x: 0.667, y: 0.062 }, + o: { x: 0.333, y: 0 }, + t: 67, + s: [284.271, 371.787, 0], + to: [0, 0.163, 0], + ti: [0, 5.395, 0], + }, + { + i: { x: 0.667, y: 0.409 }, + o: { x: 0.333, y: 0.38 }, + t: 70, + s: [284.271, 369.776, 0], + to: [0, -2.447, 0], + ti: [0, 4.217, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0.383 }, + t: 72, + s: [284.271, 362.841, 0], + to: [0, -5.495, 0], + ti: [0, 1.156, 0], + }, + { t: 75, s: [284.271, 346.787, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [33.596, 152.675, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 47, + s: [0, 0, 100], + }, + { t: 50, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 17, + op: 392, + st: 17, + bm: 0, + }, + { + ddd: 0, + ind: 9, + ty: 2, + nm: "ноги", + parent: 8, + refId: "image_25", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [-2.292] }, + o: { x: [0.333], y: [0] }, + t: 60, + s: [10], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0.412] }, + t: 72, + s: [8], + }, + { t: 78, s: [0] }, + ], + ix: 10, + }, + p: { a: 0, k: [29.376, 148.505, 0], ix: 2 }, + a: { a: 0, k: [238.11, 167.965, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + ip: 17, + op: 392, + st: 17, + bm: 0, + }, + { + ddd: 0, + ind: 10, + ty: 2, + nm: "пар", + parent: 11, + refId: "image_26", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 77, + s: [13.666, 0, 0], + to: [-0.5, 0, 0], + ti: [1, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 136, + s: [10.666, 0, 0], + to: [-1, 0, 0], + ti: [-0.167, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 194, + s: [7.666, 0, 0], + to: [0.167, 0, 0], + ti: [-0.833, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 246, + s: [11.666, 0, 0], + to: [0.833, 0, 0], + ti: [-0.167, 0, 0], + }, + { t: 295, s: [12.666, 0, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [5, 34, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 77, + s: [100, 100, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 136, + s: [-1.961, 29, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 193.495, + s: [-100, 100, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 246, + s: [4.545, 28, 100], + }, + { t: 294, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 17, + op: 392, + st: 17, + bm: 0, + }, + { + ddd: 0, + ind: 11, + ty: 2, + nm: "рука с чашкой", + parent: 12, + refId: "image_27", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 77, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 137, + s: [-14], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 194, + s: [2], + }, + { + i: { x: [0.627], y: [11.036] }, + o: { x: [0.333], y: [0] }, + t: 260, + s: [-14], + }, + { t: 327, s: [-12.472] }, + ], + ix: 10, + }, + p: { a: 0, k: [4.63, 6.919, 0], ix: 2 }, + a: { a: 0, k: [43.523, 19.106, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + ip: 17, + op: 392, + st: 17, + bm: 0, + }, + { + ddd: 0, + ind: 12, + ty: 2, + nm: "основная часть руки", + parent: 8, + refId: "image_28", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 52, + s: [-13], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 77, + s: [0], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 137, + s: [10], + }, + { + i: { x: [0.667], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 194, + s: [-3], + }, + { + i: { x: [0.627], y: [-1.823] }, + o: { x: [0.333], y: [0] }, + t: 260, + s: [10], + }, + { t: 327, s: [14.381] }, + ], + ix: 10, + }, + p: { a: 0, k: [37.255, 91.128, 0], ix: 2 }, + a: { a: 0, k: [41.481, 49.503, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + ip: 17, + op: 392, + st: 17, + bm: 0, + }, + ], + }, + { + id: "comp_4", + layers: [ + { + ddd: 0, + ind: 1, + ty: 2, + nm: "Слой 29", + refId: "image_12", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [116.097, 261.837, 0], ix: 2 }, + a: { a: 0, k: [16, 32, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 8, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 16, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 22, + s: [95, 95, 100], + }, + { t: 25, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 8, + op: 383, + st: 8, + bm: 0, + }, + { + ddd: 0, + ind: 2, + ty: 2, + nm: "Слой 103", + refId: "image_13", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [115.529, 267.628, 0], ix: 2 }, + a: { a: 0, k: [17.5, 7, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 5, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 13, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 19, + s: [95, 95, 100], + }, + { t: 22, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 5, + op: 380, + st: 5, + bm: 0, + }, + { + ddd: 0, + ind: 3, + ty: 2, + nm: "Слой 104", + refId: "image_14", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [115.969, 290.39, 0], ix: 2 }, + a: { a: 0, k: [15.5, 25, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 8, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 14, + s: [95, 95, 100], + }, + { t: 17, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 0, + op: 375, + st: 0, + bm: 0, + }, + ], + }, + { + id: "comp_5", + layers: [ + { + ddd: 0, + ind: 1, + ty: 2, + nm: "Слой 28", + refId: "image_17", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [223.437, 386.397, 0], ix: 2 }, + a: { a: 0, k: [153.436, 84.265, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + ip: 0, + op: 375, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 2, + ty: 2, + nm: "Слой 31", + refId: "image_18", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [219.93, 296.491, 0], ix: 2 }, + a: { a: 0, k: [172.132, 7.241, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + ip: 0, + op: 375, + st: 0, + bm: 0, + }, + ], + }, + { + id: "comp_6", + layers: [ + { + ddd: 0, + ind: 1, + ty: 2, + nm: "Слой 33", + refId: "image_19", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [281.542, 420.339, 0], ix: 2 }, + a: { a: 0, k: [61.745, 49.972, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + ip: 0, + op: 375, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 2, + ty: 2, + nm: "Слой 34", + refId: "image_20", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [303.423, 343.441, 0], ix: 2 }, + a: { a: 0, k: [51.18, 24.406, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + ip: 0, + op: 375, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 3, + ty: 2, + nm: "Слой 35", + refId: "image_21", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [352.014, 310.621, 0], ix: 2 }, + a: { a: 0, k: [44.107, 61.183, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + ip: 0, + op: 375, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 4, + ty: 2, + nm: "Слой 36", + refId: "image_22", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [272.127, 359.414, 0], ix: 2 }, + a: { a: 0, k: [58.158, 11.452, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + ip: 0, + op: 375, + st: 0, + bm: 0, + }, + ], + }, + { + id: "comp_7", + layers: [ + { + ddd: 0, + ind: 1, + ty: 2, + nm: "Слой 38", + refId: "image_29", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 20, + s: [313.714, 80.995, 0], + to: [2.5, 5.25, 0], + ti: [-2.5, -4.5, 0], + }, + { t: 33, s: [313.714, 110.995, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [8, 44, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 20, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 31, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 37, + s: [95, 95, 100], + }, + { t: 40, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 20, + op: 395, + st: 20, + bm: 0, + }, + { + ddd: 0, + ind: 2, + ty: 2, + nm: "Слой 43", + refId: "image_30", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 36, + s: [323.84, 60.23, 0], + to: [-2.5, 5.75, 0], + ti: [-2, -5.5, 0], + }, + { t: 49, s: [323.84, 90.23, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [2.975, 20.652, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 36, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 47, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 53, + s: [95, 95, 100], + }, + { t: 56, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 36, + op: 411, + st: 36, + bm: 0, + }, + { + ddd: 0, + ind: 3, + ty: 2, + nm: "Слой 44", + refId: "image_31", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 28, + s: [336.035, 80.977, 0], + to: [3.5, 4.25, 0], + ti: [2, -4.75, 0], + }, + { t: 41, s: [336.035, 110.977, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [10, 38, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 28, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 39, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 45, + s: [95, 95, 100], + }, + { t: 48, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 28, + op: 403, + st: 28, + bm: 0, + }, + { + ddd: 0, + ind: 4, + ty: 2, + nm: "Слой 45", + refId: "image_32", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 12, + s: [351.292, 81.316, 0], + to: [3.25, 5.5, 0], + ti: [3.25, -5, 0], + }, + { t: 25, s: [351.292, 111.316, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [6, 42, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 12, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 23, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 29, + s: [95, 95, 100], + }, + { t: 32, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 12, + op: 387, + st: 12, + bm: 0, + }, + { + ddd: 0, + ind: 5, + ty: 2, + nm: "Слой 46", + refId: "image_33", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 24, + s: [363.552, 81.698, 0], + to: [-2.75, 3.75, 0], + ti: [2.75, -5, 0], + }, + { t: 37, s: [363.552, 111.698, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [7.5, 40, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 24, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 35, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 41, + s: [95, 95, 100], + }, + { t: 44, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 24, + op: 399, + st: 24, + bm: 0, + }, + { + ddd: 0, + ind: 6, + ty: 2, + nm: "Слой 47", + refId: "image_34", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 8, + s: [376.696, 81.518, 0], + to: [-3.25, 3, 0], + ti: [3.25, -4, 0], + }, + { t: 21, s: [376.696, 111.518, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [6.5, 44, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 8, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 19, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 25, + s: [95, 95, 100], + }, + { t: 28, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 8, + op: 383, + st: 8, + bm: 0, + }, + { + ddd: 0, + ind: 7, + ty: 2, + nm: "Слой 48", + refId: "image_35", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 32, + s: [387.783, 81.054, 0], + to: [-3.75, 4, 0], + ti: [-2.75, -4, 0], + }, + { t: 45, s: [387.783, 111.054, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [6, 42, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 32, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 43, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 49, + s: [95, 95, 100], + }, + { t: 52, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 32, + op: 407, + st: 32, + bm: 0, + }, + { + ddd: 0, + ind: 8, + ty: 2, + nm: "Слой 49", + refId: "image_36", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 16, + s: [400.185, 80.698, 0], + to: [-3.75, 4.75, 0], + ti: [2.25, -4.5, 0], + }, + { t: 29, s: [400.185, 110.698, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [7.5, 39, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 16, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 27, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 33, + s: [95, 95, 100], + }, + { t: 36, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 16, + op: 391, + st: 16, + bm: 0, + }, + { + ddd: 0, + ind: 9, + ty: 2, + nm: "Слой 50", + refId: "image_37", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 4, + s: [415.835, 80.895, 0], + to: [5.75, 4.75, 0], + ti: [5.75, -5.5, 0], + }, + { t: 17, s: [415.835, 110.895, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [9.5, 32, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 4, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 15, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 21, + s: [95, 95, 100], + }, + { t: 24, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 4, + op: 379, + st: 4, + bm: 0, + }, + { + ddd: 0, + ind: 10, + ty: 2, + nm: "Слой 52", + refId: "image_38", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [366.031, 114.076, 0], ix: 2 }, + a: { a: 0, k: [73.573, 4.436, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 11, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 17, + s: [95, 95, 100], + }, + { t: 20, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 0, + op: 375, + st: 0, + bm: 0, + }, + ], + }, + { + id: "comp_8", + layers: [ + { + ddd: 0, + ind: 1, + ty: 2, + nm: "Слой 54", + refId: "image_39", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [248.815, 163.37, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 35, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 46, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 52, + s: [95, 95, 100], + }, + { t: 55, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 35, + op: 410, + st: 35, + bm: 0, + }, + { + ddd: 0, + ind: 2, + ty: 2, + nm: "Слой 55", + refId: "image_40", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [238.428, 163.174, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 34, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 45, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 51, + s: [95, 95, 100], + }, + { t: 54, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 34, + op: 409, + st: 34, + bm: 0, + }, + { + ddd: 0, + ind: 3, + ty: 2, + nm: "Слой 56", + refId: "image_41", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [227.65, 163.37, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 33, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 44, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 50, + s: [95, 95, 100], + }, + { t: 53, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 33, + op: 408, + st: 33, + bm: 0, + }, + { + ddd: 0, + ind: 4, + ty: 2, + nm: "Слой 57", + refId: "image_42", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [217.068, 163.37, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 32, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 43, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 49, + s: [95, 95, 100], + }, + { t: 52, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 32, + op: 407, + st: 32, + bm: 0, + }, + { + ddd: 0, + ind: 5, + ty: 2, + nm: "Слой 58", + refId: "image_43", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [206.485, 163.37, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 31, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 42, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 48, + s: [95, 95, 100], + }, + { t: 51, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 31, + op: 406, + st: 31, + bm: 0, + }, + { + ddd: 0, + ind: 6, + ty: 2, + nm: "Слой 59", + refId: "image_44", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [195.903, 163.37, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 30, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 41, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 47, + s: [95, 95, 100], + }, + { t: 50, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 30, + op: 405, + st: 30, + bm: 0, + }, + { + ddd: 0, + ind: 7, + ty: 2, + nm: "Слой 60", + refId: "image_45", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [185.32, 163.37, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 29, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 40, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 46, + s: [95, 95, 100], + }, + { t: 49, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 29, + op: 404, + st: 29, + bm: 0, + }, + { + ddd: 0, + ind: 8, + ty: 2, + nm: "Слой 61", + refId: "image_46", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [248.815, 154.229, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 28, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 39, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 45, + s: [95, 95, 100], + }, + { t: 48, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 28, + op: 403, + st: 28, + bm: 0, + }, + { + ddd: 0, + ind: 9, + ty: 2, + nm: "Слой 62", + refId: "image_47", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [238.232, 154.229, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 27, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 38, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 44, + s: [95, 95, 100], + }, + { t: 47, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 27, + op: 402, + st: 27, + bm: 0, + }, + { + ddd: 0, + ind: 10, + ty: 2, + nm: "Слой 63", + refId: "image_48", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [227.65, 154.229, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 26, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 37, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 43, + s: [95, 95, 100], + }, + { t: 46, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 26, + op: 401, + st: 26, + bm: 0, + }, + { + ddd: 0, + ind: 11, + ty: 2, + nm: "Слой 64", + refId: "image_49", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [217.263, 154.034, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 25, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 36, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 42, + s: [95, 95, 100], + }, + { t: 45, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 25, + op: 400, + st: 25, + bm: 0, + }, + { + ddd: 0, + ind: 12, + ty: 2, + nm: "Слой 65", + refId: "image_50", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [206.485, 154.229, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 24, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 35, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 41, + s: [95, 95, 100], + }, + { t: 44, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 24, + op: 399, + st: 24, + bm: 0, + }, + { + ddd: 0, + ind: 13, + ty: 2, + nm: "Слой 66", + refId: "image_51", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [195.903, 154.229, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 23, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 34, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 40, + s: [95, 95, 100], + }, + { t: 43, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 23, + op: 398, + st: 23, + bm: 0, + }, + { + ddd: 0, + ind: 14, + ty: 2, + nm: "Слой 67", + refId: "image_52", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [185.32, 154.229, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 22, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 33, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 39, + s: [95, 95, 100], + }, + { t: 42, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 22, + op: 397, + st: 22, + bm: 0, + }, + { + ddd: 0, + ind: 15, + ty: 2, + nm: "Слой 68", + refId: "image_53", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [248.815, 145.09, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 21, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 32, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 38, + s: [95, 95, 100], + }, + { t: 41, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 21, + op: 396, + st: 21, + bm: 0, + }, + { + ddd: 0, + ind: 16, + ty: 2, + nm: "Слой 69", + refId: "image_54", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [238.232, 145.09, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 20, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 31, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 37, + s: [95, 95, 100], + }, + { t: 40, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 20, + op: 395, + st: 20, + bm: 0, + }, + { + ddd: 0, + ind: 17, + ty: 2, + nm: "Слой 70", + refId: "image_55", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [227.65, 145.09, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 19, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 30, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 36, + s: [95, 95, 100], + }, + { t: 39, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 19, + op: 394, + st: 19, + bm: 0, + }, + { + ddd: 0, + ind: 18, + ty: 2, + nm: "Слой 71", + refId: "image_56", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [217.068, 145.09, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 18, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 29, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 35, + s: [95, 95, 100], + }, + { t: 38, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 18, + op: 393, + st: 18, + bm: 0, + }, + { + ddd: 0, + ind: 19, + ty: 2, + nm: "Слой 72", + refId: "image_57", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [206.485, 145.09, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 17, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 28, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 34, + s: [95, 95, 100], + }, + { t: 37, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 17, + op: 392, + st: 17, + bm: 0, + }, + { + ddd: 0, + ind: 20, + ty: 2, + nm: "Слой 73", + refId: "image_58", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [196.098, 144.895, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 16, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 27, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 33, + s: [95, 95, 100], + }, + { t: 36, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 16, + op: 391, + st: 16, + bm: 0, + }, + { + ddd: 0, + ind: 21, + ty: 2, + nm: "Слой 74", + refId: "image_59", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [185.32, 145.09, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 15, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 26, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 32, + s: [95, 95, 100], + }, + { t: 35, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 15, + op: 390, + st: 15, + bm: 0, + }, + { + ddd: 0, + ind: 22, + ty: 2, + nm: "Слой 75", + refId: "image_60", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [248.815, 135.951, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 14, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 25, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 31, + s: [95, 95, 100], + }, + { t: 34, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 14, + op: 389, + st: 14, + bm: 0, + }, + { + ddd: 0, + ind: 23, + ty: 2, + nm: "Слой 76", + refId: "image_61", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [238.428, 135.755, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 13, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 24, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 30, + s: [95, 95, 100], + }, + { t: 33, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 13, + op: 388, + st: 13, + bm: 0, + }, + { + ddd: 0, + ind: 24, + ty: 2, + nm: "Слой 77", + refId: "image_62", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [227.65, 135.951, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 12, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 23, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 29, + s: [95, 95, 100], + }, + { t: 32, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 12, + op: 387, + st: 12, + bm: 0, + }, + { + ddd: 0, + ind: 25, + ty: 2, + nm: "Слой 78", + refId: "image_63", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [217.068, 135.951, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 11, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 22, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 28, + s: [95, 95, 100], + }, + { t: 31, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 11, + op: 386, + st: 11, + bm: 0, + }, + { + ddd: 0, + ind: 26, + ty: 2, + nm: "Слой 79", + refId: "image_64", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [206.485, 135.951, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 10, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 21, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 27, + s: [95, 95, 100], + }, + { t: 30, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 10, + op: 385, + st: 10, + bm: 0, + }, + { + ddd: 0, + ind: 27, + ty: 2, + nm: "Слой 80", + refId: "image_65", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [195.903, 135.951, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 9, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 20, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 26, + s: [95, 95, 100], + }, + { t: 29, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 9, + op: 384, + st: 9, + bm: 0, + }, + { + ddd: 0, + ind: 28, + ty: 2, + nm: "Слой 81", + refId: "image_66", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [185.32, 135.951, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 8, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 19, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 25, + s: [95, 95, 100], + }, + { t: 28, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 8, + op: 383, + st: 8, + bm: 0, + }, + { + ddd: 0, + ind: 29, + ty: 2, + nm: "Слой 82", + refId: "image_67", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [248.815, 126.81, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 7, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 18, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 24, + s: [95, 95, 100], + }, + { t: 27, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 7, + op: 382, + st: 7, + bm: 0, + }, + { + ddd: 0, + ind: 30, + ty: 2, + nm: "Слой 83", + refId: "image_68", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [238.232, 126.81, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 6, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 17, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 23, + s: [95, 95, 100], + }, + { t: 26, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 6, + op: 381, + st: 6, + bm: 0, + }, + { + ddd: 0, + ind: 31, + ty: 2, + nm: "Слой 84", + refId: "image_69", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [227.65, 126.81, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 5, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 16, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 22, + s: [95, 95, 100], + }, + { t: 25, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 5, + op: 380, + st: 5, + bm: 0, + }, + { + ddd: 0, + ind: 32, + ty: 2, + nm: "Слой 85", + refId: "image_70", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [217.068, 126.81, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 4, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 15, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 21, + s: [95, 95, 100], + }, + { t: 24, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 4, + op: 379, + st: 4, + bm: 0, + }, + { + ddd: 0, + ind: 33, + ty: 2, + nm: "Слой 86", + refId: "image_71", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [206.681, 126.616, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 3, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 14, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 20, + s: [95, 95, 100], + }, + { t: 23, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 3, + op: 378, + st: 3, + bm: 0, + }, + { + ddd: 0, + ind: 34, + ty: 2, + nm: "Слой 87", + refId: "image_72", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [195.903, 126.81, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 2, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 13, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 19, + s: [95, 95, 100], + }, + { t: 22, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 2, + op: 377, + st: 2, + bm: 0, + }, + { + ddd: 0, + ind: 35, + ty: 2, + nm: "Слой 88", + refId: "image_73", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [185.32, 126.81, 0], ix: 2 }, + a: { a: 0, k: [2.399, 2.4, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 1, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 12, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 18, + s: [95, 95, 100], + }, + { t: 21, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 1, + op: 376, + st: 1, + bm: 0, + }, + { + ddd: 0, + ind: 36, + ty: 2, + nm: "Слой 89", + refId: "image_74", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [218.861, 135.604, 0], ix: 2 }, + a: { a: 0, k: [51.524, 46.154, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 11, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 17, + s: [95, 95, 100], + }, + { t: 20, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 0, + op: 375, + st: 0, + bm: 0, + }, + ], + }, + { + id: "comp_9", + layers: [ + { + ddd: 0, + ind: 1, + ty: 2, + nm: "Слой 91", + refId: "image_75", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 14, + s: [69.113, 354.962, 0], + to: [0, 5.667, 0], + ti: [0, -5.667, 0], + }, + { t: 22, s: [69.113, 388.962, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [42.145, 23.601, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 14, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 21, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 26.333, + s: [95, 95, 100], + }, + { t: 29, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 14, + op: 389, + st: 14, + bm: 0, + }, + { + ddd: 0, + ind: 2, + ty: 2, + nm: "Слой 92", + refId: "image_76", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 8, + s: [70.964, 381.229, 0], + to: [0, 5.667, 0], + ti: [0, -5.667, 0], + }, + { t: 16, s: [70.964, 415.229, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [37.84, 3.166, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 8, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 15, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 20.333, + s: [95, 95, 100], + }, + { t: 23, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 8, + op: 383, + st: 8, + bm: 0, + }, + { + ddd: 0, + ind: 3, + ty: 2, + nm: "Слой 93", + refId: "image_77", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 3, + s: [61.474, 407.496, 0], + to: [0, 5.667, 0], + ti: [0, -5.667, 0], + }, + { t: 11, s: [61.474, 441.496, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [42.12, 23.601, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 3, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 10, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 15.333, + s: [95, 95, 100], + }, + { t: 18, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 3, + op: 378, + st: 3, + bm: 0, + }, + { + ddd: 0, + ind: 4, + ty: 2, + nm: "Слой 94", + refId: "image_78", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.459, y: 1 }, + o: { x: 0.888, y: 0 }, + t: 0, + s: [65.925, 453.496, 0], + to: [0, 2.333, 0], + ti: [0, -2.333, 0], + }, + { t: 8, s: [65.925, 467.496, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [37.84, 3.166, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 7, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 12.333, + s: [95, 95, 100], + }, + { t: 15, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 0, + op: 375, + st: 0, + bm: 0, + }, + ], + }, + { + id: "comp_10", + layers: [ + { + ddd: 0, + ind: 1, + ty: 2, + nm: "тумбочка", + refId: "image_79", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.81], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [17], + }, + { + i: { x: [0.744], y: [1] }, + o: { x: [0.837], y: [0] }, + t: 7, + s: [17], + }, + { t: 17, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [539.627, 395, 0], + to: [-35.5, -6.5, 0], + ti: [0, -13.5, 0], + }, + { t: 10, s: [479.627, 470, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [109.25, 151.446, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [0, 0, 100], + }, + { t: 10, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 0, + op: 375, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 2, + ty: 0, + nm: "кофемашинка", + refId: "comp_11", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [250, 256, 0], ix: 2 }, + a: { a: 0, k: [250, 250, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + w: 500, + h: 500, + ip: 5, + op: 380, + st: 5, + bm: 0, + }, + ], + }, + { + id: "comp_11", + layers: [ + { + ddd: 0, + ind: 1, + ty: 2, + nm: "Слой 96", + parent: 5, + refId: "image_80", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [-0.08, 51.913, 0], ix: 2 }, + a: { a: 0, k: [3.713, 3.091, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 19, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 30, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 36, + s: [95, 95, 100], + }, + { t: 39, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 19, + op: 394, + st: 19, + bm: 0, + }, + { + ddd: 0, + ind: 2, + ty: 2, + nm: "Слой 97", + parent: 5, + refId: "image_81", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [22.962, 86.314, 0], ix: 2 }, + a: { a: 0, k: [21.947, 1.988, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 16, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 27, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 33, + s: [95, 95, 100], + }, + { t: 36, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 16, + op: 391, + st: 16, + bm: 0, + }, + { + ddd: 0, + ind: 3, + ty: 2, + nm: "Слой 98", + parent: 5, + refId: "image_82", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [21.788, 85.288, 0], ix: 2 }, + a: { a: 0, k: [16.364, 19.814, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 13, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 24, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 30, + s: [95, 95, 100], + }, + { t: 33, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 13, + op: 388, + st: 13, + bm: 0, + }, + { + ddd: 0, + ind: 4, + ty: 2, + nm: "Слой 99", + parent: 5, + refId: "image_83", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [21.72, 85.057, 0], ix: 2 }, + a: { a: 0, k: [18.432, 33.769, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 10, + s: [0, 0, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 21, + s: [110, 110, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 27, + s: [95, 95, 100], + }, + { t: 30, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 10, + op: 385, + st: 10, + bm: 0, + }, + { + ddd: 0, + ind: 5, + ty: 2, + nm: "Слой 100", + refId: "image_84", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.81], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 0, + s: [17], + }, + { + i: { x: [0.744], y: [1] }, + o: { x: [0.837], y: [0] }, + t: 7, + s: [17], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 17, + s: [0], + }, + { + i: { x: [0.833], y: [1] }, + o: { x: [0.167], y: [0] }, + t: 21, + s: [-6], + }, + { t: 26, s: [0] }, + ], + ix: 10, + }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 0, + s: [504.785, 273.958, 0], + to: [-4.667, 6.333, 0], + ti: [4.667, -6.333, 0], + }, + { + i: { x: 0.667, y: 0.667 }, + o: { x: 0.333, y: 0.333 }, + t: 10, + s: [476.785, 311.958, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 17, + s: [476.785, 311.958, 0], + to: [0, -1.333, 0], + ti: [0, 0, 0], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 21, + s: [476.785, 303.958, 0], + to: [0, 0, 0], + ti: [0, -1.333, 0], + }, + { t: 26, s: [476.785, 311.958, 0] }, + ], + ix: 2, + }, + a: { a: 0, k: [77, 99, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 0, + s: [0, 0, 100], + }, + { t: 10, s: [100, 100, 100] }, + ], + ix: 6, + }, + }, + ao: 0, + ip: 0, + op: 375, + st: 0, + bm: 0, + }, + ], + }, + ], + layers: [ + { + ddd: 0, + ind: 7, + ty: 0, + nm: "Третья иллюстрация", + refId: "comp_0", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [960, 540, 0], ix: 2 }, + a: { a: 0, k: [250, 250, 0], ix: 1 }, + s: { a: 0, k: [227.922, 227.922, 100], ix: 6 }, + }, + ao: 0, + w: 500, + h: 500, + ip: 16, + op: 303, + st: 16, + bm: 0, + }, + { + ddd: 0, + ind: 8, + ty: 1, + nm: "White Solid 1", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [960, 540, 0], ix: 2 }, + a: { a: 0, k: [960, 540, 0], ix: 1 }, + s: { a: 0, k: [295, 295, 100], ix: 6 }, + }, + ao: 0, + sw: 1920, + sh: 1080, + sc: "#ffffff", + ip: 0, + op: 1125, + st: 0, + bm: 0, + }, + ], + markers: [], +}; + +export const heartLottie = { + v: "5.4.4", + fr: 20, + ip: 0, + op: 28, + w: 48, + h: 48, + nm: "heart", + ddd: 0, + assets: [], + layers: [ + { + ddd: 0, + ind: 1, + ty: 4, + nm: "Bubble circle mask", + parent: 5, + td: 1, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [0, 0, 0], ix: 2 }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.615, 0.615, 0.615], y: [1, 1, 1] }, + o: { x: [0.17, 0.17, 0.17], y: [0.236, 0.236, 0.989] }, + t: 4, + s: [0, 0, 100], + e: [91.249, 91.249, 100], + }, + { t: 9 }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -13.255], + [13.255, 0], + [0, 13.255], + [-13.255, 0], + ], + o: [ + [0, 13.255], + [-13.255, 0], + [0, -13.255], + [13.255, 0], + ], + v: [ + [24, 0], + [0, 24], + [-24, 0], + [0, -24], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.792156922583, 0.156862745098, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 4, + op: 9, + st: -2, + bm: 0, + }, + { + ddd: 0, + ind: 2, + ty: 4, + nm: "Bubble circle", + parent: 5, + tt: 2, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [0, 0, 0], ix: 2 }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.571, 0.571, 0.571], y: [0.729, 0.729, -12.568] }, + o: { x: [0.191, 0.191, 0.191], y: [0.098, 0.098, 4.92] }, + t: 3, + s: [0, 0, 100], + e: [50, 50, 100], + }, + { + i: { x: [0.615, 0.615, 0.615], y: [1, 1, 1] }, + o: { x: [0.332, 0.332, 0.332], y: [0.382, 0.382, 15.757] }, + t: 5, + s: [50, 50, 100], + e: [91.249, 91.249, 100], + }, + { t: 8 }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -13.255], + [13.255, 0], + [0, 13.255], + [-13.255, 0], + ], + o: [ + [0, 13.255], + [-13.255, 0], + [0, -13.255], + [13.255, 0], + ], + v: [ + [24, 0], + [0, 24], + [-24, 0], + [0, -24], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.239215701234, 0, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 3, + op: 9, + st: -2, + bm: 0, + }, + { + ddd: 0, + ind: 3, + ty: 4, + nm: "Heart fill", + parent: 5, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [0, 0, 0], ix: 2 }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { a: 0, k: [100, 100, 100], ix: 6 }, + }, + ao: 0, + hasMask: true, + masksProperties: [ + { + inv: false, + mode: "a", + pt: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 5, + s: [ + { + i: [ + [0, -0.035], + [0.035, 0], + [0, 0.035], + [-0.035, 0], + ], + o: [ + [0, 0.035], + [-0.035, 0], + [0, -0.035], + [0.035, 0], + ], + v: [ + [0.563, 0.5], + [0.5, 0.563], + [0.438, 0.5], + [0.5, 0.438], + ], + c: true, + }, + ], + e: [ + { + i: [ + [0, -13.635], + [13.635, 0], + [0, 13.635], + [-13.635, 0], + ], + o: [ + [0, 13.635], + [-13.635, 0], + [0, -13.635], + [13.635, 0], + ], + v: [ + [25.188, 0.5], + [0.5, 25.188], + [-24.188, 0.5], + [0.5, -24.188], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 9, + s: [ + { + i: [ + [0, -13.635], + [13.635, 0], + [0, 13.635], + [-13.635, 0], + ], + o: [ + [0, 13.635], + [-13.635, 0], + [0, -13.635], + [13.635, 0], + ], + v: [ + [25.188, 0.5], + [0.5, 25.188], + [-24.188, 0.5], + [0.5, -24.188], + ], + c: true, + }, + ], + e: [ + { + i: [ + [0, -13.635], + [13.635, 0], + [0, 13.635], + [-13.635, 0], + ], + o: [ + [0, 13.635], + [-13.635, 0], + [0, -13.635], + [13.635, 0], + ], + v: [ + [25.188, 0.5], + [0.5, 25.188], + [-24.188, 0.5], + [0.5, -24.188], + ], + c: true, + }, + ], + }, + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 17, + s: [ + { + i: [ + [0, -13.635], + [13.635, 0], + [0, 13.635], + [-13.635, 0], + ], + o: [ + [0, 13.635], + [-13.635, 0], + [0, -13.635], + [13.635, 0], + ], + v: [ + [25.188, 0.5], + [0.5, 25.188], + [-24.188, 0.5], + [0.5, -24.188], + ], + c: true, + }, + ], + e: [ + { + i: [ + [0, -0.035], + [0.035, 0], + [0, 0.035], + [-0.035, 0], + ], + o: [ + [0, 0.035], + [-0.035, 0], + [0, -0.035], + [0.035, 0], + ], + v: [ + [0.563, 0.5], + [0.5, 0.563], + [0.438, 0.5], + [0.5, 0.438], + ], + c: true, + }, + ], + }, + { t: 25 }, + ], + ix: 1, + }, + o: { a: 0, k: 100, ix: 3 }, + x: { a: 0, k: 0, ix: 4 }, + nm: "Mask 1", + }, + ], + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [2.148, -3.235], + [4.176, 0], + [0, -6.627], + [0, 0], + [0, 12.045], + [6.627, 0], + ], + o: [ + [-4.176, 0], + [-2.149, -3.235], + [-6.627, 0], + [0, 11.943], + [0, 0], + [0, -6.627], + [0, 0], + ], + v: [ + [10, -18], + [0, -12.628], + [-10, -18], + [-22, -6], + [0, 18], + [22, -6], + [10, -18], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.239215686917, 0, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -13.255], + [13.255, 0], + [0, 13.255], + [-13.255, 0], + ], + o: [ + [0, 13.255], + [-13.255, 0], + [0, -13.255], + [13.255, 0], + ], + v: [ + [24, 0], + [0, 24], + [-24, 0], + [0, -24], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 2", + np: 1, + cix: 2, + bm: 0, + ix: 2, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 6, + op: 25, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 4, + ty: 4, + nm: "Heart empty 2", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [24, 24, 0], ix: 2 }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 3, + s: [100, 100, 100], + e: [50, 50, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 5, + s: [50, 50, 100], + e: [110.00000000000001, 110.00000000000001, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 7, + s: [110.00000000000001, 110.00000000000001, 100], + e: [100, 100, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 9, + s: [100, 100, 100], + e: [100, 100, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 17, + s: [100, 100, 100], + e: [70, 70, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 20, + s: [70, 70, 100], + e: [100, 100, 100], + }, + { t: 25 }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [2.148, -3.235], + [4.176, 0], + [0, -6.627], + [0, 0], + [0, 12.045], + [6.627, 0], + ], + o: [ + [-4.176, 0], + [-2.149, -3.235], + [-6.627, 0], + [0, 11.943], + [0, 0], + [0, -6.627], + [0, 0], + ], + v: [ + [10, -18], + [0, -12.628], + [-10, -18], + [-22, -6], + [0, 18], + [22, -6], + [10, -18], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.803921580315, 0.823529422283, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 0, + op: 9, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 5, + ty: 4, + nm: "Heart empty", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { a: 0, k: [24, 24, 0], ix: 2 }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 3, + s: [100, 100, 100], + e: [50, 50, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 5, + s: [50, 50, 100], + e: [110.00000000000001, 110.00000000000001, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 7, + s: [110.00000000000001, 110.00000000000001, 100], + e: [100, 100, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 9, + s: [100, 100, 100], + e: [100, 100, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 17, + s: [100, 100, 100], + e: [70, 70, 100], + }, + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 20, + s: [70, 70, 100], + e: [100, 100, 100], + }, + { t: 25 }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, 0], + [2.148, -3.235], + [4.176, 0], + [0, -6.627], + [0, 0], + [0, 12.045], + [6.627, 0], + ], + o: [ + [-4.176, 0], + [-2.149, -3.235], + [-6.627, 0], + [0, 11.943], + [0, 0], + [0, -6.627], + [0, 0], + ], + v: [ + [10, -18], + [0, -12.628], + [-10, -18], + [-22, -6], + [0, 18], + [22, -6], + [10, -18], + ], + c: false, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.803921580315, 0.823529422283, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 17, + op: 28, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 6, + ty: 4, + nm: "Rotation controll", + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { + a: 1, + k: [ + { + i: { x: [0.667], y: [1] }, + o: { x: [0.333], y: [0] }, + t: 5, + s: [0], + e: [8], + }, + { t: 11 }, + ], + ix: 10, + }, + p: { a: 0, k: [22, 26.896000000000004, 0], ix: 2 }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { a: 0, k: [100, -100, 100], ix: 6 }, + }, + ao: 0, + shapes: [], + ip: 0, + op: 28, + st: 0, + bm: 0, + }, + { + ddd: 0, + ind: 7, + ty: 4, + nm: "Circle 1", + parent: 6, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 3, + s: [-5, 7, 0], + e: [-20.964, 18.609, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { t: 8 }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 3, + s: [50, 50, 100], + e: [100, 100, 100], + }, + { t: 8 }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -1.105], + [1.105, 0], + [0, 1.105], + [-1.105, 0], + ], + o: [ + [0, 1.105], + [-1.105, 0], + [0, -1.105], + [1.105, 0], + ], + v: [ + [2, 0], + [0, 2], + [-2, 0], + [0, -2], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.258823543787, 0.647058844566, 0.960784316063, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 5, + op: 11, + st: 1, + bm: 0, + }, + { + ddd: 0, + ind: 8, + ty: 4, + nm: "Circle 2", + parent: 6, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 3, + s: [7, 7, 0], + e: [20.361, 23.089, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { t: 8 }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 3, + s: [50, 50, 100], + e: [100, 100, 100], + }, + { t: 8 }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -1.105], + [1.105, 0], + [0, 1.105], + [-1.105, 0], + ], + o: [ + [0, 1.105], + [-1.105, 0], + [0, -1.105], + [1.105, 0], + ], + v: [ + [2, 0], + [0, 2], + [-2, 0], + [0, -2], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.596078455448, 0, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 5, + op: 11, + st: 3, + bm: 0, + }, + { + ddd: 0, + ind: 9, + ty: 4, + nm: "Circle 3", + parent: 6, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 3, + s: [7, 3, 0], + e: [16.229, 25.965, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { t: 10 }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 3, + s: [50, 50, 100], + e: [100, 100, 100], + }, + { t: 10 }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -1.105], + [1.105, 0], + [0, 1.105], + [-1.105, 0], + ], + o: [ + [0, 1.105], + [-1.105, 0], + [0, -1.105], + [1.105, 0], + ], + v: [ + [2, 0], + [0, 2], + [-2, 0], + [0, -2], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.258823543787, 0.647058844566, 0.960784316063, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 5, + op: 11, + st: 1, + bm: 0, + }, + { + ddd: 0, + ind: 10, + ty: 4, + nm: "Circle 4", + parent: 6, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 3, + s: [7, -1, 0], + e: [17.875, -12.5, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { t: 8 }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 3, + s: [50, 50, 100], + e: [100, 100, 100], + }, + { t: 8 }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -1.105], + [1.105, 0], + [0, 1.105], + [-1.105, 0], + ], + o: [ + [0, 1.105], + [-1.105, 0], + [0, -1.105], + [1.105, 0], + ], + v: [ + [2, 0], + [0, 2], + [-2, 0], + [0, -2], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.239215686917, 0, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 5, + op: 11, + st: 1, + bm: 0, + }, + { + ddd: 0, + ind: 11, + ty: 4, + nm: "Circle 5", + parent: 6, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 3, + s: [3, 7, 0], + e: [9.843, 24.697, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { t: 8 }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 3, + s: [50, 50, 100], + e: [100, 100, 100], + }, + { t: 8 }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -1.105], + [1.105, 0], + [0, 1.105], + [-1.105, 0], + ], + o: [ + [0, 1.105], + [-1.105, 0], + [0, -1.105], + [1.105, 0], + ], + v: [ + [2, 0], + [0, 2], + [-2, 0], + [0, -2], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.239215686917, 0, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 5, + op: 11, + st: 1, + bm: 0, + }, + { + ddd: 0, + ind: 12, + ty: 4, + nm: "Circle 6", + parent: 6, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 3, + s: [-1, 7, 0], + e: [-7.306, 22.996, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { t: 10 }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 3, + s: [50, 50, 100], + e: [100, 100, 100], + }, + { t: 10 }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -1.105], + [1.105, 0], + [0, 1.105], + [-1.105, 0], + ], + o: [ + [0, 1.105], + [-1.105, 0], + [0, -1.105], + [1.105, 0], + ], + v: [ + [2, 0], + [0, 2], + [-2, 0], + [0, -2], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.250980407, 0.764705896378, 0.317647069693, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 5, + op: 11, + st: 3, + bm: 0, + }, + { + ddd: 0, + ind: 13, + ty: 4, + nm: "Circle 7", + parent: 6, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 3, + s: [-5, 3, 0], + e: [-19.866, 13.163, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { t: 10 }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 3, + s: [50, 50, 100], + e: [100, 100, 100], + }, + { t: 10 }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -1.105], + [1.105, 0], + [0, 1.105], + [-1.105, 0], + ], + o: [ + [0, 1.105], + [-1.105, 0], + [0, -1.105], + [1.105, 0], + ], + v: [ + [2, 0], + [0, 2], + [-2, 0], + [0, -2], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.250980407, 0.764705896378, 0.317647069693, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 5, + op: 11, + st: 3, + bm: 0, + }, + { + ddd: 0, + ind: 14, + ty: 4, + nm: "Circle 8", + parent: 6, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 3, + s: [3, 3, 0], + e: [22.065, -4.42, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { t: 10 }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 3, + s: [50, 50, 100], + e: [100, 100, 100], + }, + { t: 10 }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -1.105], + [1.105, 0], + [0, 1.105], + [-1.105, 0], + ], + o: [ + [0, 1.105], + [-1.105, 0], + [0, -1.105], + [1.105, 0], + ], + v: [ + [2, 0], + [0, 2], + [-2, 0], + [0, -2], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.250980407, 0.764705896378, 0.317647069693, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 5, + op: 11, + st: 3, + bm: 0, + }, + { + ddd: 0, + ind: 15, + ty: 4, + nm: "Circle 9", + parent: 6, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 3, + s: [-1, 3, 0], + e: [-15.125, -10.125, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { t: 10 }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 3, + s: [50, 50, 100], + e: [100, 100, 100], + }, + { t: 10 }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -1.105], + [1.105, 0], + [0, 1.105], + [-1.105, 0], + ], + o: [ + [0, 1.105], + [-1.105, 0], + [0, -1.105], + [1.105, 0], + ], + v: [ + [2, 0], + [0, 2], + [-2, 0], + [0, -2], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.596078455448, 0, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 5, + op: 11, + st: 3, + bm: 0, + }, + { + ddd: 0, + ind: 16, + ty: 4, + nm: "Circle 10", + parent: 6, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 3, + s: [-5, -1, 0], + e: [-16.504, -17.415, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { t: 8 }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 3, + s: [50, 50, 100], + e: [100, 100, 100], + }, + { t: 8 }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -1.105], + [1.105, 0], + [0, 1.105], + [-1.105, 0], + ], + o: [ + [0, 1.105], + [-1.105, 0], + [0, -1.105], + [1.105, 0], + ], + v: [ + [2, 0], + [0, 2], + [-2, 0], + [0, -2], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.239215686917, 0, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 5, + op: 11, + st: 1, + bm: 0, + }, + { + ddd: 0, + ind: 17, + ty: 4, + nm: "Circle 11", + parent: 6, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 3, + s: [3, -1, 0], + e: [12.082, -13.03, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { t: 10 }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 3, + s: [50, 50, 100], + e: [100, 100, 100], + }, + { t: 10 }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -1.105], + [1.105, 0], + [0, 1.105], + [-1.105, 0], + ], + o: [ + [0, 1.105], + [-1.105, 0], + [0, -1.105], + [1.105, 0], + ], + v: [ + [2, 0], + [0, 2], + [-2, 0], + [0, -2], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { a: 0, k: [1, 0.596078455448, 0, 1], ix: 4 }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 5, + op: 11, + st: 1, + bm: 0, + }, + { + ddd: 0, + ind: 18, + ty: 4, + nm: "Circle 12", + parent: 6, + sr: 1, + ks: { + o: { a: 0, k: 100, ix: 11 }, + r: { a: 0, k: 0, ix: 10 }, + p: { + a: 1, + k: [ + { + i: { x: 0.667, y: 1 }, + o: { x: 0.333, y: 0 }, + t: 3, + s: [-1, -1, 0], + e: [-7.311, -16.725, 0], + to: [0, 0, 0], + ti: [0, 0, 0], + }, + { t: 10 }, + ], + ix: 2, + }, + a: { a: 0, k: [0, 0, 0], ix: 1 }, + s: { + a: 1, + k: [ + { + i: { x: [0.667, 0.667, 0.667], y: [1, 1, 1] }, + o: { x: [0.333, 0.333, 0.333], y: [0, 0, 0] }, + t: 3, + s: [50, 50, 100], + e: [100, 100, 100], + }, + { t: 10 }, + ], + ix: 6, + }, + }, + ao: 0, + shapes: [ + { + ty: "gr", + it: [ + { + ind: 0, + ty: "sh", + ix: 1, + ks: { + a: 0, + k: { + i: [ + [0, -1.105], + [1.105, 0], + [0, 1.105], + [-1.105, 0], + ], + o: [ + [0, 1.105], + [-1.105, 0], + [0, -1.105], + [1.105, 0], + ], + v: [ + [2, 0], + [0, 2], + [-2, 0], + [0, -2], + ], + c: true, + }, + ix: 2, + }, + nm: "Path 1", + mn: "ADBE Vector Shape - Group", + hd: false, + }, + { + ty: "fl", + c: { + a: 0, + k: [0.258823543787, 0.647058844566, 0.960784316063, 1], + ix: 4, + }, + o: { a: 0, k: 100, ix: 5 }, + r: 1, + bm: 0, + nm: "Fill 1", + mn: "ADBE Vector Graphic - Fill", + hd: false, + }, + { + ty: "tr", + p: { a: 0, k: [0, 0], ix: 2 }, + a: { a: 0, k: [0, 0], ix: 1 }, + s: { a: 0, k: [100, 100], ix: 3 }, + r: { a: 0, k: 0, ix: 6 }, + o: { a: 0, k: 100, ix: 7 }, + sk: { a: 0, k: 0, ix: 4 }, + sa: { a: 0, k: 0, ix: 5 }, + nm: "Transform", + }, + ], + nm: "Group 1", + np: 2, + cix: 2, + bm: 0, + ix: 1, + mn: "ADBE Vector Group", + hd: false, + }, + ], + ip: 5, + op: 11, + st: 1, + bm: 0, + }, + ], + markers: [], +}; diff --git a/src/electron/renderer/src/dependencies/globals.js b/src/electron/renderer/src/dependencies/globals.js index dc2abb84d..f7ec74427 100644 --- a/src/electron/renderer/src/dependencies/globals.js +++ b/src/electron/renderer/src/dependencies/globals.js @@ -1,147 +1,147 @@ -import { Notyf } from "notyf"; -import checkChromatic from "chromatic/isChromatic"; -import lottie from "lottie-web"; - -export * from "./simple.js"; - -// ---------- Lottie Helper ---------- -const isChromatic = checkChromatic(); - -export const startLottie = (lottieElement, animationData) => { - lottieElement.innerHTML = ""; - const thisLottie = lottie.loadAnimation({ - container: lottieElement, - animationData, - renderer: "svg", - loop: !isChromatic, - autoplay: !isChromatic, - }); - - if (isChromatic) thisLottie.goToAndStop(thisLottie.getDuration(true) - 1, true); // Go to last frame - - return thisLottie; -}; - -const longDuration = 20000; - -// ---------- Notification Helper ---------- -export const notyf = new Notyf({ - position: { x: "right", y: "bottom" }, - dismissible: true, - ripple: false, - duration: 3000, - types: [ - { - type: "checking_server_is_live", - background: "grey", - icon: { - className: "fas fa-wifi", - tagName: "i", - color: "white", - }, - }, - { - type: "checking_server_api_version", - background: "grey", - icon: { - className: "fas fa-wifi", - tagName: "i", - color: "white", - }, - }, - { - type: "loading_internet", - background: "grey", - icon: { - className: "fas fa-wifi", - tagName: "i", - color: "white", - }, - }, - { - type: "app_update", - background: "grey", - icon: { - className: "fas fa-sync-alt", - tagName: "i", - color: "white", - }, - }, - { - type: "success", - background: "#13716D", - icon: { - className: "fas fa-check-circle", - tagName: "i", - color: "white", - }, - }, - { - type: "warning", - background: "#fa8c16", - icon: { - className: "fas fa-exclamation-triangle", - tagName: "i", - color: "white", - }, - duration: longDuration, - }, - { - type: "app_update_warning", - background: "#fa8c16", - icon: { - className: "fas fa-tools", - tagName: "i", - color: "white", - }, - duration: longDuration, - }, - { - type: "error", - background: "#B80D49", - icon: { - className: "fas fa-times-circle", - tagName: "i", - color: "white", - }, - duration: longDuration, - }, - ], -}); - -let activeNotifications = []; // Counter for active error notifications -const maxConcurrentErrors = 3; // Maximum number of concurrent error notifications - -function removeNotification(notification) { - const index = activeNotifications.indexOf(notification); - if (index > -1) activeNotifications.splice(index, 1); -} - -export const notify = (message, type = "success", duration) => { - const id = `${type}_${message}`; - - const duplicate = activeNotifications.find((n) => n.id === id); - if (duplicate) { - removeNotification(duplicate); - dismissNotification(duplicate); - } - - if (Object.keys(activeNotifications).length >= maxConcurrentErrors) { - const popped = activeNotifications.shift(); - dismissNotification(popped); - } - - const info = { type, message }; - if (duration) info.duration = duration; - - const notification = notyf.open(info); - notification.id = id; - - activeNotifications.push(notification); - - notification.on("dismiss", () => removeNotification(notification)); - - return notification; -}; - -export const dismissNotification = (notification) => notyf.dismiss(notification); +import { Notyf } from "notyf"; +import checkChromatic from "chromatic/isChromatic"; +import lottie from "lottie-web"; + +export * from "./simple.js"; + +// ---------- Lottie Helper ---------- +const isChromatic = checkChromatic(); + +export const startLottie = (lottieElement, animationData) => { + lottieElement.innerHTML = ""; + const thisLottie = lottie.loadAnimation({ + container: lottieElement, + animationData, + renderer: "svg", + loop: !isChromatic, + autoplay: !isChromatic, + }); + + if (isChromatic) thisLottie.goToAndStop(thisLottie.getDuration(true) - 1, true); // Go to last frame + + return thisLottie; +}; + +const longDuration = 20000; + +// ---------- Notification Helper ---------- +export const notyf = new Notyf({ + position: { x: "right", y: "bottom" }, + dismissible: true, + ripple: false, + duration: 3000, + types: [ + { + type: "checking_server_is_live", + background: "grey", + icon: { + className: "fas fa-wifi", + tagName: "i", + color: "white", + }, + }, + { + type: "checking_server_api_version", + background: "grey", + icon: { + className: "fas fa-wifi", + tagName: "i", + color: "white", + }, + }, + { + type: "loading_internet", + background: "grey", + icon: { + className: "fas fa-wifi", + tagName: "i", + color: "white", + }, + }, + { + type: "app_update", + background: "grey", + icon: { + className: "fas fa-sync-alt", + tagName: "i", + color: "white", + }, + }, + { + type: "success", + background: "#13716D", + icon: { + className: "fas fa-check-circle", + tagName: "i", + color: "white", + }, + }, + { + type: "warning", + background: "#fa8c16", + icon: { + className: "fas fa-exclamation-triangle", + tagName: "i", + color: "white", + }, + duration: longDuration, + }, + { + type: "app_update_warning", + background: "#fa8c16", + icon: { + className: "fas fa-tools", + tagName: "i", + color: "white", + }, + duration: longDuration, + }, + { + type: "error", + background: "#B80D49", + icon: { + className: "fas fa-times-circle", + tagName: "i", + color: "white", + }, + duration: longDuration, + }, + ], +}); + +let activeNotifications = []; // Counter for active error notifications +const maxConcurrentErrors = 3; // Maximum number of concurrent error notifications + +function removeNotification(notification) { + const index = activeNotifications.indexOf(notification); + if (index > -1) activeNotifications.splice(index, 1); +} + +export const notify = (message, type = "success", duration) => { + const id = `${type}_${message}`; + + const duplicate = activeNotifications.find((n) => n.id === id); + if (duplicate) { + removeNotification(duplicate); + dismissNotification(duplicate); + } + + if (Object.keys(activeNotifications).length >= maxConcurrentErrors) { + const popped = activeNotifications.shift(); + dismissNotification(popped); + } + + const info = { type, message }; + if (duration) info.duration = duration; + + const notification = notyf.open(info); + notification.id = id; + + activeNotifications.push(notification); + + notification.on("dismiss", () => removeNotification(notification)); + + return notification; +}; + +export const dismissNotification = (notification) => notyf.dismiss(notification); diff --git a/src/electron/renderer/src/dependencies/simple.js b/src/electron/renderer/src/dependencies/simple.js index f29801362..b9c86f59c 100644 --- a/src/electron/renderer/src/dependencies/simple.js +++ b/src/electron/renderer/src/dependencies/simple.js @@ -1,31 +1,31 @@ -import { app, crypto, isElectron } from "../electron/index.js"; -import paths from "../../../../paths.config.json" assert { type: "json" }; -import { joinPath } from "../globals"; - -export const reloadPageToHome = () => { - if (isStorybook) return; - window.location = isElectron ? window.location.pathname : window.location.origin; -}; // Clear all query params - -// Filesystem Management -const root = globalThis?.process?.env?.VITEST ? joinPath(paths.root, ".test") : paths.root; -export const homeDirectory = app?.getPath("home") ?? ""; -export const appDirectory = homeDirectory ? joinPath(homeDirectory, root) : ""; -export const guidedProgressFilePath = appDirectory ? joinPath(appDirectory, ...paths.subfolders.progress) : ""; - -export const previewSaveFolderPath = appDirectory ? joinPath(appDirectory, ...paths.subfolders.preview) : ""; -export const conversionSaveFolderPath = appDirectory ? joinPath(appDirectory, ...paths.subfolders.conversions) : ""; - -export const testDataFolderPath = appDirectory ? joinPath(appDirectory, ...paths.subfolders.testdata) : ""; - -// Encryption -const IV_LENGTH = 16; -const KEY_LENGTH = 32; -export const ENCRYPTION_KEY = appDirectory - ? Buffer.concat([Buffer.from(appDirectory), Buffer.alloc(KEY_LENGTH)], KEY_LENGTH) - : null; - -export const ENCRYPTION_IV = crypto ? crypto.randomBytes(IV_LENGTH) : null; - -// Storybook -export const isStorybook = window.location.href.includes("iframe.html"); +import { app, crypto, isElectron } from "../electron/index.js"; +import paths from "../../../../paths.config.json" assert { type: "json" }; +import { joinPath } from "../globals"; + +export const reloadPageToHome = () => { + if (isStorybook) return; + window.location = isElectron ? window.location.pathname : window.location.origin; +}; // Clear all query params + +// Filesystem Management +const root = globalThis?.process?.env?.VITEST ? joinPath(paths.root, ".test") : paths.root; +export const homeDirectory = app?.getPath("home") ?? ""; +export const appDirectory = homeDirectory ? joinPath(homeDirectory, root) : ""; +export const guidedProgressFilePath = appDirectory ? joinPath(appDirectory, ...paths.subfolders.progress) : ""; + +export const previewSaveFolderPath = appDirectory ? joinPath(appDirectory, ...paths.subfolders.preview) : ""; +export const conversionSaveFolderPath = appDirectory ? joinPath(appDirectory, ...paths.subfolders.conversions) : ""; + +export const testDataFolderPath = appDirectory ? joinPath(appDirectory, ...paths.subfolders.testdata) : ""; + +// Encryption +const IV_LENGTH = 16; +const KEY_LENGTH = 32; +export const ENCRYPTION_KEY = appDirectory + ? Buffer.concat([Buffer.from(appDirectory), Buffer.alloc(KEY_LENGTH)], KEY_LENGTH) + : null; + +export const ENCRYPTION_IV = crypto ? crypto.randomBytes(IV_LENGTH) : null; + +// Storybook +export const isStorybook = window.location.href.includes("iframe.html"); diff --git a/src/electron/renderer/src/electron/check.js b/src/electron/renderer/src/electron/check.js index ba7d2b583..92380a280 100644 --- a/src/electron/renderer/src/electron/check.js +++ b/src/electron/renderer/src/electron/check.js @@ -1,3 +1,3 @@ -var userAgent = navigator.userAgent.toLowerCase(); -export const isElectron = userAgent.indexOf(" electron/") > -1; -export default isElectron; +var userAgent = navigator.userAgent.toLowerCase(); +export const isElectron = userAgent.indexOf(" electron/") > -1; +export default isElectron; diff --git a/src/electron/renderer/src/electron/index.js b/src/electron/renderer/src/electron/index.js index d34779860..76d7e9062 100644 --- a/src/electron/renderer/src/electron/index.js +++ b/src/electron/renderer/src/electron/index.js @@ -1,51 +1,51 @@ -import { updateURLParams } from "../../utils/url.js"; -import isElectron from "./check.js"; - -export { isElectron }; - -export let port = 4242; -export let SERVER_FILE_PATH = ""; -export const electron = globalThis.electron ?? {}; // ipcRenderer, remote, shell, etc. -export let fs = null; -export let os = null; -export let remote = {}; -export let app = null; -export let path = null; -export let log = null; -export let crypto = null; - -// Used in tests -try { - crypto = require("crypto"); -} catch {} - -if (isElectron) { - try { - fs = require("fs-extra"); // File System - os = require("os"); - crypto = require("crypto"); - remote = require("@electron/remote"); - app = remote.app; - - electron.ipcRenderer.on("fileOpened", (info, filepath) => { - updateURLParams({ file: filepath }); - const dashboard = document.querySelector("nwb-dashboard"); - const activePage = dashboard.getAttribute("activePage"); - if (activePage === "preview") dashboard.requestUpdate(); - else dashboard.setAttribute("activePage", "preview"); - }); - - ["log", "warn", "error"].forEach((method) => - electron.ipcRenderer.on(`console.${method}`, (_, ...args) => console[method](`[main-process]:`, ...args)) - ); - - port = electron.ipcRenderer.sendSync("get-port"); - console.log("User OS:", os.type(), os.platform(), "version:", os.release()); - - SERVER_FILE_PATH = electron.ipcRenderer.sendSync("get-server-file-path"); - - path = require("path"); - } catch (error) { - console.error("Electron API access failed —", error); - } -} else console.warn("Electron API is blocked for web builds"); +import { updateURLParams } from "../../utils/url.js"; +import isElectron from "./check.js"; + +export { isElectron }; + +export let port = 4242; +export let SERVER_FILE_PATH = ""; +export const electron = globalThis.electron ?? {}; // ipcRenderer, remote, shell, etc. +export let fs = null; +export let os = null; +export let remote = {}; +export let app = null; +export let path = null; +export let log = null; +export let crypto = null; + +// Used in tests +try { + crypto = require("crypto"); +} catch {} + +if (isElectron) { + try { + fs = require("fs-extra"); // File System + os = require("os"); + crypto = require("crypto"); + remote = require("@electron/remote"); + app = remote.app; + + electron.ipcRenderer.on("fileOpened", (info, filepath) => { + updateURLParams({ file: filepath }); + const dashboard = document.querySelector("nwb-dashboard"); + const activePage = dashboard.getAttribute("activePage"); + if (activePage === "preview") dashboard.requestUpdate(); + else dashboard.setAttribute("activePage", "preview"); + }); + + ["log", "warn", "error"].forEach((method) => + electron.ipcRenderer.on(`console.${method}`, (_, ...args) => console[method](`[main-process]:`, ...args)) + ); + + port = electron.ipcRenderer.sendSync("get-port"); + console.log("User OS:", os.type(), os.platform(), "version:", os.release()); + + SERVER_FILE_PATH = electron.ipcRenderer.sendSync("get-server-file-path"); + + path = require("path"); + } catch (error) { + console.error("Electron API access failed —", error); + } +} else console.warn("Electron API is blocked for web builds"); diff --git a/src/electron/renderer/src/globals.js b/src/electron/renderer/src/globals.js index ff75a0585..371ea6968 100644 --- a/src/electron/renderer/src/globals.js +++ b/src/electron/renderer/src/globals.js @@ -1,12 +1,12 @@ -import { path } from "./electron/index.js"; - -import supportedInterfaces from "../../../supported_interfaces.json" assert { type: "json" }; - -export const joinPath = (...args) => (path ? path.join(...args) : args.filter((str) => str).join("/")); - -export let runOnLoad = (fn) => { - if (document.readyState === "complete") fn(); - else window.addEventListener("load", fn); -}; - -export { supportedInterfaces }; +import { path } from "./electron/index.js"; + +import supportedInterfaces from "../../../supported_interfaces.json" assert { type: "json" }; + +export const joinPath = (...args) => (path ? path.join(...args) : args.filter((str) => str).join("/")); + +export let runOnLoad = (fn) => { + if (document.readyState === "complete") fn(); + else window.addEventListener("load", fn); +}; + +export { supportedInterfaces }; diff --git a/src/electron/renderer/src/pages.js b/src/electron/renderer/src/pages.js index 4cadf8964..12c34f0ef 100644 --- a/src/electron/renderer/src/pages.js +++ b/src/electron/renderer/src/pages.js @@ -1,195 +1,195 @@ -import { GettingStartedPage } from "./stories/pages/getting-started/GettingStarted"; -import { DocumentationPage } from "./stories/pages/documentation/Documentation"; -import { ContactPage } from "./stories/pages/contact-us/Contact"; -import { GuidedHomePage } from "./stories/pages/guided-mode/GuidedHome"; -import { GuidedNewDatasetPage } from "./stories/pages/guided-mode/setup/GuidedNewDatasetInfo"; -import { GuidedStructurePage } from "./stories/pages/guided-mode/data/GuidedStructure"; -import { sections } from "./stories/pages/globals"; -import { GuidedSubjectsPage } from "./stories/pages/guided-mode/setup/GuidedSubjects"; -import { GuidedSourceDataPage } from "./stories/pages/guided-mode/data/GuidedSourceData"; -import { GuidedMetadataPage } from "./stories/pages/guided-mode/data/GuidedMetadata"; -import { GuidedUploadPage } from "./stories/pages/guided-mode/options/GuidedUpload"; -import { GuidedResultsPage } from "./stories/pages/guided-mode/results/GuidedResults"; -import { Dashboard } from "./stories/Dashboard"; -import { GuidedStubPreviewPage } from "./stories/pages/guided-mode/options/GuidedStubPreview"; -import { GuidedInspectorPage } from "./stories/pages/guided-mode/options/GuidedInspectorPage"; - -import logo from "../assets/img/logo-guide-draft-transparent-tight.png"; -import { GuidedPathExpansionPage } from "./stories/pages/guided-mode/data/GuidedPathExpansion"; -import uploadIcon from "./stories/assets/dandi.svg?raw"; -import inspectIcon from "./stories/assets/inspect.svg?raw"; -import neurosiftIcon from "./stories/assets/neurosift-logo.svg?raw"; - -import settingsIcon from "./stories/assets/settings.svg?raw"; - -import { UploadsPage } from "./stories/pages/uploads/UploadsPage"; -import { SettingsPage } from "./stories/pages/settings/SettingsPage"; -import { InspectPage } from "./stories/pages/inspect/InspectPage"; -import { PreviewPage } from "./stories/pages/preview/PreviewPage"; -import { GuidedPreform } from "./stories/pages/guided-mode/setup/Preform"; -import { GuidedDandiResultsPage } from "./stories/pages/guided-mode/results/GuidedDandiResults"; - -let dashboard = document.querySelector("nwb-dashboard"); -if (!dashboard) dashboard = new Dashboard(); -dashboard.logo = logo; -dashboard.name = "NWB GUIDE"; -dashboard.renderNameInSidebar = false; - -const resourcesGroup = "Resources"; - -const guidedIcon = ` - - - - -`; - -const documentationIcon = ` - - -`; - -const contactIcon = ` - -`; - -const pages = { - "/": new GuidedHomePage({ - label: "Convert", - icon: guidedIcon, - pages: { - details: new GuidedNewDatasetPage({ - title: "Project Setup", - label: "Project details", - section: sections[0], - }), - - workflow: new GuidedPreform({ - title: "Pipeline Workflow", - label: "Pipeline workflow", - section: sections[0], - }), - - structure: new GuidedStructurePage({ - title: "Provide Data Formats", - label: "Data formats", - section: sections[0], - }), - - locate: new GuidedPathExpansionPage({ - title: "Locate Data", - label: "Locate data", - section: sections[0], - }), - - subjects: new GuidedSubjectsPage({ - title: "Subject Metadata", - label: "Subject details", - section: sections[0], - }), - - sourcedata: new GuidedSourceDataPage({ - title: "Source Data Information", - label: "Source data", - section: sections[1], - }), - - metadata: new GuidedMetadataPage({ - title: "File Metadata", - label: "File metadata", - section: sections[1], - }), - - inspect: new GuidedInspectorPage({ - title: "Inspector Report", - label: "Validate metadata", - section: sections[2], - sync: ["preview"], - }), - - preview: new GuidedStubPreviewPage({ - title: "Conversion Preview", - label: "Preview NWB files", - section: sections[2], - sync: ["preview"], - }), - - conversion: new GuidedResultsPage({ - title: "Conversion Review", - label: "Review conversion", - section: sections[2], - sync: ["conversion"], - }), - - upload: new GuidedUploadPage({ - title: "DANDI Upload", - label: "Upload to DANDI", - section: sections[3], - sync: ["conversion"], - }), - - review: new GuidedDandiResultsPage({ - title: "Upload Review", - label: "Review published data", - section: sections[3], - }), - }, - }), - validate: new InspectPage({ - label: "Validate", - icon: inspectIcon, - }), - explore: new PreviewPage({ - label: "Explore", - icon: neurosiftIcon, - }), - uploads: new UploadsPage({ - label: "Upload", - icon: uploadIcon, - }), - docs: new DocumentationPage({ - label: "Documentation", - icon: documentationIcon, - group: resourcesGroup, - }), - contact: new ContactPage({ - label: "Contact Us", - icon: contactIcon, - group: resourcesGroup, - }), - settings: new SettingsPage({ - label: "Settings", - icon: settingsIcon, - group: "bottom", - }), -}; - -dashboard.pages = pages; - -export { dashboard }; +import { GettingStartedPage } from "./stories/pages/getting-started/GettingStarted"; +import { DocumentationPage } from "./stories/pages/documentation/Documentation"; +import { ContactPage } from "./stories/pages/contact-us/Contact"; +import { GuidedHomePage } from "./stories/pages/guided-mode/GuidedHome"; +import { GuidedNewDatasetPage } from "./stories/pages/guided-mode/setup/GuidedNewDatasetInfo"; +import { GuidedStructurePage } from "./stories/pages/guided-mode/data/GuidedStructure"; +import { sections } from "./stories/pages/globals"; +import { GuidedSubjectsPage } from "./stories/pages/guided-mode/setup/GuidedSubjects"; +import { GuidedSourceDataPage } from "./stories/pages/guided-mode/data/GuidedSourceData"; +import { GuidedMetadataPage } from "./stories/pages/guided-mode/data/GuidedMetadata"; +import { GuidedUploadPage } from "./stories/pages/guided-mode/options/GuidedUpload"; +import { GuidedResultsPage } from "./stories/pages/guided-mode/results/GuidedResults"; +import { Dashboard } from "./stories/Dashboard"; +import { GuidedStubPreviewPage } from "./stories/pages/guided-mode/options/GuidedStubPreview"; +import { GuidedInspectorPage } from "./stories/pages/guided-mode/options/GuidedInspectorPage"; + +import logo from "../assets/img/logo-guide-draft-transparent-tight.png"; +import { GuidedPathExpansionPage } from "./stories/pages/guided-mode/data/GuidedPathExpansion"; +import uploadIcon from "./stories/assets/dandi.svg?raw"; +import inspectIcon from "./stories/assets/inspect.svg?raw"; +import neurosiftIcon from "./stories/assets/neurosift-logo.svg?raw"; + +import settingsIcon from "./stories/assets/settings.svg?raw"; + +import { UploadsPage } from "./stories/pages/uploads/UploadsPage"; +import { SettingsPage } from "./stories/pages/settings/SettingsPage"; +import { InspectPage } from "./stories/pages/inspect/InspectPage"; +import { PreviewPage } from "./stories/pages/preview/PreviewPage"; +import { GuidedPreform } from "./stories/pages/guided-mode/setup/Preform"; +import { GuidedDandiResultsPage } from "./stories/pages/guided-mode/results/GuidedDandiResults"; + +let dashboard = document.querySelector("nwb-dashboard"); +if (!dashboard) dashboard = new Dashboard(); +dashboard.logo = logo; +dashboard.name = "NWB GUIDE"; +dashboard.renderNameInSidebar = false; + +const resourcesGroup = "Resources"; + +const guidedIcon = ` + + + + +`; + +const documentationIcon = ` + + +`; + +const contactIcon = ` + +`; + +const pages = { + "/": new GuidedHomePage({ + label: "Convert", + icon: guidedIcon, + pages: { + details: new GuidedNewDatasetPage({ + title: "Project Setup", + label: "Project details", + section: sections[0], + }), + + workflow: new GuidedPreform({ + title: "Pipeline Workflow", + label: "Pipeline workflow", + section: sections[0], + }), + + structure: new GuidedStructurePage({ + title: "Provide Data Formats", + label: "Data formats", + section: sections[0], + }), + + locate: new GuidedPathExpansionPage({ + title: "Locate Data", + label: "Locate data", + section: sections[0], + }), + + subjects: new GuidedSubjectsPage({ + title: "Subject Metadata", + label: "Subject details", + section: sections[0], + }), + + sourcedata: new GuidedSourceDataPage({ + title: "Source Data Information", + label: "Source data", + section: sections[1], + }), + + metadata: new GuidedMetadataPage({ + title: "File Metadata", + label: "File metadata", + section: sections[1], + }), + + inspect: new GuidedInspectorPage({ + title: "Inspector Report", + label: "Validate metadata", + section: sections[2], + sync: ["preview"], + }), + + preview: new GuidedStubPreviewPage({ + title: "Conversion Preview", + label: "Preview NWB files", + section: sections[2], + sync: ["preview"], + }), + + conversion: new GuidedResultsPage({ + title: "Conversion Review", + label: "Review conversion", + section: sections[2], + sync: ["conversion"], + }), + + upload: new GuidedUploadPage({ + title: "DANDI Upload", + label: "Upload to DANDI", + section: sections[3], + sync: ["conversion"], + }), + + review: new GuidedDandiResultsPage({ + title: "Upload Review", + label: "Review published data", + section: sections[3], + }), + }, + }), + validate: new InspectPage({ + label: "Validate", + icon: inspectIcon, + }), + explore: new PreviewPage({ + label: "Explore", + icon: neurosiftIcon, + }), + uploads: new UploadsPage({ + label: "Upload", + icon: uploadIcon, + }), + docs: new DocumentationPage({ + label: "Documentation", + icon: documentationIcon, + group: resourcesGroup, + }), + contact: new ContactPage({ + label: "Contact Us", + icon: contactIcon, + group: resourcesGroup, + }), + settings: new SettingsPage({ + label: "Settings", + icon: settingsIcon, + group: "bottom", + }), +}; + +dashboard.pages = pages; + +export { dashboard }; diff --git a/src/electron/renderer/src/progress/index.js b/src/electron/renderer/src/progress/index.js index edea2076b..3527f9da2 100644 --- a/src/electron/renderer/src/progress/index.js +++ b/src/electron/renderer/src/progress/index.js @@ -1,222 +1,222 @@ -import Swal from "sweetalert2"; - -import { - guidedProgressFilePath, - reloadPageToHome, - isStorybook, - appDirectory, - ENCRYPTION_KEY, - ENCRYPTION_IV, -} from "../dependencies/simple.js"; -import { fs, crypto } from "../electron/index.js"; - -import { joinPath, runOnLoad } from "../globals"; -import { merge } from "../stories/pages/utils.js"; -import { updateAppProgress, updateFile } from "./update.js"; -import { updateURLParams } from "../../utils/url.js"; - -import * as operations from "./operations.js"; - -export * from "./update.js"; - -const CRYPTO_VERSION = "0.0.1"; // NOTE: Update to wipe values created using an outdated encryption algorithm -const CRYPTO_ALGORITHM = "aes-256-cbc"; - -function encode(text) { - if (!crypto) return text; - const cipher = crypto.createCipheriv(CRYPTO_ALGORITHM, ENCRYPTION_KEY, ENCRYPTION_IV); - - const encrypted = cipher.update(text); - return `${CRYPTO_VERSION}:${ENCRYPTION_IV.toString("hex")}:${Buffer.concat([encrypted, cipher.final()]).toString( - "hex" - )}`; -} - -// Try to decode the value -function decode(text) { - const [TEXT_CRYPTO_VERSION, ENCRYPTION_IV_HEX, encrypted] = text.split(":"); - - if (text.slice(0, TEXT_CRYPTO_VERSION.length) !== CRYPTO_VERSION) return undefined; - - if (!crypto || !/[0-9A-Fa-f]{6}/g.test(encrypted)) return encrypted; - - try { - let textParts = encrypted.split(":"); - let encryptedText = Buffer.from(textParts.join(":"), "hex"); - let decipher = crypto.createDecipheriv(CRYPTO_ALGORITHM, ENCRYPTION_KEY, Buffer.from(ENCRYPTION_IV_HEX, "hex")); - let decrypted = decipher.update(encryptedText); - decrypted = Buffer.concat([decrypted, decipher.final()]); - return decrypted.toString(); - } catch { - return encrypted; - } -} - -export function drill(object, callback) { - if (object && typeof object === "object") { - const copy = Array.isArray(object) ? [...object] : { ...object }; - for (let k in copy) { - const res = drill(copy[k], callback); - if (res) copy[k] = res; - else delete copy[k]; - } - return copy; - } else return callback(object); -} - -function encodeObject(object) { - return drill(object, (value) => (typeof value === "string" ? encode(value) : value)); -} - -function decodeObject(object) { - return drill(object, (value) => (typeof value === "string" ? decode(value) : value)); -} - -class GlobalAppConfig { - path = `${appDirectory}/config.json`; - data = {}; - - constructor() { - const exists = fs ? fs.existsSync(this.path) : localStorage[this.path]; - if (exists) { - const data = JSON.parse(fs ? fs.readFileSync(this.path) : localStorage.getItem(this.path)); - this.data = decodeObject(data); - } - } - - save() { - const encoded = encodeObject(this.data); - - if (fs) fs.writeFileSync(this.path, JSON.stringify(encoded, null, 2)); - else localStorage.setItem(this.path, JSON.stringify(encoded)); - } -} - -export const global = new GlobalAppConfig(); - -export const hasEntry = (name) => { - const existingProgressNames = getEntries(); - existingProgressNames.forEach((element, index) => (existingProgressNames[index] = element.replace(".json", ""))); - return existingProgressNames.includes(name); -}; - -export const save = (page, overrides = {}) => { - const globalState = merge(overrides, page.info.globalState); // Merge the overrides into the actual global state - - let guidedProgressFileName = globalState.project?.name; - - //return if guidedProgressFileName is not a string greater than 0 - if (typeof guidedProgressFileName !== "string" || guidedProgressFileName.length === 0) return; - - updateFile(guidedProgressFileName, () => { - updateAppProgress(page.info.id, globalState, guidedProgressFileName); // Will automatically set last updated time - return globalState; - }); -}; - -export const getEntries = () => { - if (fs && !fs.existsSync(guidedProgressFilePath)) fs.mkdirSync(guidedProgressFilePath, { recursive: true }); //Check if progress folder exists. If not, create it. - const progressFiles = fs ? fs.readdirSync(guidedProgressFilePath) : Object.keys(localStorage); - return progressFiles.filter((path) => path.slice(-5) === ".json"); -}; - -const oldConversionsPath = "conversion"; -const convertOldPath = (path) => { - if (path && path.slice(0, oldConversionsPath.length) === oldConversionsPath) - return `/${path.slice(oldConversionsPath.length)}`; - else return path; -}; - -const transformProgressFile = (progressFile) => { - progressFile["page-before-exit"] = convertOldPath(progressFile["page-before-exit"]); - Object.values(progressFile.sections ?? {}).forEach((section) => { - const pages = {}; - Object.entries(section.pages).forEach(([page, value]) => { - pages[convertOldPath(page)] = value; - }); - section.pages = pages; - }); - - return progressFile; -}; -export const getAll = (progressFiles) => { - return progressFiles.map((progressFile) => { - let progressFilePath = joinPath(guidedProgressFilePath, progressFile); - return transformProgressFile( - JSON.parse(fs ? fs.readFileSync(progressFilePath) : localStorage.getItem(progressFilePath)) - ); - }); -}; - -export const getCurrentProjectName = () => { - const params = new URLSearchParams(location.search); - return params.get("project"); -}; - -export const get = (name) => { - if (!name) { - console.error("No name provided to get()"); - const params = new URLSearchParams(location.search); - const projectName = params.get("project"); - if (!projectName) { - if (isStorybook) return {}; - - runOnLoad(() => { - Swal.fire({ - title: "No project specified.", - text: "Reload the application and load a project to view.", - icon: "error", - confirmButtonText: "Restart", - }).then(reloadPageToHome); - }); - - return; - } - } - - let progressFilePath = joinPath(guidedProgressFilePath, name + ".json"); - - const exists = fs ? fs.existsSync(progressFilePath) : localStorage.getItem(progressFilePath) !== null; - return transformProgressFile( - exists ? JSON.parse(fs ? fs.readFileSync(progressFilePath) : localStorage.getItem(progressFilePath)) : {} - ); -}; - -export async function resume(name) { - const global = this ? this.load(name) : get(name); - - let commandToResume = global["page-before-exit"] || "//details"; - updateURLParams({ project: name }); - - if (this) await this.onTransition(commandToResume); - - return commandToResume; -} - -export const remove = async (name, force = false) => { - const result = force - ? { isConfirmed: true } - : await Swal.fire({ - title: `Are you sure you would like to delete this conversion pipeline?`, - html: `All related files will be deleted permanently, and existing progress will be lost.`, - icon: "warning", - heightAuto: false, - showCancelButton: true, - confirmButtonColor: "#3085d6", - cancelButtonColor: "#d33", - confirmButtonText: `Delete ${name}`, - cancelButtonText: "Cancel", - focusCancel: true, - }); - - if (result.isConfirmed) return operations.remove(name); - - return false; -}; - -export const deleteProgressCard = async (progressCardDeleteButton) => { - const progressCard = progressCardDeleteButton.parentElement.parentElement; - const progressCardNameToDelete = progressCard.querySelector(".progress-file-name").textContent.trim(); - const hasBeenDeleted = await remove(progressCardNameToDelete); - if (hasBeenDeleted) progressCard.remove(); //remove the progress card from the DOM -}; +import Swal from "sweetalert2"; + +import { + guidedProgressFilePath, + reloadPageToHome, + isStorybook, + appDirectory, + ENCRYPTION_KEY, + ENCRYPTION_IV, +} from "../dependencies/simple.js"; +import { fs, crypto } from "../electron/index.js"; + +import { joinPath, runOnLoad } from "../globals"; +import { merge } from "../stories/pages/utils.js"; +import { updateAppProgress, updateFile } from "./update.js"; +import { updateURLParams } from "../../utils/url.js"; + +import * as operations from "./operations.js"; + +export * from "./update.js"; + +const CRYPTO_VERSION = "0.0.1"; // NOTE: Update to wipe values created using an outdated encryption algorithm +const CRYPTO_ALGORITHM = "aes-256-cbc"; + +function encode(text) { + if (!crypto) return text; + const cipher = crypto.createCipheriv(CRYPTO_ALGORITHM, ENCRYPTION_KEY, ENCRYPTION_IV); + + const encrypted = cipher.update(text); + return `${CRYPTO_VERSION}:${ENCRYPTION_IV.toString("hex")}:${Buffer.concat([encrypted, cipher.final()]).toString( + "hex" + )}`; +} + +// Try to decode the value +function decode(text) { + const [TEXT_CRYPTO_VERSION, ENCRYPTION_IV_HEX, encrypted] = text.split(":"); + + if (text.slice(0, TEXT_CRYPTO_VERSION.length) !== CRYPTO_VERSION) return undefined; + + if (!crypto || !/[0-9A-Fa-f]{6}/g.test(encrypted)) return encrypted; + + try { + let textParts = encrypted.split(":"); + let encryptedText = Buffer.from(textParts.join(":"), "hex"); + let decipher = crypto.createDecipheriv(CRYPTO_ALGORITHM, ENCRYPTION_KEY, Buffer.from(ENCRYPTION_IV_HEX, "hex")); + let decrypted = decipher.update(encryptedText); + decrypted = Buffer.concat([decrypted, decipher.final()]); + return decrypted.toString(); + } catch { + return encrypted; + } +} + +export function drill(object, callback) { + if (object && typeof object === "object") { + const copy = Array.isArray(object) ? [...object] : { ...object }; + for (let k in copy) { + const res = drill(copy[k], callback); + if (res) copy[k] = res; + else delete copy[k]; + } + return copy; + } else return callback(object); +} + +function encodeObject(object) { + return drill(object, (value) => (typeof value === "string" ? encode(value) : value)); +} + +function decodeObject(object) { + return drill(object, (value) => (typeof value === "string" ? decode(value) : value)); +} + +class GlobalAppConfig { + path = `${appDirectory}/config.json`; + data = {}; + + constructor() { + const exists = fs ? fs.existsSync(this.path) : localStorage[this.path]; + if (exists) { + const data = JSON.parse(fs ? fs.readFileSync(this.path) : localStorage.getItem(this.path)); + this.data = decodeObject(data); + } + } + + save() { + const encoded = encodeObject(this.data); + + if (fs) fs.writeFileSync(this.path, JSON.stringify(encoded, null, 2)); + else localStorage.setItem(this.path, JSON.stringify(encoded)); + } +} + +export const global = new GlobalAppConfig(); + +export const hasEntry = (name) => { + const existingProgressNames = getEntries(); + existingProgressNames.forEach((element, index) => (existingProgressNames[index] = element.replace(".json", ""))); + return existingProgressNames.includes(name); +}; + +export const save = (page, overrides = {}) => { + const globalState = merge(overrides, page.info.globalState); // Merge the overrides into the actual global state + + let guidedProgressFileName = globalState.project?.name; + + //return if guidedProgressFileName is not a string greater than 0 + if (typeof guidedProgressFileName !== "string" || guidedProgressFileName.length === 0) return; + + updateFile(guidedProgressFileName, () => { + updateAppProgress(page.info.id, globalState, guidedProgressFileName); // Will automatically set last updated time + return globalState; + }); +}; + +export const getEntries = () => { + if (fs && !fs.existsSync(guidedProgressFilePath)) fs.mkdirSync(guidedProgressFilePath, { recursive: true }); //Check if progress folder exists. If not, create it. + const progressFiles = fs ? fs.readdirSync(guidedProgressFilePath) : Object.keys(localStorage); + return progressFiles.filter((path) => path.slice(-5) === ".json"); +}; + +const oldConversionsPath = "conversion"; +const convertOldPath = (path) => { + if (path && path.slice(0, oldConversionsPath.length) === oldConversionsPath) + return `/${path.slice(oldConversionsPath.length)}`; + else return path; +}; + +const transformProgressFile = (progressFile) => { + progressFile["page-before-exit"] = convertOldPath(progressFile["page-before-exit"]); + Object.values(progressFile.sections ?? {}).forEach((section) => { + const pages = {}; + Object.entries(section.pages).forEach(([page, value]) => { + pages[convertOldPath(page)] = value; + }); + section.pages = pages; + }); + + return progressFile; +}; +export const getAll = (progressFiles) => { + return progressFiles.map((progressFile) => { + let progressFilePath = joinPath(guidedProgressFilePath, progressFile); + return transformProgressFile( + JSON.parse(fs ? fs.readFileSync(progressFilePath) : localStorage.getItem(progressFilePath)) + ); + }); +}; + +export const getCurrentProjectName = () => { + const params = new URLSearchParams(location.search); + return params.get("project"); +}; + +export const get = (name) => { + if (!name) { + console.error("No name provided to get()"); + const params = new URLSearchParams(location.search); + const projectName = params.get("project"); + if (!projectName) { + if (isStorybook) return {}; + + runOnLoad(() => { + Swal.fire({ + title: "No project specified.", + text: "Reload the application and load a project to view.", + icon: "error", + confirmButtonText: "Restart", + }).then(reloadPageToHome); + }); + + return; + } + } + + let progressFilePath = joinPath(guidedProgressFilePath, name + ".json"); + + const exists = fs ? fs.existsSync(progressFilePath) : localStorage.getItem(progressFilePath) !== null; + return transformProgressFile( + exists ? JSON.parse(fs ? fs.readFileSync(progressFilePath) : localStorage.getItem(progressFilePath)) : {} + ); +}; + +export async function resume(name) { + const global = this ? this.load(name) : get(name); + + let commandToResume = global["page-before-exit"] || "//details"; + updateURLParams({ project: name }); + + if (this) await this.onTransition(commandToResume); + + return commandToResume; +} + +export const remove = async (name, force = false) => { + const result = force + ? { isConfirmed: true } + : await Swal.fire({ + title: `Are you sure you would like to delete this conversion pipeline?`, + html: `All related files will be deleted permanently, and existing progress will be lost.`, + icon: "warning", + heightAuto: false, + showCancelButton: true, + confirmButtonColor: "#3085d6", + cancelButtonColor: "#d33", + confirmButtonText: `Delete ${name}`, + cancelButtonText: "Cancel", + focusCancel: true, + }); + + if (result.isConfirmed) return operations.remove(name); + + return false; +}; + +export const deleteProgressCard = async (progressCardDeleteButton) => { + const progressCard = progressCardDeleteButton.parentElement.parentElement; + const progressCardNameToDelete = progressCard.querySelector(".progress-file-name").textContent.trim(); + const hasBeenDeleted = await remove(progressCardNameToDelete); + if (hasBeenDeleted) progressCard.remove(); //remove the progress card from the DOM +}; diff --git a/src/electron/renderer/src/progress/operations.js b/src/electron/renderer/src/progress/operations.js index 83cc9ce66..b4c4658b1 100644 --- a/src/electron/renderer/src/progress/operations.js +++ b/src/electron/renderer/src/progress/operations.js @@ -1,23 +1,23 @@ -import { joinPath } from "../globals"; -import { conversionSaveFolderPath, guidedProgressFilePath, previewSaveFolderPath } from "../dependencies/simple"; -import { fs } from "../electron"; - -export const remove = (name) => { - //Get the path of the progress file to delete - const progressFilePathToDelete = joinPath(guidedProgressFilePath, name + ".json"); - - //delete the progress file - if (fs) { - if (fs.existsSync(progressFilePathToDelete)) fs.unlinkSync(progressFilePathToDelete); - } else localStorage.removeItem(progressFilePathToDelete); - - if (fs) { - // delete default preview location - fs.rmSync(joinPath(previewSaveFolderPath, name), { recursive: true, force: true }); - - // delete default conversion location - fs.rmSync(joinPath(conversionSaveFolderPath, name), { recursive: true, force: true }); - } - - return true; -}; +import { joinPath } from "../globals"; +import { conversionSaveFolderPath, guidedProgressFilePath, previewSaveFolderPath } from "../dependencies/simple"; +import { fs } from "../electron"; + +export const remove = (name) => { + //Get the path of the progress file to delete + const progressFilePathToDelete = joinPath(guidedProgressFilePath, name + ".json"); + + //delete the progress file + if (fs) { + if (fs.existsSync(progressFilePathToDelete)) fs.unlinkSync(progressFilePathToDelete); + } else localStorage.removeItem(progressFilePathToDelete); + + if (fs) { + // delete default preview location + fs.rmSync(joinPath(previewSaveFolderPath, name), { recursive: true, force: true }); + + // delete default conversion location + fs.rmSync(joinPath(conversionSaveFolderPath, name), { recursive: true, force: true }); + } + + return true; +}; diff --git a/src/electron/renderer/src/progress/update.js b/src/electron/renderer/src/progress/update.js index 573c95833..5a2258f9b 100644 --- a/src/electron/renderer/src/progress/update.js +++ b/src/electron/renderer/src/progress/update.js @@ -1,64 +1,64 @@ -import { updateURLParams } from "../../utils/url.js"; -import { guidedProgressFilePath } from "../dependencies/simple.js"; -import { fs } from "../electron/index.js"; -import { joinPath } from "../globals"; -import { get, hasEntry } from "./index.js"; - -export const rename = (newDatasetName, previousDatasetName) => { - //If updating the dataset, update the old banner image path with a new one - if (previousDatasetName) { - if (previousDatasetName === newDatasetName) return; - - if (hasEntry(newDatasetName)) - throw new Error("An existing project already exists with that name. Please choose a different name."); - - // update old progress file with new dataset name - const oldProgressFilePath = `${guidedProgressFilePath}/${previousDatasetName}.json`; - const newProgressFilePath = `${guidedProgressFilePath}/${newDatasetName}.json`; - if (fs) fs.renameSync(oldProgressFilePath, newProgressFilePath); - else { - localStorage.setItem(newProgressFilePath, localStorage.getItem(oldProgressFilePath)); - localStorage.removeItem(oldProgressFilePath); - } - } else throw new Error("No previous project name provided"); -}; - -export const updateAppProgress = ( - pageId, - dataOrProjectName = {}, - projectName = typeof dataOrProjectName === "string" ? dataOrProjectName : undefined -) => { - const transitionOffPipeline = pageId && pageId.slice(0, 2) !== "//"; - - if (transitionOffPipeline) { - updateURLParams({ project: undefined }); - return; // Only save last page if within the conversion workflow - } - - if (projectName) updateURLParams({ project: projectName }); - - // Is a project name - if (dataOrProjectName === projectName) updateFile(dataOrProjectName, (data) => (data["page-before-exit"] = pageId)); - // Is a data object - else dataOrProjectName["page-before-exit"] = pageId; -}; - -//Destination: HOMEDIR/NWB_GUIDE/pipelines -export const updateFile = (projectName, callback) => { - let data = get(projectName); - - if (callback) { - const result = callback(data); - if (result && typeof result === "object") data = result; - } - - data["last-modified"] = new Date(); // Always update the last modified time - - var guidedFilePath = joinPath(guidedProgressFilePath, projectName + ".json"); - - // Save the file through the available mechanisms - if (fs) { - if (!fs.existsSync(guidedProgressFilePath)) fs.mkdirSync(guidedProgressFilePath, { recursive: true }); //create progress folder if one does not exist - fs.writeFileSync(guidedFilePath, JSON.stringify(data, null, 2)); - } else localStorage.setItem(guidedFilePath, JSON.stringify(data)); -}; +import { updateURLParams } from "../../utils/url.js"; +import { guidedProgressFilePath } from "../dependencies/simple.js"; +import { fs } from "../electron/index.js"; +import { joinPath } from "../globals"; +import { get, hasEntry } from "./index.js"; + +export const rename = (newDatasetName, previousDatasetName) => { + //If updating the dataset, update the old banner image path with a new one + if (previousDatasetName) { + if (previousDatasetName === newDatasetName) return; + + if (hasEntry(newDatasetName)) + throw new Error("An existing project already exists with that name. Please choose a different name."); + + // update old progress file with new dataset name + const oldProgressFilePath = `${guidedProgressFilePath}/${previousDatasetName}.json`; + const newProgressFilePath = `${guidedProgressFilePath}/${newDatasetName}.json`; + if (fs) fs.renameSync(oldProgressFilePath, newProgressFilePath); + else { + localStorage.setItem(newProgressFilePath, localStorage.getItem(oldProgressFilePath)); + localStorage.removeItem(oldProgressFilePath); + } + } else throw new Error("No previous project name provided"); +}; + +export const updateAppProgress = ( + pageId, + dataOrProjectName = {}, + projectName = typeof dataOrProjectName === "string" ? dataOrProjectName : undefined +) => { + const transitionOffPipeline = pageId && pageId.slice(0, 2) !== "//"; + + if (transitionOffPipeline) { + updateURLParams({ project: undefined }); + return; // Only save last page if within the conversion workflow + } + + if (projectName) updateURLParams({ project: projectName }); + + // Is a project name + if (dataOrProjectName === projectName) updateFile(dataOrProjectName, (data) => (data["page-before-exit"] = pageId)); + // Is a data object + else dataOrProjectName["page-before-exit"] = pageId; +}; + +//Destination: HOMEDIR/NWB_GUIDE/pipelines +export const updateFile = (projectName, callback) => { + let data = get(projectName); + + if (callback) { + const result = callback(data); + if (result && typeof result === "object") data = result; + } + + data["last-modified"] = new Date(); // Always update the last modified time + + var guidedFilePath = joinPath(guidedProgressFilePath, projectName + ".json"); + + // Save the file through the available mechanisms + if (fs) { + if (!fs.existsSync(guidedProgressFilePath)) fs.mkdirSync(guidedProgressFilePath, { recursive: true }); //create progress folder if one does not exist + fs.writeFileSync(guidedFilePath, JSON.stringify(data, null, 2)); + } else localStorage.setItem(guidedFilePath, JSON.stringify(data)); +}; diff --git a/src/electron/renderer/src/stories/Accordion.js b/src/electron/renderer/src/stories/Accordion.js index b0bae8602..e2301592c 100644 --- a/src/electron/renderer/src/stories/Accordion.js +++ b/src/electron/renderer/src/stories/Accordion.js @@ -1,271 +1,271 @@ -import { LitElement, css, html, unsafeCSS } from "lit"; -import { - emojiFontFamily, - errorHue, - errorSymbol, - successHue, - successSymbol, - warningHue, - warningSymbol, -} from "./globals"; - -import { Chevron } from "./Chevron"; - -const faSize = "1em"; -const faColor = "#000000"; - -export class Accordion extends LitElement { - static get styles() { - return css` - * { - box-sizing: border-box; - } - - :host { - display: block; - } - - .header { - display: flex; - align-items: center; - white-space: nowrap; - } - - .header > * { - line-height: initial; - margin: 0; - padding: 0; - } - - .header > *:first-child { - font-size: 1.2em; - font-weight: bold; - margin-right: 10px; - } - - .guided--nav-bar-section { - display: flex; - flex-direction: column; - justify-content: center; - align-items: flex-start; - width: 100%; - height: 100%; - } - - .content { - width: 100%; - } - - .guided--nav-bar-dropdown { - position: relative; - width: 100%; - display: flex; - align-items: center; - justify-content: space-between; - flex-wrap: nowrap; - user-select: none; - background-color: rgb(235, 235, 235); - } - - .guided--nav-bar-section > * { - padding: 3px 15px 3px 10px; - } - - .guided--nav-bar-dropdown.active { - border-bottom: none; - } - - .guided--nav-bar-dropdown.error { - border-bottom: 3px solid hsl(${errorHue}, 100%, 70%) !important; - } - - .guided--nav-bar-dropdown.warning { - border-bottom: 3px solid hsl(${warningHue}, 100%, 70%) !important; - } - - .guided--nav-bar-dropdown.valid { - border-bottom: 3px solid hsl(${successHue}, 100%, 70%) !important; - } - - .guided--nav-bar-dropdown { - margin-right: 50px; - } - - .guided--nav-bar-dropdown::after { - font-size: 0.8em; - position: absolute; - right: 25px; - font-family: ${unsafeCSS(emojiFontFamily)}; - } - - .guided--nav-bar-dropdown.toggleable::after { - right: 50px; - } - - .guided--nav-bar-dropdown.toggleable:hover { - cursor: pointer; - background-color: gainsboro; - } - - .guided--nav-bar-section-page { - display: flex; - width: calc((100% - 20px)); - justify-content: flex-start; - margin-left: 15px; - margin-top: 3px; - padding-left: 5px; - } - - .guided--container-nav-items { - width: 100%; - list-style: none; - padding-left: 0px; - overflow-y: auto; - } - - .disabled { - opacity: 0.5; - pointer-events: none; - } - `; - } - - static get properties() { - return { - name: { type: String, reflect: true }, - open: { type: Boolean, reflect: true }, - disabled: { type: Boolean, reflect: true }, - status: { type: String, reflect: true }, - }; - } - - constructor({ - name, - subtitle, - toggleable = true, - content, - open = false, - status, - disabled = false, - contentPadding, - } = {}) { - super(); - this.name = name; - this.subtitle = subtitle; - this.content = content; - this.open = open; - this.status = status; - this.disabled = disabled; - this.toggleable = toggleable; - this.contentPadding = contentPadding; - } - - updated() { - if (!this.content) return; - this.toggle(!!this.open); - } - - setStatus = (status) => { - const dropdownElement = this.shadowRoot.getElementById("dropdown"); - dropdownElement.classList.remove("error", "warning", "valid"); - dropdownElement.classList.add(status); - this.status = status; - }; - - onClick = () => {}; // Set by the user - - #updateClass = (name, element, force) => { - if (force === undefined) element.classList.toggle(name); - else { - if (force) element.classList.remove(name); - else element.classList.add(name); - } - }; - - toggle = (forcedState) => { - const hasForce = forcedState !== undefined; - const toggledState = !this.open; - - const desiredState = hasForce ? forcedState : toggledState; - const state = this.toOpen(desiredState); - - //remove hidden from child elements with guided--nav-bar-section-page class - const section = this.shadowRoot.getElementById("section"); - section.toggleAttribute("hidden", hasForce ? !state : undefined); - - const dropdown = this.shadowRoot.getElementById("dropdown"); - this.#updateClass("active", dropdown, !state); - - //toggle the chevron - const chevron = dropdown.querySelector("nwb-chevron"); - if (chevron) chevron.direction = state ? "bottom" : "right"; - - if (desiredState === state) this.open = state; // Update state if not overridden - }; - - toOpen = (state = this.open) => { - if (!this.toggleable) - return true; // Force open if not toggleable - else if (this.disabled) return false; // Force closed if disabled - return state; - }; - - render() { - const isToggleable = this.content && this.toggleable; - - return html` -
- - ${this.content - ? html`` - : ""} -
- `; - } -} - -customElements.get("nwb-accordion") || customElements.define("nwb-accordion", Accordion); - -// Object.entries(info.pages).map(([id, state]) => { - -// return html` -// -// ` -// }) +import { LitElement, css, html, unsafeCSS } from "lit"; +import { + emojiFontFamily, + errorHue, + errorSymbol, + successHue, + successSymbol, + warningHue, + warningSymbol, +} from "./globals"; + +import { Chevron } from "./Chevron"; + +const faSize = "1em"; +const faColor = "#000000"; + +export class Accordion extends LitElement { + static get styles() { + return css` + * { + box-sizing: border-box; + } + + :host { + display: block; + } + + .header { + display: flex; + align-items: center; + white-space: nowrap; + } + + .header > * { + line-height: initial; + margin: 0; + padding: 0; + } + + .header > *:first-child { + font-size: 1.2em; + font-weight: bold; + margin-right: 10px; + } + + .guided--nav-bar-section { + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + width: 100%; + height: 100%; + } + + .content { + width: 100%; + } + + .guided--nav-bar-dropdown { + position: relative; + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: nowrap; + user-select: none; + background-color: rgb(235, 235, 235); + } + + .guided--nav-bar-section > * { + padding: 3px 15px 3px 10px; + } + + .guided--nav-bar-dropdown.active { + border-bottom: none; + } + + .guided--nav-bar-dropdown.error { + border-bottom: 3px solid hsl(${errorHue}, 100%, 70%) !important; + } + + .guided--nav-bar-dropdown.warning { + border-bottom: 3px solid hsl(${warningHue}, 100%, 70%) !important; + } + + .guided--nav-bar-dropdown.valid { + border-bottom: 3px solid hsl(${successHue}, 100%, 70%) !important; + } + + .guided--nav-bar-dropdown { + margin-right: 50px; + } + + .guided--nav-bar-dropdown::after { + font-size: 0.8em; + position: absolute; + right: 25px; + font-family: ${unsafeCSS(emojiFontFamily)}; + } + + .guided--nav-bar-dropdown.toggleable::after { + right: 50px; + } + + .guided--nav-bar-dropdown.toggleable:hover { + cursor: pointer; + background-color: gainsboro; + } + + .guided--nav-bar-section-page { + display: flex; + width: calc((100% - 20px)); + justify-content: flex-start; + margin-left: 15px; + margin-top: 3px; + padding-left: 5px; + } + + .guided--container-nav-items { + width: 100%; + list-style: none; + padding-left: 0px; + overflow-y: auto; + } + + .disabled { + opacity: 0.5; + pointer-events: none; + } + `; + } + + static get properties() { + return { + name: { type: String, reflect: true }, + open: { type: Boolean, reflect: true }, + disabled: { type: Boolean, reflect: true }, + status: { type: String, reflect: true }, + }; + } + + constructor({ + name, + subtitle, + toggleable = true, + content, + open = false, + status, + disabled = false, + contentPadding, + } = {}) { + super(); + this.name = name; + this.subtitle = subtitle; + this.content = content; + this.open = open; + this.status = status; + this.disabled = disabled; + this.toggleable = toggleable; + this.contentPadding = contentPadding; + } + + updated() { + if (!this.content) return; + this.toggle(!!this.open); + } + + setStatus = (status) => { + const dropdownElement = this.shadowRoot.getElementById("dropdown"); + dropdownElement.classList.remove("error", "warning", "valid"); + dropdownElement.classList.add(status); + this.status = status; + }; + + onClick = () => {}; // Set by the user + + #updateClass = (name, element, force) => { + if (force === undefined) element.classList.toggle(name); + else { + if (force) element.classList.remove(name); + else element.classList.add(name); + } + }; + + toggle = (forcedState) => { + const hasForce = forcedState !== undefined; + const toggledState = !this.open; + + const desiredState = hasForce ? forcedState : toggledState; + const state = this.toOpen(desiredState); + + //remove hidden from child elements with guided--nav-bar-section-page class + const section = this.shadowRoot.getElementById("section"); + section.toggleAttribute("hidden", hasForce ? !state : undefined); + + const dropdown = this.shadowRoot.getElementById("dropdown"); + this.#updateClass("active", dropdown, !state); + + //toggle the chevron + const chevron = dropdown.querySelector("nwb-chevron"); + if (chevron) chevron.direction = state ? "bottom" : "right"; + + if (desiredState === state) this.open = state; // Update state if not overridden + }; + + toOpen = (state = this.open) => { + if (!this.toggleable) + return true; // Force open if not toggleable + else if (this.disabled) return false; // Force closed if disabled + return state; + }; + + render() { + const isToggleable = this.content && this.toggleable; + + return html` +
+ + ${this.content + ? html`` + : ""} +
+ `; + } +} + +customElements.get("nwb-accordion") || customElements.define("nwb-accordion", Accordion); + +// Object.entries(info.pages).map(([id, state]) => { + +// return html` +// +// ` +// }) diff --git a/src/electron/renderer/src/stories/Accordion.stories.js b/src/electron/renderer/src/stories/Accordion.stories.js index c9dd7b05f..c35266e83 100644 --- a/src/electron/renderer/src/stories/Accordion.stories.js +++ b/src/electron/renderer/src/stories/Accordion.stories.js @@ -1,42 +1,42 @@ -import { Accordion } from "./Accordion"; - -export default { - title: "Components/Accordion", -}; - -const Template = (args) => new Accordion(args); - -const base = { - name: "NWBFile", - open: true, - status: "valid", - content: "Whatever you want", - subtitle: "General NWB File Properties", -}; - -export const Basic = Template.bind({}); -Basic.args = { - ...base, - content: "Whatever you want", -}; - -export const Valid = Template.bind({}); -Valid.args = { - ...base, - status: "valid", - content: "WOOHOO!", -}; - -export const Warning = Template.bind({}); -Warning.args = { - ...base, - status: "warning", - content: "OOO", -}; - -export const Error = Template.bind({}); -Error.args = { - ...base, - status: "error", - content: "BOO", -}; +import { Accordion } from "./Accordion"; + +export default { + title: "Components/Accordion", +}; + +const Template = (args) => new Accordion(args); + +const base = { + name: "NWBFile", + open: true, + status: "valid", + content: "Whatever you want", + subtitle: "General NWB File Properties", +}; + +export const Basic = Template.bind({}); +Basic.args = { + ...base, + content: "Whatever you want", +}; + +export const Valid = Template.bind({}); +Valid.args = { + ...base, + status: "valid", + content: "WOOHOO!", +}; + +export const Warning = Template.bind({}); +Warning.args = { + ...base, + status: "warning", + content: "OOO", +}; + +export const Error = Template.bind({}); +Error.args = { + ...base, + status: "error", + content: "BOO", +}; diff --git a/src/electron/renderer/src/stories/BasicTable.js b/src/electron/renderer/src/stories/BasicTable.js index efd472f4b..4f6b182b4 100644 --- a/src/electron/renderer/src/stories/BasicTable.js +++ b/src/electron/renderer/src/stories/BasicTable.js @@ -1,552 +1,552 @@ -import { LitElement, css, html, unsafeCSS } from "lit"; -import { styleMap } from "lit/directives/style-map.js"; -import { header } from "./forms/utils"; -import { checkStatus } from "../validation"; -import { emojiFontFamily, errorHue, warningHue } from "./globals"; - -import * as promises from "../promises"; - -import "./Button"; -import { sortTable } from "./Table"; -import tippy from "tippy.js"; - -export class BasicTable extends LitElement { - static get styles() { - return css` - :host { - width: 100%; - display: inline-block; - font-family: sans-serif; - font-size: 13px; - box-sizing: border-box; - } - - [error] { - background: hsl(${errorHue}, 100%, 90%) !important; - } - - [warning] { - background: hsl(${warningHue}, 100%, 90%) !important; - } - - [required]::after { - content: " *"; - color: #ff0033; - } - - .table-container { - position: relative; - overflow: auto; - max-height: 400px; - border: 1px solid gray; - } - - table tr:first-child td { - border-top: 0px; - } - - table { - background: white; - width: 100%; - } - - thead { - position: sticky; - top: 0; - left: 0; - } - - th { - border-right: 1px solid gray; - border-bottom: 1px solid gray; - color: #222; - font-weight: 400; - text-align: center; - white-space: nowrap; - } - - th .relative { - position: relative; - padding: 2px 8px; - user-select: none; - } - - .relative .info { - margin: 0px 5px; - font-size: 80%; - font-family: ${unsafeCSS(emojiFontFamily)}; - } - - th span { - display: inline-block; - } - - thead { - background: whitesmoke; - } - - td { - border: 1px solid gray; - border-left: none; - border-bottom: none; - background: white; - user-select: none; - } - - td > * { - display: flex; - white-space: nowrap; - color: rgb(10, 10, 10); - padding: 0px 5px; - width: 100%; - } - - [title] .relative::after { - content: "ℹ️"; - cursor: help; - display: inline-block; - margin: 0px 5px; - text-align: center; - font-size: 80%; - font-family: "Twemoji Mozilla", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", - "Noto Color Emoji", "EmojiOne Color", "Android Emoji", sans-serif; - } - - #buttons { - margin-top: 10px; - } - `; - } - - constructor({ - name, - schema, - ignore, - data, - keyColumn, - maxHeight, - validateEmptyCells, - validateOnChange, - onStatusChange, - onLoaded, - onUpdate, - editable = true, - truncated = false, - } = {}) { - super(); - this.name = name ?? "data_table"; - this.schema = schema ?? {}; - this.data = data ?? []; - this.keyColumn = keyColumn; - this.maxHeight = maxHeight ?? "unset"; - this.validateEmptyCells = validateEmptyCells ?? true; - - this.ignore = ignore ?? {}; - - if (validateOnChange) this.validateOnChange = validateOnChange; - if (onUpdate) this.onUpdate = onUpdate; - if (onStatusChange) this.onStatusChange = onStatusChange; - if (onLoaded) this.onLoaded = onLoaded; - - this.truncated = truncated; - this.editable = editable && !truncated; - } - - #schema = {}; - #itemSchema = {}; - #itemProps = {}; - - get schema() { - return this.#schema; - } - - set schema(schema = {}) { - this.#schema = schema; - this.#itemSchema = schema.items ?? {}; - this.#itemProps = { ...(this.#itemSchema.properties ?? {}) }; - } - - #rendered; - #updateRendered = (force) => - force || this.rendered === true - ? (this.rendered = new Promise((resolve) => (this.#rendered = () => resolve((this.rendered = true))))) - : this.rendered; - rendered = this.#updateRendered(true); - - #renderHeaderContent = (str) => { - const required = this.#itemSchema.required ? this.#itemSchema.required.includes(str) : false; - if (required) return html`
${header(str)}
`; - return html`
${header(str)}
`; - }; - - #renderHeader = (prop, { description, title = prop } = {}) => { - const th = document.createElement("th"); - - const required = this.#itemSchema.required ? this.#itemSchema.required.includes(prop) : false; - const container = document.createElement("div"); - container.classList.add("relative"); - const span = document.createElement("span"); - span.innerHTML = header(title); - if (required) span.setAttribute("required", ""); - container.appendChild(span); - - // Add Description Tooltip - if (description) { - const span = document.createElement("span"); - span.classList.add("info"); - span.innerText = "ℹ️"; - container.append(span); - tippy(span, { content: `${description[0].toUpperCase() + description.slice(1)}`, allowHTML: true }); - } - - th.appendChild(container); - - return th; - }; - - #getRowData(row, cols = this.colHeaders) { - const hasRow = row in this.data; - return cols.map((col, j) => { - let value; - if (col === this.keyColumn) { - if (hasRow) value = row; - else return; - } else - value = - (hasRow ? this.data[row][col] : undefined) ?? - // this.globals[col] ?? - this.#itemSchema.properties[col]?.default; - return value; - }); - } - - #getData(rows = Object.keys(this.data), cols = this.colHeaders) { - return rows.map((row, i) => this.#getRowData(row, cols)); - } - - // Validation Code - - #checkStatus = () => { - const hasWarning = this.shadowRoot.querySelector("[warning]"); - const hasError = this.shadowRoot.querySelector("[error]"); - checkStatus.call(this, hasWarning, hasError); - }; - - validate = () => { - let message; - - const errors = Array.from(this.shadowRoot.querySelectorAll("[error]")); - const len = errors.length; - if (len === 1) message = errors[0].title || "An error exists on this table."; - else if (len) { - message = `${len} errors exist on this table.`; - console.error(Array.from(errors).map((error) => error.title)); - } - - if (message) throw new Error(message); - }; - - status; - onStatusChange = () => {}; - onLoaded = () => {}; - - #getType = (value, { type, data_type } = {}) => { - let inferred = typeof value; - if (Array.isArray(value)) inferred = "array"; - if (value == undefined) inferred = "null"; - - const original = type || data_type; - let resolved = original; - - // Handle based on JSON Schema types - if (type) { - if (resolved === "integer") resolved = "number"; // Map to javascript type - } else if (data_type) { - if (resolved.includes("array")) resolved = "array"; - if (resolved.includes("int") || resolved.includes("float")) resolved = "number"; - if (resolved.startsWith("bool")) resolved = "boolean"; - if (resolved.startsWith("str")) resolved = "string"; - } - - return { - type: resolved, - original, - inferred, - }; - }; - - #validateCell = (value, col, row, parent) => { - if (!value && !this.validateEmptyCells) return true; // Empty cells are valid - if (!this.validateOnChange) return true; - - let result; - - const propInfo = this.#itemProps[col] ?? {}; - - let { type, original, inferred } = this.#getType(value, propInfo); - - const isUndefined = value === undefined || value === ""; - - // Check if required - if (isUndefined && "required" in this.#itemSchema && this.#itemSchema.required.includes(col)) - result = [{ message: `${col} is a required property`, type: "error" }]; - // If not required, check matching types (if provided) for values that are defined - else if (!isUndefined && type && inferred !== type) - result = [{ message: `${col} is expected to be of type ${original}, not ${inferred}`, type: "error" }]; - // Otherwise validate using the specified onChange function - else result = this.validateOnChange([row, col], parent, value, this.#itemProps[col]); - - // Will run synchronously if not a promise result - return promises.resolve(result, (result) => { - let info = { - title: undefined, - warning: undefined, - error: undefined, - }; - - const warnings = Array.isArray(result) ? result.filter((info) => info.type === "warning") : []; - const errors = Array.isArray(result) ? result?.filter((info) => info.type === "error") : []; - - if (result === false) errors.push({ message: "Cell is invalid" }); - - if (errors.length) { - info.error = ""; - info.title = errors.map((error) => error.message).join("\n"); // Class switching handled automatically - } else if (warnings.length) { - info.warning = ""; - info.title = warnings.map((warning) => warning.message).join("\n"); - } - - if (typeof result === "function") result(); // Run if returned value is a function - - return info; - }); - }; - - async updated() { - const rows = Object.keys(this.data); - - const results = this.#data.map((v, i) => { - return v.map((vv, j) => { - const info = this.#validateCell(vv, this.colHeaders[j], i, { ...this.data[rows[i]] }); // Could be a promise or a basic response - return promises.resolve(info, (info) => { - if (info === true) return; - const td = this.shadowRoot.getElementById(`i${i}_j${j}`); - if (td) { - const message = info.title; - delete info.title; - - if (td._tippy) { - td._tippy.destroy(); - td.removeAttribute("data-message"); - } - - if (message !== undefined) { - tippy(td, { content: message, allowHTML: true }); - td.setAttribute("data-message", message); - } - - for (let key in info) { - const value = info[key]; - if (value === undefined) td.removeAttribute(key); - else td.setAttribute(key, info[key]); - } - } - }); - }); - }); - - promises.resolveAll(results, () => { - this.#checkStatus(); - this.#rendered(true); - this.onLoaded(); - }); - } - - #keys = []; - #data = []; - - #getTSV = () => { - const data = this.#data; - let keys = [...this.#keys]; - - const sections = [ - keys.map((k) => k).join("\t"), - data - .map((row, i) => { - const mapped = row.map((col) => (typeof col !== "string" ? JSON.stringify(col) : col)); - return mapped.join("\t"); - }) - .join("\n"), - ]; - - return sections.filter((v) => v).join("\n"); - }; - - #readTSV(text) { - console.log(text, text.split("\n")); - let data = text.split("\n").map((row) => - row.split("\t").map((v) => { - try { - return eval(v); - } catch { - return v.trim(); - } - }) - ); // Map to actual values using JSON.parse - - let header = data.shift(); - - const structuredData = data.map((row) => - row.reduce((acc, col, i) => { - acc[header[i]] = col; - return acc; - }, {}) - ); - - Object.keys(this.data).forEach((row) => delete this.data[row]); // Delete all previous rows - - Object.keys(data).forEach((row) => { - const cols = structuredData[row]; - const latest = (this.data[this.keyColumn ? cols[this.keyColumn] : row] = {}); - Object.entries(cols).forEach(([key, value]) => { - // if (key in this.#itemProps) { - const { type } = this.#getType(value, this.#itemProps[key]); - if (type === "string") { - if (value === undefined) value = ""; - else value = `${value}`; // Convert to string if necessary - } - latest[key] = value; - // } - }); // Only include data from schema - }); - - if (this.onUpdate) this.onUpdate([], data); // Update the whole table - } - - // Render Code - render() { - this.#updateRendered(); - - this.schema = this.schema; // Always update the schema - const entries = this.#itemProps; - - if (this.truncated) this.data = this.data.slice(0, 5); // Limit to 5 rows when truncated - - // Add existing additional properties to the entries variable if necessary - if (this.#itemSchema.additionalProperties) { - Object.values(this.data).reduce((acc, v) => { - Object.keys(v).forEach((k) => - !(k in entries) - ? (entries[k] = { - type: typeof v[k], - }) - : "" - ); - return acc; - }, entries); - } - - // Ignore any additions in the ignore configuration - for (let key in this.ignore) delete entries[key]; - for (let key in this.ignore["*"] ?? {}) delete entries[key]; - - // Sort Columns by Key Column and Requirement - const keys = - (this.#keys = - this.colHeaders = - sortTable( - { - ...this.#itemSchema, - properties: entries, - }, - this.keyColumn, - this.#itemSchema.order - )); - - // Try to guess the key column if unspecified - if (!Array.isArray(this.data) && !this.keyColumn) { - const [key, value] = Object.entries(this.data)[0]; - const foundKey = Object.keys(value).find((k) => value[k] === key); - if (foundKey) this.keyColumn = foundKey; - } - - const data = (this.#data = this.#getData()); - - const description = this.#schema.description; - - return html` - ${description - ? html`

- ${description} -

` - : ""} -
- - - - ${keys.map((str, i) => this.#renderHeader(str, entries[keys[i]]))} - - - - ${data.map( - (row, i) => - html` - ${row.map( - (col, j) => html`` - )} - ` - )} - -
${JSON.stringify(col)}
-
- ${this.editable - ? html`
- { - const input = document.createElement("input"); - input.type = "file"; - input.accept = "text/tab-separated-values"; - input.click(); - input.onchange = () => { - const file = input.files[0]; - const reader = new FileReader(); - reader.onload = () => { - this.#readTSV(reader.result); - this.requestUpdate(); - }; - reader.readAsText(file); - }; - }} - >Upload TSV File - { - const tsv = this.#getTSV(); - - const element = document.createElement("a"); - element.setAttribute( - "href", - "data:text/tab-separated-values;charset=utf-8," + encodeURIComponent(tsv) - ); - element.setAttribute("download", `${this.name.split(" ").join("_")}.tsv`); - element.style.display = "none"; - document.body.appendChild(element); - element.click(); - document.body.removeChild(element); - }} - >Download TSV File -
` - : ""} - ${this.truncated - ? html`

...

` - : ""} - `; - } -} - -customElements.get("nwb-basic-table") || customElements.define("nwb-basic-table", BasicTable); +import { LitElement, css, html, unsafeCSS } from "lit"; +import { styleMap } from "lit/directives/style-map.js"; +import { header } from "./forms/utils"; +import { checkStatus } from "../validation"; +import { emojiFontFamily, errorHue, warningHue } from "./globals"; + +import * as promises from "../promises"; + +import "./Button"; +import { sortTable } from "./Table"; +import tippy from "tippy.js"; + +export class BasicTable extends LitElement { + static get styles() { + return css` + :host { + width: 100%; + display: inline-block; + font-family: sans-serif; + font-size: 13px; + box-sizing: border-box; + } + + [error] { + background: hsl(${errorHue}, 100%, 90%) !important; + } + + [warning] { + background: hsl(${warningHue}, 100%, 90%) !important; + } + + [required]::after { + content: " *"; + color: #ff0033; + } + + .table-container { + position: relative; + overflow: auto; + max-height: 400px; + border: 1px solid gray; + } + + table tr:first-child td { + border-top: 0px; + } + + table { + background: white; + width: 100%; + } + + thead { + position: sticky; + top: 0; + left: 0; + } + + th { + border-right: 1px solid gray; + border-bottom: 1px solid gray; + color: #222; + font-weight: 400; + text-align: center; + white-space: nowrap; + } + + th .relative { + position: relative; + padding: 2px 8px; + user-select: none; + } + + .relative .info { + margin: 0px 5px; + font-size: 80%; + font-family: ${unsafeCSS(emojiFontFamily)}; + } + + th span { + display: inline-block; + } + + thead { + background: whitesmoke; + } + + td { + border: 1px solid gray; + border-left: none; + border-bottom: none; + background: white; + user-select: none; + } + + td > * { + display: flex; + white-space: nowrap; + color: rgb(10, 10, 10); + padding: 0px 5px; + width: 100%; + } + + [title] .relative::after { + content: "ℹ️"; + cursor: help; + display: inline-block; + margin: 0px 5px; + text-align: center; + font-size: 80%; + font-family: "Twemoji Mozilla", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", + "Noto Color Emoji", "EmojiOne Color", "Android Emoji", sans-serif; + } + + #buttons { + margin-top: 10px; + } + `; + } + + constructor({ + name, + schema, + ignore, + data, + keyColumn, + maxHeight, + validateEmptyCells, + validateOnChange, + onStatusChange, + onLoaded, + onUpdate, + editable = true, + truncated = false, + } = {}) { + super(); + this.name = name ?? "data_table"; + this.schema = schema ?? {}; + this.data = data ?? []; + this.keyColumn = keyColumn; + this.maxHeight = maxHeight ?? "unset"; + this.validateEmptyCells = validateEmptyCells ?? true; + + this.ignore = ignore ?? {}; + + if (validateOnChange) this.validateOnChange = validateOnChange; + if (onUpdate) this.onUpdate = onUpdate; + if (onStatusChange) this.onStatusChange = onStatusChange; + if (onLoaded) this.onLoaded = onLoaded; + + this.truncated = truncated; + this.editable = editable && !truncated; + } + + #schema = {}; + #itemSchema = {}; + #itemProps = {}; + + get schema() { + return this.#schema; + } + + set schema(schema = {}) { + this.#schema = schema; + this.#itemSchema = schema.items ?? {}; + this.#itemProps = { ...(this.#itemSchema.properties ?? {}) }; + } + + #rendered; + #updateRendered = (force) => + force || this.rendered === true + ? (this.rendered = new Promise((resolve) => (this.#rendered = () => resolve((this.rendered = true))))) + : this.rendered; + rendered = this.#updateRendered(true); + + #renderHeaderContent = (str) => { + const required = this.#itemSchema.required ? this.#itemSchema.required.includes(str) : false; + if (required) return html`
${header(str)}
`; + return html`
${header(str)}
`; + }; + + #renderHeader = (prop, { description, title = prop } = {}) => { + const th = document.createElement("th"); + + const required = this.#itemSchema.required ? this.#itemSchema.required.includes(prop) : false; + const container = document.createElement("div"); + container.classList.add("relative"); + const span = document.createElement("span"); + span.innerHTML = header(title); + if (required) span.setAttribute("required", ""); + container.appendChild(span); + + // Add Description Tooltip + if (description) { + const span = document.createElement("span"); + span.classList.add("info"); + span.innerText = "ℹ️"; + container.append(span); + tippy(span, { content: `${description[0].toUpperCase() + description.slice(1)}`, allowHTML: true }); + } + + th.appendChild(container); + + return th; + }; + + #getRowData(row, cols = this.colHeaders) { + const hasRow = row in this.data; + return cols.map((col, j) => { + let value; + if (col === this.keyColumn) { + if (hasRow) value = row; + else return; + } else + value = + (hasRow ? this.data[row][col] : undefined) ?? + // this.globals[col] ?? + this.#itemSchema.properties[col]?.default; + return value; + }); + } + + #getData(rows = Object.keys(this.data), cols = this.colHeaders) { + return rows.map((row, i) => this.#getRowData(row, cols)); + } + + // Validation Code + + #checkStatus = () => { + const hasWarning = this.shadowRoot.querySelector("[warning]"); + const hasError = this.shadowRoot.querySelector("[error]"); + checkStatus.call(this, hasWarning, hasError); + }; + + validate = () => { + let message; + + const errors = Array.from(this.shadowRoot.querySelectorAll("[error]")); + const len = errors.length; + if (len === 1) message = errors[0].title || "An error exists on this table."; + else if (len) { + message = `${len} errors exist on this table.`; + console.error(Array.from(errors).map((error) => error.title)); + } + + if (message) throw new Error(message); + }; + + status; + onStatusChange = () => {}; + onLoaded = () => {}; + + #getType = (value, { type, data_type } = {}) => { + let inferred = typeof value; + if (Array.isArray(value)) inferred = "array"; + if (value == undefined) inferred = "null"; + + const original = type || data_type; + let resolved = original; + + // Handle based on JSON Schema types + if (type) { + if (resolved === "integer") resolved = "number"; // Map to javascript type + } else if (data_type) { + if (resolved.includes("array")) resolved = "array"; + if (resolved.includes("int") || resolved.includes("float")) resolved = "number"; + if (resolved.startsWith("bool")) resolved = "boolean"; + if (resolved.startsWith("str")) resolved = "string"; + } + + return { + type: resolved, + original, + inferred, + }; + }; + + #validateCell = (value, col, row, parent) => { + if (!value && !this.validateEmptyCells) return true; // Empty cells are valid + if (!this.validateOnChange) return true; + + let result; + + const propInfo = this.#itemProps[col] ?? {}; + + let { type, original, inferred } = this.#getType(value, propInfo); + + const isUndefined = value === undefined || value === ""; + + // Check if required + if (isUndefined && "required" in this.#itemSchema && this.#itemSchema.required.includes(col)) + result = [{ message: `${col} is a required property`, type: "error" }]; + // If not required, check matching types (if provided) for values that are defined + else if (!isUndefined && type && inferred !== type) + result = [{ message: `${col} is expected to be of type ${original}, not ${inferred}`, type: "error" }]; + // Otherwise validate using the specified onChange function + else result = this.validateOnChange([row, col], parent, value, this.#itemProps[col]); + + // Will run synchronously if not a promise result + return promises.resolve(result, (result) => { + let info = { + title: undefined, + warning: undefined, + error: undefined, + }; + + const warnings = Array.isArray(result) ? result.filter((info) => info.type === "warning") : []; + const errors = Array.isArray(result) ? result?.filter((info) => info.type === "error") : []; + + if (result === false) errors.push({ message: "Cell is invalid" }); + + if (errors.length) { + info.error = ""; + info.title = errors.map((error) => error.message).join("\n"); // Class switching handled automatically + } else if (warnings.length) { + info.warning = ""; + info.title = warnings.map((warning) => warning.message).join("\n"); + } + + if (typeof result === "function") result(); // Run if returned value is a function + + return info; + }); + }; + + async updated() { + const rows = Object.keys(this.data); + + const results = this.#data.map((v, i) => { + return v.map((vv, j) => { + const info = this.#validateCell(vv, this.colHeaders[j], i, { ...this.data[rows[i]] }); // Could be a promise or a basic response + return promises.resolve(info, (info) => { + if (info === true) return; + const td = this.shadowRoot.getElementById(`i${i}_j${j}`); + if (td) { + const message = info.title; + delete info.title; + + if (td._tippy) { + td._tippy.destroy(); + td.removeAttribute("data-message"); + } + + if (message !== undefined) { + tippy(td, { content: message, allowHTML: true }); + td.setAttribute("data-message", message); + } + + for (let key in info) { + const value = info[key]; + if (value === undefined) td.removeAttribute(key); + else td.setAttribute(key, info[key]); + } + } + }); + }); + }); + + promises.resolveAll(results, () => { + this.#checkStatus(); + this.#rendered(true); + this.onLoaded(); + }); + } + + #keys = []; + #data = []; + + #getTSV = () => { + const data = this.#data; + let keys = [...this.#keys]; + + const sections = [ + keys.map((k) => k).join("\t"), + data + .map((row, i) => { + const mapped = row.map((col) => (typeof col !== "string" ? JSON.stringify(col) : col)); + return mapped.join("\t"); + }) + .join("\n"), + ]; + + return sections.filter((v) => v).join("\n"); + }; + + #readTSV(text) { + console.log(text, text.split("\n")); + let data = text.split("\n").map((row) => + row.split("\t").map((v) => { + try { + return eval(v); + } catch { + return v.trim(); + } + }) + ); // Map to actual values using JSON.parse + + let header = data.shift(); + + const structuredData = data.map((row) => + row.reduce((acc, col, i) => { + acc[header[i]] = col; + return acc; + }, {}) + ); + + Object.keys(this.data).forEach((row) => delete this.data[row]); // Delete all previous rows + + Object.keys(data).forEach((row) => { + const cols = structuredData[row]; + const latest = (this.data[this.keyColumn ? cols[this.keyColumn] : row] = {}); + Object.entries(cols).forEach(([key, value]) => { + // if (key in this.#itemProps) { + const { type } = this.#getType(value, this.#itemProps[key]); + if (type === "string") { + if (value === undefined) value = ""; + else value = `${value}`; // Convert to string if necessary + } + latest[key] = value; + // } + }); // Only include data from schema + }); + + if (this.onUpdate) this.onUpdate([], data); // Update the whole table + } + + // Render Code + render() { + this.#updateRendered(); + + this.schema = this.schema; // Always update the schema + const entries = this.#itemProps; + + if (this.truncated) this.data = this.data.slice(0, 5); // Limit to 5 rows when truncated + + // Add existing additional properties to the entries variable if necessary + if (this.#itemSchema.additionalProperties) { + Object.values(this.data).reduce((acc, v) => { + Object.keys(v).forEach((k) => + !(k in entries) + ? (entries[k] = { + type: typeof v[k], + }) + : "" + ); + return acc; + }, entries); + } + + // Ignore any additions in the ignore configuration + for (let key in this.ignore) delete entries[key]; + for (let key in this.ignore["*"] ?? {}) delete entries[key]; + + // Sort Columns by Key Column and Requirement + const keys = + (this.#keys = + this.colHeaders = + sortTable( + { + ...this.#itemSchema, + properties: entries, + }, + this.keyColumn, + this.#itemSchema.order + )); + + // Try to guess the key column if unspecified + if (!Array.isArray(this.data) && !this.keyColumn) { + const [key, value] = Object.entries(this.data)[0]; + const foundKey = Object.keys(value).find((k) => value[k] === key); + if (foundKey) this.keyColumn = foundKey; + } + + const data = (this.#data = this.#getData()); + + const description = this.#schema.description; + + return html` + ${description + ? html`

+ ${description} +

` + : ""} +
+ + + + ${keys.map((str, i) => this.#renderHeader(str, entries[keys[i]]))} + + + + ${data.map( + (row, i) => + html` + ${row.map( + (col, j) => html`` + )} + ` + )} + +
${JSON.stringify(col)}
+
+ ${this.editable + ? html`
+ { + const input = document.createElement("input"); + input.type = "file"; + input.accept = "text/tab-separated-values"; + input.click(); + input.onchange = () => { + const file = input.files[0]; + const reader = new FileReader(); + reader.onload = () => { + this.#readTSV(reader.result); + this.requestUpdate(); + }; + reader.readAsText(file); + }; + }} + >Upload TSV File + { + const tsv = this.#getTSV(); + + const element = document.createElement("a"); + element.setAttribute( + "href", + "data:text/tab-separated-values;charset=utf-8," + encodeURIComponent(tsv) + ); + element.setAttribute("download", `${this.name.split(" ").join("_")}.tsv`); + element.style.display = "none"; + document.body.appendChild(element); + element.click(); + document.body.removeChild(element); + }} + >Download TSV File +
` + : ""} + ${this.truncated + ? html`

...

` + : ""} + `; + } +} + +customElements.get("nwb-basic-table") || customElements.define("nwb-basic-table", BasicTable); diff --git a/src/electron/renderer/src/stories/Button.js b/src/electron/renderer/src/stories/Button.js index cc984e12b..4dbf7afb5 100644 --- a/src/electron/renderer/src/stories/Button.js +++ b/src/electron/renderer/src/stories/Button.js @@ -1,122 +1,122 @@ -import { LitElement, html, css } from "lit"; -import { styleMap } from "lit/directives/style-map.js"; -import { unsafeHTML } from "lit/directives/unsafe-html.js"; - -export class Button extends LitElement { - constructor({ icon = null, primary, label, color = null, size, onClick, buttonStyles } = {}) { - super(); - this.icon = icon; - this.label = label; - this.primary = primary; - this.color = color; - this.size = size; - this.onClick = onClick; - this.buttonStyles = buttonStyles || {}; - } - - static get styles() { - return css` - :host { - display: inline-block; - } - - .storybook-button { - padding: 10px 15px; - font-family: "Nunito Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight: 700; - border: 0; - border-radius: 5px; - cursor: pointer; - line-height: 1; - display: flex; - align-items: center; - justify-content: center; - } - - .with-icon { - margin-left: 5px; - } - - svg { - margin: 0px !important; - width: auto; - height: 20px; - } - - .storybook-button--primary { - color: white; - background-color: hsl(190, 60%, 36%); - } - .storybook-button--secondary { - color: #333; - background-color: transparent; - box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset; - } - .storybook-button--extra-small { - font-size: 10px; - padding: 7px 12px; - } - - .storybook-button--small { - font-size: 12px; - padding: 10px 16px; - } - .storybook-button--medium { - font-size: 14px; - padding: 11px 20px; - } - .storybook-button--large { - font-size: 16px; - padding: 12px 24px; - } - - [disabled] { - opacity: 50%; - cursor: default; - } - `; - } - - static get properties() { - return { - primary: { type: Boolean }, - color: { type: String }, - size: { type: String }, - onClick: { type: Function }, - label: { type: String }, - icon: { type: String }, - disabled: { type: Boolean }, - }; - } - - render() { - const mode = this.primary ? "storybook-button--primary" : "storybook-button--secondary"; - - return html` - - `; - } -} - -customElements.get("nwb-button") || customElements.define("nwb-button", Button); +import { LitElement, html, css } from "lit"; +import { styleMap } from "lit/directives/style-map.js"; +import { unsafeHTML } from "lit/directives/unsafe-html.js"; + +export class Button extends LitElement { + constructor({ icon = null, primary, label, color = null, size, onClick, buttonStyles } = {}) { + super(); + this.icon = icon; + this.label = label; + this.primary = primary; + this.color = color; + this.size = size; + this.onClick = onClick; + this.buttonStyles = buttonStyles || {}; + } + + static get styles() { + return css` + :host { + display: inline-block; + } + + .storybook-button { + padding: 10px 15px; + font-family: "Nunito Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 700; + border: 0; + border-radius: 5px; + cursor: pointer; + line-height: 1; + display: flex; + align-items: center; + justify-content: center; + } + + .with-icon { + margin-left: 5px; + } + + svg { + margin: 0px !important; + width: auto; + height: 20px; + } + + .storybook-button--primary { + color: white; + background-color: hsl(190, 60%, 36%); + } + .storybook-button--secondary { + color: #333; + background-color: transparent; + box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset; + } + .storybook-button--extra-small { + font-size: 10px; + padding: 7px 12px; + } + + .storybook-button--small { + font-size: 12px; + padding: 10px 16px; + } + .storybook-button--medium { + font-size: 14px; + padding: 11px 20px; + } + .storybook-button--large { + font-size: 16px; + padding: 12px 24px; + } + + [disabled] { + opacity: 50%; + cursor: default; + } + `; + } + + static get properties() { + return { + primary: { type: Boolean }, + color: { type: String }, + size: { type: String }, + onClick: { type: Function }, + label: { type: String }, + icon: { type: String }, + disabled: { type: Boolean }, + }; + } + + render() { + const mode = this.primary ? "storybook-button--primary" : "storybook-button--secondary"; + + return html` + + `; + } +} + +customElements.get("nwb-button") || customElements.define("nwb-button", Button); diff --git a/src/electron/renderer/src/stories/Button.stories.js b/src/electron/renderer/src/stories/Button.stories.js index 08dd0185a..d086481cc 100644 --- a/src/electron/renderer/src/stories/Button.stories.js +++ b/src/electron/renderer/src/stories/Button.stories.js @@ -1,49 +1,49 @@ -import { Button } from "./Button"; - -// More on how to set up stories at: https://storybook.js.org/docs/7.0/web-components/writing-stories/introduction -export default { - title: "Components/Button", - tags: ["autodocs"], - parameters: { - chromatic: { disableSnapshot: false }, - }, - argTypes: { - backgroundColor: { control: "color" }, - onClick: { action: "onClick" }, - size: { - control: { type: "select" }, - options: ["small", "medium", "large"], - }, - }, -}; - -const Template = (args) => new Button(args); - -export const Primary = Template.bind({}); - -const base = { - label: "Button", -}; - -Primary.args = { - ...base, - primary: true, -}; - -export const Secondary = Template.bind({}); - -Secondary.args = { ...base }; - -export const Large = Template.bind({}); - -Large.args = { - ...base, - size: "large", -}; - -export const Small = Template.bind({}); - -Small.args = { - ...base, - size: "small", -}; +import { Button } from "./Button"; + +// More on how to set up stories at: https://storybook.js.org/docs/7.0/web-components/writing-stories/introduction +export default { + title: "Components/Button", + tags: ["autodocs"], + parameters: { + chromatic: { disableSnapshot: false }, + }, + argTypes: { + backgroundColor: { control: "color" }, + onClick: { action: "onClick" }, + size: { + control: { type: "select" }, + options: ["small", "medium", "large"], + }, + }, +}; + +const Template = (args) => new Button(args); + +export const Primary = Template.bind({}); + +const base = { + label: "Button", +}; + +Primary.args = { + ...base, + primary: true, +}; + +export const Secondary = Template.bind({}); + +Secondary.args = { ...base }; + +export const Large = Template.bind({}); + +Large.args = { + ...base, + size: "large", +}; + +export const Small = Template.bind({}); + +Small.args = { + ...base, + size: "small", +}; diff --git a/src/electron/renderer/src/stories/Chevron.js b/src/electron/renderer/src/stories/Chevron.js index 9aa31c933..8a4358d90 100644 --- a/src/electron/renderer/src/stories/Chevron.js +++ b/src/electron/renderer/src/stories/Chevron.js @@ -1,71 +1,71 @@ -import { LitElement, css, html } from "lit"; - -export class Chevron extends LitElement { - static get styles() { - return css` - :host { - transition: 0.5s; - } - - div { - transform: translateY(-3px); - } - - div::before { - border-style: solid; - border-width: 0.2em 0.2em 0 0; - content: ""; - display: inline-block; - height: 0.45em; - left: 0.15em; - position: relative; - top: 0.8em; - transform: rotate(-45deg); - vertical-align: top; - width: 0.45em; - } - - :host([direction="right"]) div:before { - left: 0; - position: relative; - top: 0.6em; - transform: rotate(45deg); - } - - :host([direction="bottom"]) div:before { - top: 0; - top: 0.5em; - transform: rotate(135deg); - } - - :host([direction="left"]) div:before { - left: 0.25em; - top: 0.6em; - transform: rotate(-135deg); - } - `; - } - - static get properties() { - return { - direction: { - type: String, - reflect: true, - }, - }; - } - - constructor({ direction, size, color } = {}) { - super(); - - this.direction = direction ?? "right"; - this.size = size; - this.color = color; - } - - render() { - return html`
`; - } -} - -customElements.get("nwb-chevron") || customElements.define("nwb-chevron", Chevron); +import { LitElement, css, html } from "lit"; + +export class Chevron extends LitElement { + static get styles() { + return css` + :host { + transition: 0.5s; + } + + div { + transform: translateY(-3px); + } + + div::before { + border-style: solid; + border-width: 0.2em 0.2em 0 0; + content: ""; + display: inline-block; + height: 0.45em; + left: 0.15em; + position: relative; + top: 0.8em; + transform: rotate(-45deg); + vertical-align: top; + width: 0.45em; + } + + :host([direction="right"]) div:before { + left: 0; + position: relative; + top: 0.6em; + transform: rotate(45deg); + } + + :host([direction="bottom"]) div:before { + top: 0; + top: 0.5em; + transform: rotate(135deg); + } + + :host([direction="left"]) div:before { + left: 0.25em; + top: 0.6em; + transform: rotate(-135deg); + } + `; + } + + static get properties() { + return { + direction: { + type: String, + reflect: true, + }, + }; + } + + constructor({ direction, size, color } = {}) { + super(); + + this.direction = direction ?? "right"; + this.size = size; + this.color = color; + } + + render() { + return html`
`; + } +} + +customElements.get("nwb-chevron") || customElements.define("nwb-chevron", Chevron); diff --git a/src/electron/renderer/src/stories/CodeBlock.js b/src/electron/renderer/src/stories/CodeBlock.js index 6c1f8c73d..66e4f68cb 100644 --- a/src/electron/renderer/src/stories/CodeBlock.js +++ b/src/electron/renderer/src/stories/CodeBlock.js @@ -1,35 +1,35 @@ -import { LitElement, css, html } from "lit"; - -export class CodeBlock extends LitElement { - static get styles() { - return css` - :host { - display: block; - font-size: 85%; - background: #f2f1f1; - border-radius: 10px; - border: 1px solid gray; - overflow: hidden; - } - - pre { - overflow: auto; - padding: 5px 10px; - box-sizing: border-box; - user-select: text; - margin: 0; - } - `; - } - - constructor({ text = "" }) { - super(); - this.text = text; - } - - render() { - return html`
${this.text}
`; - } -} - -customElements.get("code-block") || customElements.define("code-block", CodeBlock); +import { LitElement, css, html } from "lit"; + +export class CodeBlock extends LitElement { + static get styles() { + return css` + :host { + display: block; + font-size: 85%; + background: #f2f1f1; + border-radius: 10px; + border: 1px solid gray; + overflow: hidden; + } + + pre { + overflow: auto; + padding: 5px 10px; + box-sizing: border-box; + user-select: text; + margin: 0; + } + `; + } + + constructor({ text = "" }) { + super(); + this.text = text; + } + + render() { + return html`
${this.text}
`; + } +} + +customElements.get("code-block") || customElements.define("code-block", CodeBlock); diff --git a/src/electron/renderer/src/stories/DandiResults.js b/src/electron/renderer/src/stories/DandiResults.js index 9f99b63d0..37229cc08 100644 --- a/src/electron/renderer/src/stories/DandiResults.js +++ b/src/electron/renderer/src/stories/DandiResults.js @@ -1,113 +1,113 @@ -import { LitElement, css, html } from "lit"; - -import { get } from "dandi"; -import { isStaging } from "./pages/uploads/utils"; - -export class DandiResults extends LitElement { - static get styles() { - return css` - :host { - display: block; - } - `; - } - - constructor(props = {}) { - super(); - Object.assign(this, props); - } - - async updated() { - const handleClass = (str, info) => { - let value = info[str]; - if (str === "modified") value = new Date(value).toString(); - - const elements = this.shadowRoot.querySelectorAll(`.${str}`); - elements.forEach((element) => { - element.innerText = value; - - if (element.tagName === "A") { - if (str === "doi") value = `http://doi.org/${value}`; - element.href = value; - element.target = "_blank"; - } - }); - }; - - const elIds = ["name", "modified"]; - - const otherElIds = ["embargo_status"]; - - const type = isStaging(this.id) ? "staging" : undefined; - const dandiset = await get(this.id, { type }); - - otherElIds.forEach((str) => handleClass(str, dandiset)); - elIds.forEach((str) => handleClass(str, dandiset.draft_version)); - - const latestVersionInfo = dandiset.most_recent_published_version ?? dandiset.draft_version; - const info = await dandiset.getInfo({ type, version: latestVersionInfo.version }); - - const secondElIds = ["description", "url"]; - secondElIds.forEach((str) => handleClass(str, info)); - - const publicationEl = this.shadowRoot.querySelector(`.publication`); - publicationEl.innerHTML = ""; - const publications = (info.relatedResource ?? []).filter(({ relation }) => relation === "dcite:IsDescribedBy"); - - if (publications.length) - publicationEl.append( - ...(await Promise.all( - publications.map(async ({ identifier }) => { - const li = document.createElement("li"); - const { message } = await fetch( - `http://api.crossref.org/works${new URL(identifier).pathname}` - ).then((res) => res.json()); - li.innerHTML = `${message.author - .map(({ family, given }) => `${family}, ${given[0]}.`) - .join(", ")} (${message.created["date-parts"][0][0]}). ${message.title[0]}. ${ - message["container-title"] - }, ${message.volume}(${message.issue}), ${message.page}. doi:${message.DOI}`; - return li; - }) - )) - ); - else publicationEl.innerText = "N/A"; - } - - render() { - return html` -
-
-

-

- -

Identifier: ${this.id}

-

Upload Time:

-

Embargo Status:

- - URL:
- -

Related Publications

-
    - - ${this.files - ? html`

    Updated DANDI Assets

    -
      - ${Object.values(this.files) - .map((item) => Object.values(item)) - .flat() - .map(({ file }) => { - const truncated = file.split(this.id)[1].slice(1); - return html`
    1. ${truncated}
    2. `; - })} -
    ` - : ""} -
    - We encourage you to add additional metadata for your Dandiset at -
    -
    - `; - } -} - -customElements.get("dandi-results") || customElements.define("dandi-results", DandiResults); +import { LitElement, css, html } from "lit"; + +import { get } from "dandi"; +import { isStaging } from "./pages/uploads/utils"; + +export class DandiResults extends LitElement { + static get styles() { + return css` + :host { + display: block; + } + `; + } + + constructor(props = {}) { + super(); + Object.assign(this, props); + } + + async updated() { + const handleClass = (str, info) => { + let value = info[str]; + if (str === "modified") value = new Date(value).toString(); + + const elements = this.shadowRoot.querySelectorAll(`.${str}`); + elements.forEach((element) => { + element.innerText = value; + + if (element.tagName === "A") { + if (str === "doi") value = `http://doi.org/${value}`; + element.href = value; + element.target = "_blank"; + } + }); + }; + + const elIds = ["name", "modified"]; + + const otherElIds = ["embargo_status"]; + + const type = isStaging(this.id) ? "staging" : undefined; + const dandiset = await get(this.id, { type }); + + otherElIds.forEach((str) => handleClass(str, dandiset)); + elIds.forEach((str) => handleClass(str, dandiset.draft_version)); + + const latestVersionInfo = dandiset.most_recent_published_version ?? dandiset.draft_version; + const info = await dandiset.getInfo({ type, version: latestVersionInfo.version }); + + const secondElIds = ["description", "url"]; + secondElIds.forEach((str) => handleClass(str, info)); + + const publicationEl = this.shadowRoot.querySelector(`.publication`); + publicationEl.innerHTML = ""; + const publications = (info.relatedResource ?? []).filter(({ relation }) => relation === "dcite:IsDescribedBy"); + + if (publications.length) + publicationEl.append( + ...(await Promise.all( + publications.map(async ({ identifier }) => { + const li = document.createElement("li"); + const { message } = await fetch( + `http://api.crossref.org/works${new URL(identifier).pathname}` + ).then((res) => res.json()); + li.innerHTML = `${message.author + .map(({ family, given }) => `${family}, ${given[0]}.`) + .join(", ")} (${message.created["date-parts"][0][0]}). ${message.title[0]}. ${ + message["container-title"] + }, ${message.volume}(${message.issue}), ${message.page}. doi:${message.DOI}`; + return li; + }) + )) + ); + else publicationEl.innerText = "N/A"; + } + + render() { + return html` +
    +
    +

    +

    + +

    Identifier: ${this.id}

    +

    Upload Time:

    +

    Embargo Status:

    + + URL:
    + +

    Related Publications

    +
      + + ${this.files + ? html`

      Updated DANDI Assets

      +
        + ${Object.values(this.files) + .map((item) => Object.values(item)) + .flat() + .map(({ file }) => { + const truncated = file.split(this.id)[1].slice(1); + return html`
      1. ${truncated}
      2. `; + })} +
      ` + : ""} +
      + We encourage you to add additional metadata for your Dandiset at +
      +
      + `; + } +} + +customElements.get("dandi-results") || customElements.define("dandi-results", DandiResults); diff --git a/src/electron/renderer/src/stories/Dashboard.js b/src/electron/renderer/src/stories/Dashboard.js index 3ba92c90f..74a228430 100644 --- a/src/electron/renderer/src/stories/Dashboard.js +++ b/src/electron/renderer/src/stories/Dashboard.js @@ -1,434 +1,434 @@ -import { LitElement, html } from "lit"; -import useGlobalStyles from "./utils/useGlobalStyles.js"; - -import { Main, checkIfPageIsSkipped } from "./Main.js"; -import { Sidebar } from "./sidebar.js"; -import { NavigationSidebar } from "./NavigationSidebar.js"; - -// Global styles to apply with the dashboard -import "../../assets/css/variables.css"; -import "../../assets/css/nativize.css"; -import "../../assets/css/global.css"; -import "../../assets/css/nav.css"; -import "../../assets/css/section.css"; -import "../../assets/css/demo.css"; -import "../../assets/css/individualtab.css"; -import "../../assets/css/main_tabs.css"; -// import "../../node_modules/cropperjs/dist/cropper.css" -import "../../../../../node_modules/notyf/notyf.min.css"; -import "../../assets/css/spur.css"; -import "../../assets/css/main.css"; -// import "https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" -import "../../../../../node_modules/@fortawesome/fontawesome-free/css/all.css"; -// import "../../node_modules/select2/dist/css/select2.min.css" -// import "../../node_modules/@toast-ui/editor/dist/toastui-editor.css" -// import "../../node_modules/codemirror/lib/codemirror.css" -// import "../../node_modules/@yaireo/tagify/dist/tagify.css" -import "../../../../../node_modules/fomantic-ui/dist/semantic.min.css"; -import "../../../../../node_modules/fomantic-ui/dist/components/accordion.min.css"; -import "../../../../../node_modules/@sweetalert2/theme-bulma/bulma.css"; -// import "../../node_modules/intro.js/minified/introjs.min.css" -import "../../assets/css/guided.css"; -import isElectron from "../electron/check.js"; -import { isStorybook, reloadPageToHome } from "../dependencies/globals"; -import { getCurrentProjectName, updateAppProgress } from "../progress/index.js"; - -// import "https://jsuites.net/v4/jsuites.js" -// import "https://bossanova.uk/jspreadsheet/v4/jexcel.js" - -const componentCSS = ` - :host { - display: flex; - height: 100%; - width: 100%; - } - - nwb-main { - background: #fff; - border-top: 1px solid #c3c3c3; - } -`; - -export class Dashboard extends LitElement { - static get styles() { - const style = useGlobalStyles( - componentCSS, - (sheet) => sheet.href && sheet.href.includes("bootstrap"), - this.shadowRoot - ); - return style; - } - - static get properties() { - return { - renderNameInSidebar: { type: Boolean, reflect: true }, - name: { type: String, reflect: true }, - logo: { type: String, reflect: true }, - activePage: { type: String, reflect: true }, - globalState: { type: Object, reflect: true }, - }; - } - - main; - sidebar; - subSidebar; - - // Custom Getter / Setter for Subtitle - #subtitle; - set subtitle(v) { - this.#subtitle = v; - this.sidebar.subtitle = v; - } - - get subtitle() { - return this.#subtitle; - } - - pagesById = {}; - page; - - next = () => this.main.next(); - back = () => this.main.back(); - - constructor(props = {}) { - super(); - - this.main = new Main(); - this.main.classList.add("dash-app"); - - this.sidebar = new Sidebar(); - this.sidebar.onClick = (_, value) => { - const id = value.info.id; - if (this.page) this.page.to(id); - else this.setAttribute("activePage", id); - }; - - this.subSidebar = new NavigationSidebar(); - this.subSidebar.onClick = async (id) => this.page.to(id); - - this.pages = props.pages ?? {}; - this.name = props.name; - this.logo = props.logo; - this.renderNameInSidebar = props.renderNameInSidebar ?? true; - - this.globalState = props.globalState; // Impose a static global state on pages that have none - - if (props.activePage) this.setAttribute("activePage", props.activePage); - - // Handle all pop and push state updates - const pushState = window.history.pushState; - - const pushPopListener = (popEvent) => { - if (popEvent.state) { - const titleString = popEvent.state.title ?? popEvent.state.label; - document.title = `${titleString} - ${this.name}`; - const page = this.pagesById[popEvent.state.page]; // ?? this.pagesById[this.#activatePage] - if (!page) return; - if (page === this.page) return; // Do not rerender current page - this.setMain(page); - } - }; - - window.history.pushState = function (state) { - pushPopListener({ state: state }); - return pushState.apply(window.history, arguments); - }; - - window.addEventListener("popstate", pushPopListener); - window.addEventListener("pushstate", pushPopListener); - - this.#updated(); - } - - requestPageUpdate() { - if (this.page) this.page.requestUpdate(); - } - - createRenderRoot() { - return this; - } - - attributeChangedCallback(key, _, latest) { - super.attributeChangedCallback(...arguments); - if (this.sidebar && (key === "name" || key === "logo")) this.sidebar[key] = latest; - else if (key === "renderNameInSidebar") this.sidebar.renderName = latest === "true" || latest === true; - else if (key === "pages") this.#updated(latest); - else if (key.toLowerCase() === "activepage") { - if (this.page && this.page.info.parent && this.page.info.section) { - const currentProject = getCurrentProjectName(); - if (currentProject) updateAppProgress(latest, currentProject); - } - - while (latest && !this.pagesById[latest]) latest = latest.split("/").slice(0, -1).join("/"); // Trim off last character until you find a page - - // Update sidebar states - - this.sidebar.selectItem(latest); // Just highlight the item - this.sidebar.initialize = false; - this.#activatePage(latest); - return; - } else if (key.toLowerCase() === "globalstate" && this.page) { - this.page.info.globalState = JSON.parse(latest); - this.page.requestUpdate(); - } - } - - getPage(entry) { - if (!entry) return reloadPageToHome(); - const page = entry.page ?? entry; - if (page instanceof HTMLElement) return page; - else if (typeof page === "object") return this.getPage(Object.values(page)[0]); - } - - updateSections({ sidebar = true, main = false } = {}, globalState = this.page.info.globalState) { - const info = this.page.info; - let parent = info.parent; - - if (sidebar) { - this.subSidebar.sections = this.#getSections(parent.info.pages, globalState); // Update sidebar items (if changed) - } - - const { sections } = this.subSidebar; - - if (main) { - if (this.page.header) delete this.page.header.sections; // Ensure sections are updated - this.main.set({ - page: this.page, - sections, - }); - } - - return sections; - } - - setMain(page) { - window.getSelection().empty(); // Remove user selection before transitioning - - // Update Previous Page - const info = page.info; - const previous = this.page; - - // if (previous === page) return // Prevent rerendering the same page - - const isNested = info.parent && info.section; - - const toPass = {}; - if (previous) { - previous.dismiss(); // Dismiss all notifications for this page - if (previous.info.globalState) toPass.globalState = previous.info.globalState; // Pass global state over if appropriate - previous.active = false; - } - - // On initial reload, load global state if you can - if (isNested && !("globalState" in toPass)) toPass.globalState = this.globalState ?? page.load(); - - // Update Active Page - this.page = page; - - // Reset global state if page has no parent - if (!this.page.info.parent) toPass.globalState = {}; - - if (isNested) { - let parent = info.parent; - while (parent.info.parent) parent = parent.info.parent; // Lock sections to the top-level parent - this.updateSections({ sidebar: true }, toPass.globalState); - this.subSidebar.active = info.id; // Update active item (if changed) - this.sidebar.hide(true); - this.subSidebar.show(); - } else { - this.sidebar.show(); - this.subSidebar.hide(); - } - - this.page.set(toPass, false); - - this.page.checkSyncState().then(async () => { - const projectName = info.globalState?.project?.name; - - this.subSidebar.header = projectName - ? `

      ${projectName}

      Conversion Pipeline` - : projectName; - - this.updateSections({ sidebar: false, main: true }); - - if (this.#transitionPromise.value) this.#transitionPromise.trigger(page); // This ensures calls to page.to() can be properly awaited until the next page is ready - - const { skipped } = this.subSidebar.sections[info.section]?.pages?.[info.id] ?? {}; - - if (skipped) { - if (isStorybook) return; // Do not skip on storybook - - // Run skip functions - Object.entries(page.workflow).forEach(([key, state]) => { - if (typeof state.skip === "function") state.skip(); - }); - - // Skip right over the page if configured as such - if (previous && previous.info.previous === this.page) await this.page.onTransition(-1); - else await this.page.onTransition(1); - } - }); - } - - // Populate the sections tracked for this page by using the global state as a model - #getSections = (pages = {}, globalState = {}) => { - if (!globalState.sections) globalState.sections = {}; - - Object.entries(pages).forEach(([id, page]) => { - const info = page.info; - if (info.id) id = info.id; - - if (info.section) { - const section = info.section; - - let state = globalState.sections[section]; - if (!state) state = globalState.sections[section] = { open: false, active: false, pages: {} }; - - let pageState = state.pages[id]; - if (!pageState) - pageState = state.pages[id] = { - visited: false, - active: false, - saved: false, - pageLabel: page.info.label, - pageTitle: page.info.title, - }; - - info.states = pageState; - - state.active = false; - pageState.active = false; - - // Check if page is skipped based on workflow state (if applicable) - pageState.skipped = checkIfPageIsSkipped(page, globalState.project?.workflow); - - if (page.info.pages) this.#getSections(page.info.pages, globalState); // Show all states - - if (!("visited" in pageState)) pageState.visited = false; - if (id === this.page.info.id) state.active = pageState.visited = pageState.active = true; // Set active page as visited - } - }); - - return (globalState.sections = { ...globalState.sections }); // Update global state with new reference (to ensure re-render) - }; - - #transitionPromise = {}; - - #updated(pages = this.pages) { - const url = new URL(window.location.href); - let active = url.pathname.slice(1); - if (isElectron || isStorybook) active = new URLSearchParams(url.search).get("page"); - if (!active) active = this.activePage; // default to active page - - this.main.onTransition = async (transition) => { - const promise = (this.#transitionPromise.value = new Promise( - (resolve) => (this.#transitionPromise.trigger = resolve) - )); - - if (typeof transition === "number") { - const info = this.page.info; - const sign = Math.sign(transition); - if (sign === 1) transition = info.next.info.id; - else if (sign === -1) transition = (info.previous ?? info.parent).info.id; // Default to back in time - } - - this.setAttribute("activePage", transition); - - return promise; - }; - - this.main.updatePages = () => { - this.#updated(); // Rerender with new pages - this.setAttribute("activePage", this.page.info.id); // Re-render the current page - }; - - this.pagesById = {}; - Object.entries(pages).forEach((arr) => this.addPage(this.pagesById, arr)); - this.sidebar.pages = pages; - - if (active) this.setAttribute("activePage", active); - } - - #activatePage = (id) => { - const page = this.getPage(this.pagesById[id]); - - if (page) { - const { id, label } = page.info; - const queries = new URLSearchParams(window.location.search); - queries.set("page", id); - const project = queries.get("project"); - const value = - isElectron || isStorybook - ? `?${queries}` - : `${window.location.origin}/${id === "/" ? "" : id}?${queries}`; - history.pushState({ page: id, label, project }, label, value); - } - }; - - // Track Pages By Id - addPage = (acc, arr) => { - let [id, page] = arr; - - const info = page.info; - - if (info.id) id = info.id; - else page.info.id = id; // update id - - const pages = info.pages; - - // NOTE: This is not true for nested pages with more info... - if (page instanceof HTMLElement) acc[id] = page; - - if (pages) { - const pagesArr = Object.values(pages); - - const originalNext = page.info.next; - page.info.next = pagesArr[0]; // Next is the first nested page - - // Update info with relative information - Object.entries(pages).forEach(([newId, nestedPage], i) => { - nestedPage.info.base = id; - - const previousPage = pagesArr[i - 1]; - nestedPage.info.previous = - (previousPage?.info?.pages ? Object.values(previousPage.info.pages).pop() : previousPage) ?? page; // Previous is the previous nested page or the parent page - nestedPage.info.next = pagesArr[i + 1] ?? originalNext; // Next is the next nested page or the original next page - nestedPage.info.id = `${id}/${newId}`; - nestedPage.info.parent = page; - }); - - // Register all pages - Object.entries(pages).forEach((arr) => this.addPage(acc, arr)); - } - - return acc; - }; - - #first = true; - updated() { - if (this.#first) { - this.#first = false; - this.#updated(); - } - } - - render() { - this.style.width = "100%"; - this.style.height = "100%"; - this.style.display = "grid"; - this.style.gridTemplateColumns = "fit-content(0px) 1fr"; - this.style.position = "relative"; - this.main.style.height = "100vh"; - - if (this.name) this.sidebar.name = this.name; - if (this.logo) this.sidebar.logo = this.logo; - if ("renderNameInSidebar" in this) this.sidebar.renderName = this.renderNameInSidebar; - - return html` -
      ${this.sidebar} ${this.subSidebar}
      - ${this.main} - `; - } -} - -customElements.get("nwb-dashboard") || customElements.define("nwb-dashboard", Dashboard); +import { LitElement, html } from "lit"; +import useGlobalStyles from "./utils/useGlobalStyles.js"; + +import { Main, checkIfPageIsSkipped } from "./Main.js"; +import { Sidebar } from "./sidebar.js"; +import { NavigationSidebar } from "./NavigationSidebar.js"; + +// Global styles to apply with the dashboard +import "../../assets/css/variables.css"; +import "../../assets/css/nativize.css"; +import "../../assets/css/global.css"; +import "../../assets/css/nav.css"; +import "../../assets/css/section.css"; +import "../../assets/css/demo.css"; +import "../../assets/css/individualtab.css"; +import "../../assets/css/main_tabs.css"; +// import "../../node_modules/cropperjs/dist/cropper.css" +import "../../../../../node_modules/notyf/notyf.min.css"; +import "../../assets/css/spur.css"; +import "../../assets/css/main.css"; +// import "https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" +import "../../../../../node_modules/@fortawesome/fontawesome-free/css/all.css"; +// import "../../node_modules/select2/dist/css/select2.min.css" +// import "../../node_modules/@toast-ui/editor/dist/toastui-editor.css" +// import "../../node_modules/codemirror/lib/codemirror.css" +// import "../../node_modules/@yaireo/tagify/dist/tagify.css" +import "../../../../../node_modules/fomantic-ui/dist/semantic.min.css"; +import "../../../../../node_modules/fomantic-ui/dist/components/accordion.min.css"; +import "../../../../../node_modules/@sweetalert2/theme-bulma/bulma.css"; +// import "../../node_modules/intro.js/minified/introjs.min.css" +import "../../assets/css/guided.css"; +import isElectron from "../electron/check.js"; +import { isStorybook, reloadPageToHome } from "../dependencies/globals"; +import { getCurrentProjectName, updateAppProgress } from "../progress/index.js"; + +// import "https://jsuites.net/v4/jsuites.js" +// import "https://bossanova.uk/jspreadsheet/v4/jexcel.js" + +const componentCSS = ` + :host { + display: flex; + height: 100%; + width: 100%; + } + + nwb-main { + background: #fff; + border-top: 1px solid #c3c3c3; + } +`; + +export class Dashboard extends LitElement { + static get styles() { + const style = useGlobalStyles( + componentCSS, + (sheet) => sheet.href && sheet.href.includes("bootstrap"), + this.shadowRoot + ); + return style; + } + + static get properties() { + return { + renderNameInSidebar: { type: Boolean, reflect: true }, + name: { type: String, reflect: true }, + logo: { type: String, reflect: true }, + activePage: { type: String, reflect: true }, + globalState: { type: Object, reflect: true }, + }; + } + + main; + sidebar; + subSidebar; + + // Custom Getter / Setter for Subtitle + #subtitle; + set subtitle(v) { + this.#subtitle = v; + this.sidebar.subtitle = v; + } + + get subtitle() { + return this.#subtitle; + } + + pagesById = {}; + page; + + next = () => this.main.next(); + back = () => this.main.back(); + + constructor(props = {}) { + super(); + + this.main = new Main(); + this.main.classList.add("dash-app"); + + this.sidebar = new Sidebar(); + this.sidebar.onClick = (_, value) => { + const id = value.info.id; + if (this.page) this.page.to(id); + else this.setAttribute("activePage", id); + }; + + this.subSidebar = new NavigationSidebar(); + this.subSidebar.onClick = async (id) => this.page.to(id); + + this.pages = props.pages ?? {}; + this.name = props.name; + this.logo = props.logo; + this.renderNameInSidebar = props.renderNameInSidebar ?? true; + + this.globalState = props.globalState; // Impose a static global state on pages that have none + + if (props.activePage) this.setAttribute("activePage", props.activePage); + + // Handle all pop and push state updates + const pushState = window.history.pushState; + + const pushPopListener = (popEvent) => { + if (popEvent.state) { + const titleString = popEvent.state.title ?? popEvent.state.label; + document.title = `${titleString} - ${this.name}`; + const page = this.pagesById[popEvent.state.page]; // ?? this.pagesById[this.#activatePage] + if (!page) return; + if (page === this.page) return; // Do not rerender current page + this.setMain(page); + } + }; + + window.history.pushState = function (state) { + pushPopListener({ state: state }); + return pushState.apply(window.history, arguments); + }; + + window.addEventListener("popstate", pushPopListener); + window.addEventListener("pushstate", pushPopListener); + + this.#updated(); + } + + requestPageUpdate() { + if (this.page) this.page.requestUpdate(); + } + + createRenderRoot() { + return this; + } + + attributeChangedCallback(key, _, latest) { + super.attributeChangedCallback(...arguments); + if (this.sidebar && (key === "name" || key === "logo")) this.sidebar[key] = latest; + else if (key === "renderNameInSidebar") this.sidebar.renderName = latest === "true" || latest === true; + else if (key === "pages") this.#updated(latest); + else if (key.toLowerCase() === "activepage") { + if (this.page && this.page.info.parent && this.page.info.section) { + const currentProject = getCurrentProjectName(); + if (currentProject) updateAppProgress(latest, currentProject); + } + + while (latest && !this.pagesById[latest]) latest = latest.split("/").slice(0, -1).join("/"); // Trim off last character until you find a page + + // Update sidebar states + + this.sidebar.selectItem(latest); // Just highlight the item + this.sidebar.initialize = false; + this.#activatePage(latest); + return; + } else if (key.toLowerCase() === "globalstate" && this.page) { + this.page.info.globalState = JSON.parse(latest); + this.page.requestUpdate(); + } + } + + getPage(entry) { + if (!entry) return reloadPageToHome(); + const page = entry.page ?? entry; + if (page instanceof HTMLElement) return page; + else if (typeof page === "object") return this.getPage(Object.values(page)[0]); + } + + updateSections({ sidebar = true, main = false } = {}, globalState = this.page.info.globalState) { + const info = this.page.info; + let parent = info.parent; + + if (sidebar) { + this.subSidebar.sections = this.#getSections(parent.info.pages, globalState); // Update sidebar items (if changed) + } + + const { sections } = this.subSidebar; + + if (main) { + if (this.page.header) delete this.page.header.sections; // Ensure sections are updated + this.main.set({ + page: this.page, + sections, + }); + } + + return sections; + } + + setMain(page) { + window.getSelection().empty(); // Remove user selection before transitioning + + // Update Previous Page + const info = page.info; + const previous = this.page; + + // if (previous === page) return // Prevent rerendering the same page + + const isNested = info.parent && info.section; + + const toPass = {}; + if (previous) { + previous.dismiss(); // Dismiss all notifications for this page + if (previous.info.globalState) toPass.globalState = previous.info.globalState; // Pass global state over if appropriate + previous.active = false; + } + + // On initial reload, load global state if you can + if (isNested && !("globalState" in toPass)) toPass.globalState = this.globalState ?? page.load(); + + // Update Active Page + this.page = page; + + // Reset global state if page has no parent + if (!this.page.info.parent) toPass.globalState = {}; + + if (isNested) { + let parent = info.parent; + while (parent.info.parent) parent = parent.info.parent; // Lock sections to the top-level parent + this.updateSections({ sidebar: true }, toPass.globalState); + this.subSidebar.active = info.id; // Update active item (if changed) + this.sidebar.hide(true); + this.subSidebar.show(); + } else { + this.sidebar.show(); + this.subSidebar.hide(); + } + + this.page.set(toPass, false); + + this.page.checkSyncState().then(async () => { + const projectName = info.globalState?.project?.name; + + this.subSidebar.header = projectName + ? `

      ${projectName}

      Conversion Pipeline` + : projectName; + + this.updateSections({ sidebar: false, main: true }); + + if (this.#transitionPromise.value) this.#transitionPromise.trigger(page); // This ensures calls to page.to() can be properly awaited until the next page is ready + + const { skipped } = this.subSidebar.sections[info.section]?.pages?.[info.id] ?? {}; + + if (skipped) { + if (isStorybook) return; // Do not skip on storybook + + // Run skip functions + Object.entries(page.workflow).forEach(([key, state]) => { + if (typeof state.skip === "function") state.skip(); + }); + + // Skip right over the page if configured as such + if (previous && previous.info.previous === this.page) await this.page.onTransition(-1); + else await this.page.onTransition(1); + } + }); + } + + // Populate the sections tracked for this page by using the global state as a model + #getSections = (pages = {}, globalState = {}) => { + if (!globalState.sections) globalState.sections = {}; + + Object.entries(pages).forEach(([id, page]) => { + const info = page.info; + if (info.id) id = info.id; + + if (info.section) { + const section = info.section; + + let state = globalState.sections[section]; + if (!state) state = globalState.sections[section] = { open: false, active: false, pages: {} }; + + let pageState = state.pages[id]; + if (!pageState) + pageState = state.pages[id] = { + visited: false, + active: false, + saved: false, + pageLabel: page.info.label, + pageTitle: page.info.title, + }; + + info.states = pageState; + + state.active = false; + pageState.active = false; + + // Check if page is skipped based on workflow state (if applicable) + pageState.skipped = checkIfPageIsSkipped(page, globalState.project?.workflow); + + if (page.info.pages) this.#getSections(page.info.pages, globalState); // Show all states + + if (!("visited" in pageState)) pageState.visited = false; + if (id === this.page.info.id) state.active = pageState.visited = pageState.active = true; // Set active page as visited + } + }); + + return (globalState.sections = { ...globalState.sections }); // Update global state with new reference (to ensure re-render) + }; + + #transitionPromise = {}; + + #updated(pages = this.pages) { + const url = new URL(window.location.href); + let active = url.pathname.slice(1); + if (isElectron || isStorybook) active = new URLSearchParams(url.search).get("page"); + if (!active) active = this.activePage; // default to active page + + this.main.onTransition = async (transition) => { + const promise = (this.#transitionPromise.value = new Promise( + (resolve) => (this.#transitionPromise.trigger = resolve) + )); + + if (typeof transition === "number") { + const info = this.page.info; + const sign = Math.sign(transition); + if (sign === 1) transition = info.next.info.id; + else if (sign === -1) transition = (info.previous ?? info.parent).info.id; // Default to back in time + } + + this.setAttribute("activePage", transition); + + return promise; + }; + + this.main.updatePages = () => { + this.#updated(); // Rerender with new pages + this.setAttribute("activePage", this.page.info.id); // Re-render the current page + }; + + this.pagesById = {}; + Object.entries(pages).forEach((arr) => this.addPage(this.pagesById, arr)); + this.sidebar.pages = pages; + + if (active) this.setAttribute("activePage", active); + } + + #activatePage = (id) => { + const page = this.getPage(this.pagesById[id]); + + if (page) { + const { id, label } = page.info; + const queries = new URLSearchParams(window.location.search); + queries.set("page", id); + const project = queries.get("project"); + const value = + isElectron || isStorybook + ? `?${queries}` + : `${window.location.origin}/${id === "/" ? "" : id}?${queries}`; + history.pushState({ page: id, label, project }, label, value); + } + }; + + // Track Pages By Id + addPage = (acc, arr) => { + let [id, page] = arr; + + const info = page.info; + + if (info.id) id = info.id; + else page.info.id = id; // update id + + const pages = info.pages; + + // NOTE: This is not true for nested pages with more info... + if (page instanceof HTMLElement) acc[id] = page; + + if (pages) { + const pagesArr = Object.values(pages); + + const originalNext = page.info.next; + page.info.next = pagesArr[0]; // Next is the first nested page + + // Update info with relative information + Object.entries(pages).forEach(([newId, nestedPage], i) => { + nestedPage.info.base = id; + + const previousPage = pagesArr[i - 1]; + nestedPage.info.previous = + (previousPage?.info?.pages ? Object.values(previousPage.info.pages).pop() : previousPage) ?? page; // Previous is the previous nested page or the parent page + nestedPage.info.next = pagesArr[i + 1] ?? originalNext; // Next is the next nested page or the original next page + nestedPage.info.id = `${id}/${newId}`; + nestedPage.info.parent = page; + }); + + // Register all pages + Object.entries(pages).forEach((arr) => this.addPage(acc, arr)); + } + + return acc; + }; + + #first = true; + updated() { + if (this.#first) { + this.#first = false; + this.#updated(); + } + } + + render() { + this.style.width = "100%"; + this.style.height = "100%"; + this.style.display = "grid"; + this.style.gridTemplateColumns = "fit-content(0px) 1fr"; + this.style.position = "relative"; + this.main.style.height = "100vh"; + + if (this.name) this.sidebar.name = this.name; + if (this.logo) this.sidebar.logo = this.logo; + if ("renderNameInSidebar" in this) this.sidebar.renderName = this.renderNameInSidebar; + + return html` +
      ${this.sidebar} ${this.subSidebar}
      + ${this.main} + `; + } +} + +customElements.get("nwb-dashboard") || customElements.define("nwb-dashboard", Dashboard); diff --git a/src/electron/renderer/src/stories/DateTimeSelector.js b/src/electron/renderer/src/stories/DateTimeSelector.js index c81b6ecf6..7a6db0343 100644 --- a/src/electron/renderer/src/stories/DateTimeSelector.js +++ b/src/electron/renderer/src/stories/DateTimeSelector.js @@ -1,66 +1,66 @@ -import { LitElement, css } from "lit"; - -const convertToDateTimeLocalString = (date) => { - const year = date.getFullYear(); - const month = (date.getMonth() + 1).toString().padStart(2, "0"); - const day = date.getDate().toString().padStart(2, "0"); - const hours = date.getHours().toString().padStart(2, "0"); - const minutes = date.getMinutes().toString().padStart(2, "0"); - return `${year}-${month}-${day}T${hours}:${minutes}`; -}; - -export class DateTimeSelector extends LitElement { - static get styles() { - return css` - :host { - display: inline-block; - position: relative; - } - `; - } - - get value() { - return this.input.value; - } - - set value(newValue) { - if (newValue) this.input.value = newValue; - else { - const d = new Date(); - d.setHours(0, 0, 0, 0); - this.input.value = convertToDateTimeLocalString(d); - } - } - - constructor({ value, schema } = {}) { - super(); - this.input = document.createElement("input"); - this.input.type = "datetime-local"; - if (schema) { - const { min, max } = schema; - if (min) this.input.min = min; - if (max) this.input.max = max; - } - - this.addEventListener("click", () => { - this.input.focus(); - this.input.showPicker(); - }); - - this.value = value ? convertToDateTimeLocalString(value) : value; - } - - focus() { - this.click(); - } - - blur() { - this.input.blur(); - } - - render() { - return this.input; - } -} - -customElements.get("date-time-selector") || customElements.define("date-time-selector", DateTimeSelector); +import { LitElement, css } from "lit"; + +const convertToDateTimeLocalString = (date) => { + const year = date.getFullYear(); + const month = (date.getMonth() + 1).toString().padStart(2, "0"); + const day = date.getDate().toString().padStart(2, "0"); + const hours = date.getHours().toString().padStart(2, "0"); + const minutes = date.getMinutes().toString().padStart(2, "0"); + return `${year}-${month}-${day}T${hours}:${minutes}`; +}; + +export class DateTimeSelector extends LitElement { + static get styles() { + return css` + :host { + display: inline-block; + position: relative; + } + `; + } + + get value() { + return this.input.value; + } + + set value(newValue) { + if (newValue) this.input.value = newValue; + else { + const d = new Date(); + d.setHours(0, 0, 0, 0); + this.input.value = convertToDateTimeLocalString(d); + } + } + + constructor({ value, schema } = {}) { + super(); + this.input = document.createElement("input"); + this.input.type = "datetime-local"; + if (schema) { + const { min, max } = schema; + if (min) this.input.min = min; + if (max) this.input.max = max; + } + + this.addEventListener("click", () => { + this.input.focus(); + this.input.showPicker(); + }); + + this.value = value ? convertToDateTimeLocalString(value) : value; + } + + focus() { + this.click(); + } + + blur() { + this.input.blur(); + } + + render() { + return this.input; + } +} + +customElements.get("date-time-selector") || customElements.define("date-time-selector", DateTimeSelector); diff --git a/src/electron/renderer/src/stories/FileSystemSelector.js b/src/electron/renderer/src/stories/FileSystemSelector.js index 8fa45febf..036c70581 100644 --- a/src/electron/renderer/src/stories/FileSystemSelector.js +++ b/src/electron/renderer/src/stories/FileSystemSelector.js @@ -1,305 +1,305 @@ -import { LitElement, css, html } from "lit"; - -import { fs, remote } from "../electron/index"; -import { List } from "./List"; -const { dialog } = remote; - -import restartSVG from "./assets/restart.svg?raw"; -import { unsafeSVG } from "lit/directives/unsafe-svg.js"; - -function getObjectTypeReferenceString(type, multiple, { nested, native } = {}) { - if (Array.isArray(type)) - return `${multiple ? "" : "a "}${type - .map((type) => getObjectTypeReferenceString(type, multiple, { native, nested: true })) - .join(" / ")}`; - - const isDir = type === "directory"; - return multiple && (!isDir || (isDir && !native) || dialog) - ? type === "directory" - ? "directories" - : "files" - : nested - ? type - : `a ${type}`; -} - -const componentCSS = css` - * { - box-sizing: border-box; - } - - :host { - display: inline-block; - position: relative; - width: 100%; - } - - :host([manytypes="true"]) > button { - cursor: default; - } - - nwb-list { - width: 100px; - } - - #button-div { - margin-top: 10px; - display: flex; - gap: 5px; - } - - #button-div > nwb-button { - margin-bottom: 10px; - } - - button { - background: WhiteSmoke; - border: 1px solid #c3c3c3; - border-radius: 4px; - padding: 25px; - width: 100%; - color: dimgray; - cursor: pointer; - overflow-wrap: break-word; - text-align: center; - transition: background 0.5s; - } - - small { - color: silver; - } - - :host(.active) button { - background: rgb(240, 240, 240); - } - - .controls { - position: absolute; - right: 0; - bottom: 0; - cursor: pointer; - padding: 0px 5px; - } -`; - -document.addEventListener("dragover", (dragOverEvent) => { - dragOverEvent.preventDefault(); - dragOverEvent.stopPropagation(); -}); - -export class FilesystemSelector extends LitElement { - static get styles() { - return componentCSS; - } - - static get properties() { - return { - value: { type: String, reflect: true }, - }; - } - - constructor(props = {}) { - super(); - if (props.onSelect) this.onSelect = props.onSelect; - if (props.onChange) this.onChange = props.onChange; - if (props.onThrow) this.onThrow = props.onThrow; - - this.accept = props.accept; - this.multiple = props.multiple; - this.type = props.type ?? "file"; - this.value = props.value ?? ""; - this.dialogOptions = props.dialogOptions ?? {}; - this.onChange = props.onChange ?? (() => {}); - this.dialogType = props.dialogType ?? "showOpenDialog"; - - this.addEventListener("change", () => this.onChange(this.value)); - } - - onSelect = () => {}; - onChange = () => {}; - #onThrow = (title, message) => { - message = message ? `
      ${title}
      ${message}` : title; - if (this.onThrow) this.onThrow(message); - throw new Error(message); - }; - - display = document.createElement("small"); - - #useElectronDialog = async (type) => { - const options = { ...this.dialogOptions }; - - if (!options.filters && this.accept) { - options.filters = [ - { - name: "Suggested Files", - extensions: this.accept.map((ext) => (ext[0] === "." ? ext.slice(1) : ext)), - }, - { name: "All Files", extensions: ["*"] }, - ]; - } - - options.properties = [ - type === "file" ? "openFile" : "openDirectory", - "noResolveAliases", - ...(options.properties ?? []), - ]; - - if (this.multiple && !options.properties.includes("multiSelections")) - options.properties.push("multiSelections"); - - this.classList.add("active"); - const result = await dialog[this.dialogType](options); - - this.classList.remove("active"); - if (result.canceled) return []; - return result; - }; - - #check = (value) => { - // Check type - const isLikelyFile = fs ? fs.statSync(value).isFile() : value.split(".").length; - if ((this.type === "directory" && isLikelyFile) || (this.type === "file" && !isLikelyFile)) - this.#onThrow("Incorrect filesystem object", `Please provide a ${this.type} instead.`); - }; - - #handleFiles = async (pathOrPaths, type) => { - const resolvedType = type ?? this.type; - - if (pathOrPaths) { - if (Array.isArray(pathOrPaths)) pathOrPaths.forEach(this.#check); - else if (!type) this.#check(pathOrPaths); - } - - let resolvedValue = pathOrPaths; - - if (Array.isArray(resolvedValue) && !this.multiple) { - if (resolvedValue.length > 1) - this.#onThrow( - `Too many ${resolvedType === "directory" ? "directories" : "files"} detected`, - `This selector will only accept one.` - ); - resolvedValue = resolvedValue[0]; - } - - if (this.multiple && !Array.isArray(resolvedValue)) resolvedValue = []; - - this.value = resolvedValue; - this.onSelect(this.value); - const event = new Event("change"); // Create a new change event - this.dispatchEvent(event); - }; - - async selectFormat(type = this.type) { - if (dialog) { - const results = await this.#useElectronDialog(type); - // const path = file.filePath ?? file.filePaths?.[0]; - const resolved = results.filePath ?? results.filePaths; - if (!resolved) return; // Cancelled - this.#handleFiles(results.filePath ?? results.filePaths, type); - } else { - let handles = await ( - type === "directory" - ? window.showDirectoryPicker() - : window.showOpenFilePicker({ multiple: this.multiple }) - ).catch(() => []); // Call using the same options - - const result = Array.isArray(handles) ? handles.map(({ name }) => name) : handles.name; - if (!result) return; // Cancelled - - this.#handleFiles(result, type); - } - } - - render() { - const isMultipleTypes = Array.isArray(this.type); - this.setAttribute("manytypes", isMultipleTypes); - const isArray = Array.isArray(this.value); - - const len = isArray ? this.value.length : 0; - - const resolvedValueDisplay = isArray - ? len > 1 - ? `${this.value[0]} and ${len - 1} other${len > 2 ? "s" : ""}` - : this.value[0] - : this.value; - - const objectTypeReference = getObjectTypeReferenceString(this.type, this.multiple); - - const instanceThis = this; - - return html` -
      - - ${this.multiple && isArray && this.value.length > 1 - ? new List({ - items: this.value.map((v) => ({ value: v })), - editable: false, - onChange: function () { - instanceThis.value = this.items.map((item) => item.value); - }, - }) - : ""} - -
      - ${this.value ? html`
      this.#handleFiles()}>${unsafeSVG(restartSVG)}
      ` : ""} -
      -
      - ${isMultipleTypes - ? html`
      - ${this.type.map( - (type) => - html` this.selectFormat(type)} - >Select - ${getObjectTypeReferenceString(type, this.multiple, { native: true })}` - )} -
      ` - : ""} - `; - } -} - -customElements.get("filesystem-selector") || customElements.define("filesystem-selector", FilesystemSelector); +import { LitElement, css, html } from "lit"; + +import { fs, remote } from "../electron/index"; +import { List } from "./List"; +const { dialog } = remote; + +import restartSVG from "./assets/restart.svg?raw"; +import { unsafeSVG } from "lit/directives/unsafe-svg.js"; + +function getObjectTypeReferenceString(type, multiple, { nested, native } = {}) { + if (Array.isArray(type)) + return `${multiple ? "" : "a "}${type + .map((type) => getObjectTypeReferenceString(type, multiple, { native, nested: true })) + .join(" / ")}`; + + const isDir = type === "directory"; + return multiple && (!isDir || (isDir && !native) || dialog) + ? type === "directory" + ? "directories" + : "files" + : nested + ? type + : `a ${type}`; +} + +const componentCSS = css` + * { + box-sizing: border-box; + } + + :host { + display: inline-block; + position: relative; + width: 100%; + } + + :host([manytypes="true"]) > button { + cursor: default; + } + + nwb-list { + width: 100px; + } + + #button-div { + margin-top: 10px; + display: flex; + gap: 5px; + } + + #button-div > nwb-button { + margin-bottom: 10px; + } + + button { + background: WhiteSmoke; + border: 1px solid #c3c3c3; + border-radius: 4px; + padding: 25px; + width: 100%; + color: dimgray; + cursor: pointer; + overflow-wrap: break-word; + text-align: center; + transition: background 0.5s; + } + + small { + color: silver; + } + + :host(.active) button { + background: rgb(240, 240, 240); + } + + .controls { + position: absolute; + right: 0; + bottom: 0; + cursor: pointer; + padding: 0px 5px; + } +`; + +document.addEventListener("dragover", (dragOverEvent) => { + dragOverEvent.preventDefault(); + dragOverEvent.stopPropagation(); +}); + +export class FilesystemSelector extends LitElement { + static get styles() { + return componentCSS; + } + + static get properties() { + return { + value: { type: String, reflect: true }, + }; + } + + constructor(props = {}) { + super(); + if (props.onSelect) this.onSelect = props.onSelect; + if (props.onChange) this.onChange = props.onChange; + if (props.onThrow) this.onThrow = props.onThrow; + + this.accept = props.accept; + this.multiple = props.multiple; + this.type = props.type ?? "file"; + this.value = props.value ?? ""; + this.dialogOptions = props.dialogOptions ?? {}; + this.onChange = props.onChange ?? (() => {}); + this.dialogType = props.dialogType ?? "showOpenDialog"; + + this.addEventListener("change", () => this.onChange(this.value)); + } + + onSelect = () => {}; + onChange = () => {}; + #onThrow = (title, message) => { + message = message ? `
      ${title}
      ${message}` : title; + if (this.onThrow) this.onThrow(message); + throw new Error(message); + }; + + display = document.createElement("small"); + + #useElectronDialog = async (type) => { + const options = { ...this.dialogOptions }; + + if (!options.filters && this.accept) { + options.filters = [ + { + name: "Suggested Files", + extensions: this.accept.map((ext) => (ext[0] === "." ? ext.slice(1) : ext)), + }, + { name: "All Files", extensions: ["*"] }, + ]; + } + + options.properties = [ + type === "file" ? "openFile" : "openDirectory", + "noResolveAliases", + ...(options.properties ?? []), + ]; + + if (this.multiple && !options.properties.includes("multiSelections")) + options.properties.push("multiSelections"); + + this.classList.add("active"); + const result = await dialog[this.dialogType](options); + + this.classList.remove("active"); + if (result.canceled) return []; + return result; + }; + + #check = (value) => { + // Check type + const isLikelyFile = fs ? fs.statSync(value).isFile() : value.split(".").length; + if ((this.type === "directory" && isLikelyFile) || (this.type === "file" && !isLikelyFile)) + this.#onThrow("Incorrect filesystem object", `Please provide a ${this.type} instead.`); + }; + + #handleFiles = async (pathOrPaths, type) => { + const resolvedType = type ?? this.type; + + if (pathOrPaths) { + if (Array.isArray(pathOrPaths)) pathOrPaths.forEach(this.#check); + else if (!type) this.#check(pathOrPaths); + } + + let resolvedValue = pathOrPaths; + + if (Array.isArray(resolvedValue) && !this.multiple) { + if (resolvedValue.length > 1) + this.#onThrow( + `Too many ${resolvedType === "directory" ? "directories" : "files"} detected`, + `This selector will only accept one.` + ); + resolvedValue = resolvedValue[0]; + } + + if (this.multiple && !Array.isArray(resolvedValue)) resolvedValue = []; + + this.value = resolvedValue; + this.onSelect(this.value); + const event = new Event("change"); // Create a new change event + this.dispatchEvent(event); + }; + + async selectFormat(type = this.type) { + if (dialog) { + const results = await this.#useElectronDialog(type); + // const path = file.filePath ?? file.filePaths?.[0]; + const resolved = results.filePath ?? results.filePaths; + if (!resolved) return; // Cancelled + this.#handleFiles(results.filePath ?? results.filePaths, type); + } else { + let handles = await ( + type === "directory" + ? window.showDirectoryPicker() + : window.showOpenFilePicker({ multiple: this.multiple }) + ).catch(() => []); // Call using the same options + + const result = Array.isArray(handles) ? handles.map(({ name }) => name) : handles.name; + if (!result) return; // Cancelled + + this.#handleFiles(result, type); + } + } + + render() { + const isMultipleTypes = Array.isArray(this.type); + this.setAttribute("manytypes", isMultipleTypes); + const isArray = Array.isArray(this.value); + + const len = isArray ? this.value.length : 0; + + const resolvedValueDisplay = isArray + ? len > 1 + ? `${this.value[0]} and ${len - 1} other${len > 2 ? "s" : ""}` + : this.value[0] + : this.value; + + const objectTypeReference = getObjectTypeReferenceString(this.type, this.multiple); + + const instanceThis = this; + + return html` +
      + + ${this.multiple && isArray && this.value.length > 1 + ? new List({ + items: this.value.map((v) => ({ value: v })), + editable: false, + onChange: function () { + instanceThis.value = this.items.map((item) => item.value); + }, + }) + : ""} + +
      + ${this.value ? html`
      this.#handleFiles()}>${unsafeSVG(restartSVG)}
      ` : ""} +
      +
      + ${isMultipleTypes + ? html`
      + ${this.type.map( + (type) => + html` this.selectFormat(type)} + >Select + ${getObjectTypeReferenceString(type, this.multiple, { native: true })}` + )} +
      ` + : ""} + `; + } +} + +customElements.get("filesystem-selector") || customElements.define("filesystem-selector", FilesystemSelector); diff --git a/src/electron/renderer/src/stories/FileSystemSelector.stories.js b/src/electron/renderer/src/stories/FileSystemSelector.stories.js index 75ba900eb..767ea9532 100644 --- a/src/electron/renderer/src/stories/FileSystemSelector.stories.js +++ b/src/electron/renderer/src/stories/FileSystemSelector.stories.js @@ -1,35 +1,35 @@ -import { FilesystemSelector } from "./FileSystemSelector"; - -export default { - title: "Components/Filesystem Selector", -}; - -const Template = (args) => new FilesystemSelector(args); - -const types = ["file", "directory"]; - -export const File = Template.bind({}); -export const Folder = Template.bind({}); -Folder.args = { - type: types[1], -}; - -export const FileMultiple = Template.bind({}); -FileMultiple.args = { multiple: true }; - -export const FolderMultiple = Template.bind({}); -FolderMultiple.args = { - type: types[1], - multiple: true, -}; - -export const Both = Template.bind({}); -Both.args = { - type: types, -}; - -export const BothMultiple = Template.bind({}); -BothMultiple.args = { - type: types, - multiple: true, -}; +import { FilesystemSelector } from "./FileSystemSelector"; + +export default { + title: "Components/Filesystem Selector", +}; + +const Template = (args) => new FilesystemSelector(args); + +const types = ["file", "directory"]; + +export const File = Template.bind({}); +export const Folder = Template.bind({}); +Folder.args = { + type: types[1], +}; + +export const FileMultiple = Template.bind({}); +FileMultiple.args = { multiple: true }; + +export const FolderMultiple = Template.bind({}); +FolderMultiple.args = { + type: types[1], + multiple: true, +}; + +export const Both = Template.bind({}); +Both.args = { + type: types, +}; + +export const BothMultiple = Template.bind({}); +BothMultiple.args = { + type: types, + multiple: true, +}; diff --git a/src/electron/renderer/src/stories/Footer.js b/src/electron/renderer/src/stories/Footer.js index 06e98d50d..12b82a927 100644 --- a/src/electron/renderer/src/stories/Footer.js +++ b/src/electron/renderer/src/stories/Footer.js @@ -1,24 +1,24 @@ -import { LitElement, html, css } from "lit"; - -export class Footer extends LitElement { - static get styles() { - return css` - :host { - background: white; - padding: 10px 25px; - border-top: 1px solid #c3c3c3; - width: 100%; - } - `; - } - - constructor() { - super(); - } - - render() { - return html` `; - } -} - -customElements.get("nwb-footer") || customElements.define("nwb-footer", Footer); +import { LitElement, html, css } from "lit"; + +export class Footer extends LitElement { + static get styles() { + return css` + :host { + background: white; + padding: 10px 25px; + border-top: 1px solid #c3c3c3; + width: 100%; + } + `; + } + + constructor() { + super(); + } + + render() { + return html` `; + } +} + +customElements.get("nwb-footer") || customElements.define("nwb-footer", Footer); diff --git a/src/electron/renderer/src/stories/InfoBox.js b/src/electron/renderer/src/stories/InfoBox.js index 3177dd2c5..f748fb155 100644 --- a/src/electron/renderer/src/stories/InfoBox.js +++ b/src/electron/renderer/src/stories/InfoBox.js @@ -1,132 +1,132 @@ -import { LitElement, css, html } from "lit"; -import { Chevron } from "./Chevron"; -import { unsafeHTML } from "lit/directives/unsafe-html.js"; - -export class InfoBox extends LitElement { - static get styles() { - return css` - @keyframes demo-box-fade-in { - 0% { - opacity: 0; - transform: translateY(-20px); - } - 100% { - opacity: 1; - transform: translateY(0); - } - } - - :host { - display: inline-block; - width: 100%; - } - - .icon { - margin-right: 10px; - font-size: 12px; - color: #000; - } - - nwb-chevron { - transform: scale(70%); - margin-left: 5px; - } - - .guided--info-dropdown { - display: flex; - align-self: flex-start; - flex-wrap: nowrap; - justify-content: start; - align-items: center; - cursor: pointer; - } - - #header { - margin: 0px; - font-weight: 500; - font-size: 12px; - color: #000; - } - - .guided--info-container { - background-color: var(--color-transparent-soda-green); - - margin-top: 5px; - padding: 10px; - - display: none; - flex-direction: column; - justify-content: center; - - text-align: justify; - - border: 1px solid var(--color-light-green); - border-radius: 3px; - } - - .guided--info-container .guided--help-text { - font-size: 13px; - color: hsl(0, 0%, 22%); - } - - .container-open { - display: flex; - margin-bottom: 0px; - animation: demo-box-fade-in 0.2s cubic-bezier(0, 0.2, 0.2, 0.96); - } - `; - } - - constructor({ header = "Info", content, type = "info", open = false } = {}) { - super(); - this.header = header; - this.content = content; - this.type = type; - this.open = open; - } - - updated() { - const infoDropdown = this.shadowRoot.querySelector(".guided--info-dropdown"); - const infoTextElement = infoDropdown.querySelector("#header"); - - // Auto-add icons if they're not there - if (this.type === "info") infoTextElement.insertAdjacentHTML("beforebegin", `ℹ️`); - if (this.type === "warning") infoTextElement.insertAdjacentHTML("beforebegin", ` ⚠️`); - - const infoContainer = infoDropdown.nextElementSibling; - infoDropdown.onclick = () => this.onToggle(!infoContainer.classList.contains("container-open")); - - this.onToggle(); - } - - onToggle(open = this.open) { - const infoDropdown = this.shadowRoot.querySelector(".guided--info-dropdown"); - - const infoContainer = infoDropdown.nextElementSibling; - const infoContainerChevron = infoDropdown.querySelector("nwb-chevron"); - - if (open) { - infoContainerChevron.direction = "bottom"; - infoContainer.classList.add("container-open"); - } else { - infoContainerChevron.direction = "right"; - infoContainer.classList.remove("container-open"); - } - } - - render() { - return html` -
      - ${this.header} - ${new Chevron({ direction: "right" })} -
      -
      - ${typeof this.content === "string" ? unsafeHTML(this.content) : this.content} -
      - `; - } -} - -customElements.get("nwbguide-info-box") || customElements.define("nwbguide-info-box", InfoBox); +import { LitElement, css, html } from "lit"; +import { Chevron } from "./Chevron"; +import { unsafeHTML } from "lit/directives/unsafe-html.js"; + +export class InfoBox extends LitElement { + static get styles() { + return css` + @keyframes demo-box-fade-in { + 0% { + opacity: 0; + transform: translateY(-20px); + } + 100% { + opacity: 1; + transform: translateY(0); + } + } + + :host { + display: inline-block; + width: 100%; + } + + .icon { + margin-right: 10px; + font-size: 12px; + color: #000; + } + + nwb-chevron { + transform: scale(70%); + margin-left: 5px; + } + + .guided--info-dropdown { + display: flex; + align-self: flex-start; + flex-wrap: nowrap; + justify-content: start; + align-items: center; + cursor: pointer; + } + + #header { + margin: 0px; + font-weight: 500; + font-size: 12px; + color: #000; + } + + .guided--info-container { + background-color: var(--color-transparent-soda-green); + + margin-top: 5px; + padding: 10px; + + display: none; + flex-direction: column; + justify-content: center; + + text-align: justify; + + border: 1px solid var(--color-light-green); + border-radius: 3px; + } + + .guided--info-container .guided--help-text { + font-size: 13px; + color: hsl(0, 0%, 22%); + } + + .container-open { + display: flex; + margin-bottom: 0px; + animation: demo-box-fade-in 0.2s cubic-bezier(0, 0.2, 0.2, 0.96); + } + `; + } + + constructor({ header = "Info", content, type = "info", open = false } = {}) { + super(); + this.header = header; + this.content = content; + this.type = type; + this.open = open; + } + + updated() { + const infoDropdown = this.shadowRoot.querySelector(".guided--info-dropdown"); + const infoTextElement = infoDropdown.querySelector("#header"); + + // Auto-add icons if they're not there + if (this.type === "info") infoTextElement.insertAdjacentHTML("beforebegin", `ℹ️`); + if (this.type === "warning") infoTextElement.insertAdjacentHTML("beforebegin", ` ⚠️`); + + const infoContainer = infoDropdown.nextElementSibling; + infoDropdown.onclick = () => this.onToggle(!infoContainer.classList.contains("container-open")); + + this.onToggle(); + } + + onToggle(open = this.open) { + const infoDropdown = this.shadowRoot.querySelector(".guided--info-dropdown"); + + const infoContainer = infoDropdown.nextElementSibling; + const infoContainerChevron = infoDropdown.querySelector("nwb-chevron"); + + if (open) { + infoContainerChevron.direction = "bottom"; + infoContainer.classList.add("container-open"); + } else { + infoContainerChevron.direction = "right"; + infoContainer.classList.remove("container-open"); + } + } + + render() { + return html` +
      + ${this.header} + ${new Chevron({ direction: "right" })} +
      +
      + ${typeof this.content === "string" ? unsafeHTML(this.content) : this.content} +
      + `; + } +} + +customElements.get("nwbguide-info-box") || customElements.define("nwbguide-info-box", InfoBox); diff --git a/src/electron/renderer/src/stories/InstanceManager.js b/src/electron/renderer/src/stories/InstanceManager.js index af027d954..41ecd6e37 100644 --- a/src/electron/renderer/src/stories/InstanceManager.js +++ b/src/electron/renderer/src/stories/InstanceManager.js @@ -1,485 +1,485 @@ -import { LitElement, css, html } from "lit"; -import "./Button"; -import { notify } from "../dependencies/globals"; -import { Accordion } from "./Accordion"; -import { InstanceListItem } from "./instances/item"; -import { checkStatus } from "../validation"; - -export class InstanceManager extends LitElement { - static get styles() { - return css` - * { - box-sizing: border-box; - } - - :host { - width: 100%; - display: flex; - background: white; - height: 100%; - } - - :host > div { - display: grid; - grid-template-columns: fit-content(0) 1fr; - grid-template-rows: minmax(0, 1fr); - width: 100%; - } - - :host > div > div { - border: 1px solid #c3c3c3; - } - - #selectedName { - font-size: 18px; - font-weight: bold; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - padding-right: 10px; - } - - #add-new-button { - box-sizing: border-box; - padding: 0px 5px; - width: 100%; - } - - #instance-sidebar { - display: flex; - flex-direction: column; - justify-content: space-between; - } - - #instance-sidebar[hidden] { - border: unset; - } - - #instance-header { - background: #e5e5e5; - border-bottom: 1px solid #c3c3c3; - padding: 15px; - white-space: nowrap; - } - - #instance-list { - list-style: none; - padding: 5px; - margin: 0; - overflow-x: hidden; - overflow-y: auto; - height: 100%; - } - - #instance-display { - padding: 25px; - border-left: 0; - overflow-y: auto; - overflow-x: hidden; - height: 100%; - } - - #instance-display > div { - height: 100%; - } - - #content { - overflow: hidden; - display: flex; - flex-direction: column; - } - - input { - width: 100%; - } - - #new-manager *[hidden] { - display: none; - } - - #new-manager { - height: 125px; - display: flex; - justify-content: center; - align-items: center; - z-index: 1; - } - - .controls { - padding: 10px; - border-bottom: 1px solid gainsboro; - display: flex; - justify-content: space-between; - align-items: center; - } - - .controls > div { - display: flex; - gap: 10px; - } - - #new-info { - align-items: unset; - width: 100%; - padding: 10px 30px; - display: flex; - } - - #new-info > input { - margin-right: 10px; - } - - nwb-accordion { - margin-bottom: 0.5em; - } - `; - } - - constructor(props = {}) { - super(); - this.instances = props.instances ?? {}; - this.header = props.header; - this.instanceType = props.instanceType ?? "Instance"; - if (props.onAdded) this.onAdded = props.onAdded; - if (props.onRemoved) this.onRemoved = props.onRemoved; - if (props.onDisplay) this.onDisplay = props.onDisplay; - this.controls = props.controls ?? []; - } - - #dynamicInstances = {}; - - getInstanceContent = ({ id, metadata }) => { - const content = metadata.content ?? metadata; - if (typeof content === "function") { - this.#dynamicInstances[id] = content; - return ""; - } else return content; - }; - - updateState = (id, state) => { - const item = this.#items.find((i) => i.id === id); - - item.status = state; - - // Carry the status upwards - const path = id.split("/"); - - let target = this.instances; - for (let i = 0; i < path.length; i++) { - const id = path.slice(0, i + 1).join("/"); - const accordion = this.#accordions[id]; - - if (!this.#hasMultiple()) return; // Skip status update if accordion is not rendered - - target = target[path[i]]; // Progressively check the deeper nested instances - if (accordion) accordion.setStatus(checkStatus(false, false, [...Object.values(target)])); - } - }; - - // onAdded = () => {} - // onRemoved = () => {} - - toggleInput = (force) => { - const newInfoDiv = this.shadowRoot.querySelector("#new-info"); - if (force === true) { - newInfoDiv.hidden = false; - } else if (force === false) { - newInfoDiv.hidden = true; - } else { - newInfoDiv.hidden = !newInfoDiv.hidden; - } - - if (!newInfoDiv.hidden) { - const input = this.shadowRoot.querySelector("#new-info input"); - input.focus(); - - const onPointerDown = (pointerEvent) => { - if (!pointerEvent.composedPath().includes(newInfoDiv)) { - this.#onKeyDone(); - document.removeEventListener("pointerdown", onPointerDown); - } - }; - document.addEventListener("pointerdown", onPointerDown); - } - }; - - #onKeyDone = () => { - const button = this.shadowRoot.querySelector("#add-new-button"); - button.parentNode.hidden = false; - this.toggleInput(false); - }; - - #mapCategoryToInstances = (base, category) => { - let instances = {}; - Object.entries(category).forEach(([key, value]) => { - const newKey = `${base}/${key}`; - if (this.#isCategory(value)) instances = { ...this.#mapCategoryToInstances(value) }; - else instances[newKey] = value; - }); - return instances; - }; - - #selected; - - // Correct bug where multiple instances are selected - updated = () => { - const selected = Array.from(this.shadowRoot.querySelectorAll("[selected]")); - if (selected.length > 0) - selected.slice(1).forEach((element) => { - const instance = element.getAttribute("data-instance"); - element.removeAttribute("selected"); - this.shadowRoot.querySelector(`div[data-instance="${instance}"]`).setAttribute("hidden", ""); - }); - - this.#onSelected(); - - setTimeout(() => { - Object.entries(this.#info).forEach(([id, { status }]) => { - if (status) this.updateState(id, status); - }); - }); // NOTE: Why is this not possible without waiting? - }; - - #isCategory(value) { - return typeof value === "object" && !(value instanceof HTMLElement) && !("content" in value); - } - - #items = []; - #info = {}; - - #onRemoved(ev) { - const parent = ev.target.parentNode; - const name = parent.getAttribute("data-instance"); - const ogPath = name.split("/"); - const path = [...ogPath]; - let target = toRender; - const key = path.pop(); - target = path.reduce((acc, cur) => acc[cur], target); - this.onRemoved(target[key], ogPath); - delete target[key]; - - if (parent.hasAttribute("selected")) { - const previous = parent.previousElementSibling?.getAttribute("data-instance"); - if (previous) this.#selected = previous; - else { - const next = parent.nextElementSibling?.getAttribute("data-instance"); - if (next) this.#selected = next; - else this.#selected = undefined; - } - } - - // parent.remove() - // const instance = this.shadowRoot.querySelector(`div[data-instance="${name}"]`) - // instance.remove() - - this.requestUpdate(); - } - - #hideAll(chosenInstanceElement) { - Array.from(this.shadowRoot.querySelectorAll("div[data-instance]")).forEach((instanceElement) => { - if (instanceElement !== chosenInstanceElement) instanceElement.hidden = true; - }); - } - - #ids = {}; - #accordions = {}; - - #onSelected = () => { - const selected = this.shadowRoot.querySelector("#selectedName"); - selected.innerText = this.#selected; - - const dynamic = this.#dynamicInstances[this.#selected]; - if (typeof dynamic === "function") { - this.shadowRoot - .querySelector(`div[data-instance="${this.#selected}"]`) - .append((this.#dynamicInstances[this.#selected] = dynamic())); - } - }; - - #render(toRender = this.instances, path = []) { - let instances = {}; - let categories = []; - - Object.entries(toRender).forEach(([key, value]) => { - const isCategory = this.#isCategory(value); - // if (isCategory) instances = { ...instances, ...this.#mapCategoryToInstances(key, value) }; - // else instances[key] = value; - let resolvedKey = [...path, key].join("/"); - - if (isCategory) { - const list = this.#render(value, [...path, key]); - - const accordion = new Accordion({ - name: key, - content: list, - contentPadding: "10px", - }); - - this.#accordions[resolvedKey] = accordion; - - categories.push(accordion); - } else { - if (!this.#selected) this.#selected = resolvedKey; - this.#info[resolvedKey] = instances[resolvedKey] = value; - } - }); - - const list = html` - ${Object.entries(instances).map(([key, info], i) => { - if (info instanceof HTMLElement || typeof info === "function") info = { content: info }; - const listItemInfo = { - id: key, - label: key.split("/").pop(), - selected: key === this.#selected, - onRemoved: this.#onRemoved.bind(this), - ...info, - }; - - const item = new InstanceListItem(listItemInfo); - - this.#items.push(item); - - item.onClick = () => { - this.#selected = key; - - const instances = Array.from(this.shadowRoot.querySelectorAll("div[data-instance]")); - - const selectedInstanceElement = instances.find( - (instanceElement) => instanceElement.getAttribute("data-instance") === this.#selected - ); - - if (selectedInstanceElement) { - selectedInstanceElement.hidden = false; - this.#hideAll(selectedInstanceElement); - - this.#items.forEach((element) => { - if (element !== item) element.removeAttribute("selected"); - }); - } - - this.#onSelected(); - }; - - return item; - })} - ${categories} - `; - - return list; - } - - #hasMultiple = () => this.#items.length > 1; - - render() { - this.#info = {}; - this.#items = []; - - const instances = this.#render(); - - const hasMultiple = this.#hasMultiple(); - - return html` -
      -
      - ${hasMultiple - ? html` - ${this.header ? html`

      ${this.header}

      ` : ""} -
        - ${instances} -
      - ${this.onAdded - ? html`
      - -
      - { - ev.target.parentNode.hidden = true; - this.toggleInput(true); - }} - - icon="+" - .buttonStyles=${{ - width: "100%", - }}>Add ${this.instanceType} -
      -
      ` - : ""} - ` - : ""} -
      - -
      -
      - -
      - ${this.controls.map(({ name, icon, primary, onClick }) => { - return html` div:not([hidden])" - ); - onClick.call( - this, - activeContentElement.getAttribute("data-instance"), - activeContentElement - ); - }} - >${name}`; - })} -
      -
      - -
      - ${this.#items.map((item, i) => { - return html` -
      - ${this.getInstanceContent(item)} -
      - `; - })} -
      -
      -
      - `; - } -} - -customElements.get("nwb-instance-manager") || customElements.define("nwb-instance-manager", InstanceManager); +import { LitElement, css, html } from "lit"; +import "./Button"; +import { notify } from "../dependencies/globals"; +import { Accordion } from "./Accordion"; +import { InstanceListItem } from "./instances/item"; +import { checkStatus } from "../validation"; + +export class InstanceManager extends LitElement { + static get styles() { + return css` + * { + box-sizing: border-box; + } + + :host { + width: 100%; + display: flex; + background: white; + height: 100%; + } + + :host > div { + display: grid; + grid-template-columns: fit-content(0) 1fr; + grid-template-rows: minmax(0, 1fr); + width: 100%; + } + + :host > div > div { + border: 1px solid #c3c3c3; + } + + #selectedName { + font-size: 18px; + font-weight: bold; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + padding-right: 10px; + } + + #add-new-button { + box-sizing: border-box; + padding: 0px 5px; + width: 100%; + } + + #instance-sidebar { + display: flex; + flex-direction: column; + justify-content: space-between; + } + + #instance-sidebar[hidden] { + border: unset; + } + + #instance-header { + background: #e5e5e5; + border-bottom: 1px solid #c3c3c3; + padding: 15px; + white-space: nowrap; + } + + #instance-list { + list-style: none; + padding: 5px; + margin: 0; + overflow-x: hidden; + overflow-y: auto; + height: 100%; + } + + #instance-display { + padding: 25px; + border-left: 0; + overflow-y: auto; + overflow-x: hidden; + height: 100%; + } + + #instance-display > div { + height: 100%; + } + + #content { + overflow: hidden; + display: flex; + flex-direction: column; + } + + input { + width: 100%; + } + + #new-manager *[hidden] { + display: none; + } + + #new-manager { + height: 125px; + display: flex; + justify-content: center; + align-items: center; + z-index: 1; + } + + .controls { + padding: 10px; + border-bottom: 1px solid gainsboro; + display: flex; + justify-content: space-between; + align-items: center; + } + + .controls > div { + display: flex; + gap: 10px; + } + + #new-info { + align-items: unset; + width: 100%; + padding: 10px 30px; + display: flex; + } + + #new-info > input { + margin-right: 10px; + } + + nwb-accordion { + margin-bottom: 0.5em; + } + `; + } + + constructor(props = {}) { + super(); + this.instances = props.instances ?? {}; + this.header = props.header; + this.instanceType = props.instanceType ?? "Instance"; + if (props.onAdded) this.onAdded = props.onAdded; + if (props.onRemoved) this.onRemoved = props.onRemoved; + if (props.onDisplay) this.onDisplay = props.onDisplay; + this.controls = props.controls ?? []; + } + + #dynamicInstances = {}; + + getInstanceContent = ({ id, metadata }) => { + const content = metadata.content ?? metadata; + if (typeof content === "function") { + this.#dynamicInstances[id] = content; + return ""; + } else return content; + }; + + updateState = (id, state) => { + const item = this.#items.find((i) => i.id === id); + + item.status = state; + + // Carry the status upwards + const path = id.split("/"); + + let target = this.instances; + for (let i = 0; i < path.length; i++) { + const id = path.slice(0, i + 1).join("/"); + const accordion = this.#accordions[id]; + + if (!this.#hasMultiple()) return; // Skip status update if accordion is not rendered + + target = target[path[i]]; // Progressively check the deeper nested instances + if (accordion) accordion.setStatus(checkStatus(false, false, [...Object.values(target)])); + } + }; + + // onAdded = () => {} + // onRemoved = () => {} + + toggleInput = (force) => { + const newInfoDiv = this.shadowRoot.querySelector("#new-info"); + if (force === true) { + newInfoDiv.hidden = false; + } else if (force === false) { + newInfoDiv.hidden = true; + } else { + newInfoDiv.hidden = !newInfoDiv.hidden; + } + + if (!newInfoDiv.hidden) { + const input = this.shadowRoot.querySelector("#new-info input"); + input.focus(); + + const onPointerDown = (pointerEvent) => { + if (!pointerEvent.composedPath().includes(newInfoDiv)) { + this.#onKeyDone(); + document.removeEventListener("pointerdown", onPointerDown); + } + }; + document.addEventListener("pointerdown", onPointerDown); + } + }; + + #onKeyDone = () => { + const button = this.shadowRoot.querySelector("#add-new-button"); + button.parentNode.hidden = false; + this.toggleInput(false); + }; + + #mapCategoryToInstances = (base, category) => { + let instances = {}; + Object.entries(category).forEach(([key, value]) => { + const newKey = `${base}/${key}`; + if (this.#isCategory(value)) instances = { ...this.#mapCategoryToInstances(value) }; + else instances[newKey] = value; + }); + return instances; + }; + + #selected; + + // Correct bug where multiple instances are selected + updated = () => { + const selected = Array.from(this.shadowRoot.querySelectorAll("[selected]")); + if (selected.length > 0) + selected.slice(1).forEach((element) => { + const instance = element.getAttribute("data-instance"); + element.removeAttribute("selected"); + this.shadowRoot.querySelector(`div[data-instance="${instance}"]`).setAttribute("hidden", ""); + }); + + this.#onSelected(); + + setTimeout(() => { + Object.entries(this.#info).forEach(([id, { status }]) => { + if (status) this.updateState(id, status); + }); + }); // NOTE: Why is this not possible without waiting? + }; + + #isCategory(value) { + return typeof value === "object" && !(value instanceof HTMLElement) && !("content" in value); + } + + #items = []; + #info = {}; + + #onRemoved(ev) { + const parent = ev.target.parentNode; + const name = parent.getAttribute("data-instance"); + const ogPath = name.split("/"); + const path = [...ogPath]; + let target = toRender; + const key = path.pop(); + target = path.reduce((acc, cur) => acc[cur], target); + this.onRemoved(target[key], ogPath); + delete target[key]; + + if (parent.hasAttribute("selected")) { + const previous = parent.previousElementSibling?.getAttribute("data-instance"); + if (previous) this.#selected = previous; + else { + const next = parent.nextElementSibling?.getAttribute("data-instance"); + if (next) this.#selected = next; + else this.#selected = undefined; + } + } + + // parent.remove() + // const instance = this.shadowRoot.querySelector(`div[data-instance="${name}"]`) + // instance.remove() + + this.requestUpdate(); + } + + #hideAll(chosenInstanceElement) { + Array.from(this.shadowRoot.querySelectorAll("div[data-instance]")).forEach((instanceElement) => { + if (instanceElement !== chosenInstanceElement) instanceElement.hidden = true; + }); + } + + #ids = {}; + #accordions = {}; + + #onSelected = () => { + const selected = this.shadowRoot.querySelector("#selectedName"); + selected.innerText = this.#selected; + + const dynamic = this.#dynamicInstances[this.#selected]; + if (typeof dynamic === "function") { + this.shadowRoot + .querySelector(`div[data-instance="${this.#selected}"]`) + .append((this.#dynamicInstances[this.#selected] = dynamic())); + } + }; + + #render(toRender = this.instances, path = []) { + let instances = {}; + let categories = []; + + Object.entries(toRender).forEach(([key, value]) => { + const isCategory = this.#isCategory(value); + // if (isCategory) instances = { ...instances, ...this.#mapCategoryToInstances(key, value) }; + // else instances[key] = value; + let resolvedKey = [...path, key].join("/"); + + if (isCategory) { + const list = this.#render(value, [...path, key]); + + const accordion = new Accordion({ + name: key, + content: list, + contentPadding: "10px", + }); + + this.#accordions[resolvedKey] = accordion; + + categories.push(accordion); + } else { + if (!this.#selected) this.#selected = resolvedKey; + this.#info[resolvedKey] = instances[resolvedKey] = value; + } + }); + + const list = html` + ${Object.entries(instances).map(([key, info], i) => { + if (info instanceof HTMLElement || typeof info === "function") info = { content: info }; + const listItemInfo = { + id: key, + label: key.split("/").pop(), + selected: key === this.#selected, + onRemoved: this.#onRemoved.bind(this), + ...info, + }; + + const item = new InstanceListItem(listItemInfo); + + this.#items.push(item); + + item.onClick = () => { + this.#selected = key; + + const instances = Array.from(this.shadowRoot.querySelectorAll("div[data-instance]")); + + const selectedInstanceElement = instances.find( + (instanceElement) => instanceElement.getAttribute("data-instance") === this.#selected + ); + + if (selectedInstanceElement) { + selectedInstanceElement.hidden = false; + this.#hideAll(selectedInstanceElement); + + this.#items.forEach((element) => { + if (element !== item) element.removeAttribute("selected"); + }); + } + + this.#onSelected(); + }; + + return item; + })} + ${categories} + `; + + return list; + } + + #hasMultiple = () => this.#items.length > 1; + + render() { + this.#info = {}; + this.#items = []; + + const instances = this.#render(); + + const hasMultiple = this.#hasMultiple(); + + return html` +
      +
      + ${hasMultiple + ? html` + ${this.header ? html`

      ${this.header}

      ` : ""} +
        + ${instances} +
      + ${this.onAdded + ? html`
      + +
      + { + ev.target.parentNode.hidden = true; + this.toggleInput(true); + }} + + icon="+" + .buttonStyles=${{ + width: "100%", + }}>Add ${this.instanceType} +
      +
      ` + : ""} + ` + : ""} +
      + +
      +
      + +
      + ${this.controls.map(({ name, icon, primary, onClick }) => { + return html` div:not([hidden])" + ); + onClick.call( + this, + activeContentElement.getAttribute("data-instance"), + activeContentElement + ); + }} + >${name}`; + })} +
      +
      + +
      + ${this.#items.map((item, i) => { + return html` +
      + ${this.getInstanceContent(item)} +
      + `; + })} +
      +
      +
      + `; + } +} + +customElements.get("nwb-instance-manager") || customElements.define("nwb-instance-manager", InstanceManager); diff --git a/src/electron/renderer/src/stories/InstanceManager.stories.js b/src/electron/renderer/src/stories/InstanceManager.stories.js index 4442ec890..d5f560e26 100644 --- a/src/electron/renderer/src/stories/InstanceManager.stories.js +++ b/src/electron/renderer/src/stories/InstanceManager.stories.js @@ -1,81 +1,81 @@ -import { InstanceManager } from "./InstanceManager"; -import { Modal } from "./Modal"; - -// More on how to set up stories at: https://storybook.js.org/docs/7.0/web-components/writing-stories/introduction -export default { - title: "Components/Instance Manager", - parameters: { - chromatic: { disableSnapshot: false }, - }, -}; - -const Template = (args) => new InstanceManager(args); - -export const Primary = Template.bind({}); - -const instances = { - thisisalongidentifier: { - content: "This has no status", - }, - thisisanevenlongeridentifierwithincorrectinfo: { - content: "This is very wrong", - status: "error", - }, - "002": { - content: "This is kinda right", - status: "warning", - }, - "003": { - content: "This is done", - status: "valid", - }, - category: { - item: { - content: "This is nested", - status: "valid", - }, - }, -}; - -const convertToElement = (_, object) => { - const div = document.createElement("div"); - div.innerHTML = `${JSON.stringify(object)}`; - return div; -}; - -const drillObjects = (object) => { - const keys = Object.keys(object); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const value = object[key]; - if (typeof value === "object") drillObjects(value); - else object[key] = convertToElement(key, value); - } - return object; -}; - -Primary.args = { - header: "Subject One", - controls: [ - { - name: "Preview", - onClick: function (key, contentElement) { - const parent = contentElement.parentNode; - const modal = new Modal({ - header: "Preview", - open: true, - onClose: () => { - modal.remove(); - parent.append(contentElement); - }, - }); - modal.append(contentElement); - document.body.appendChild(modal); - }, - }, - ], - instances, - onAdded: (path) => { - return convertToElement(path.join("/"), `This is some text for a new key: ${path.join("/")}`); - }, -}; +import { InstanceManager } from "./InstanceManager"; +import { Modal } from "./Modal"; + +// More on how to set up stories at: https://storybook.js.org/docs/7.0/web-components/writing-stories/introduction +export default { + title: "Components/Instance Manager", + parameters: { + chromatic: { disableSnapshot: false }, + }, +}; + +const Template = (args) => new InstanceManager(args); + +export const Primary = Template.bind({}); + +const instances = { + thisisalongidentifier: { + content: "This has no status", + }, + thisisanevenlongeridentifierwithincorrectinfo: { + content: "This is very wrong", + status: "error", + }, + "002": { + content: "This is kinda right", + status: "warning", + }, + "003": { + content: "This is done", + status: "valid", + }, + category: { + item: { + content: "This is nested", + status: "valid", + }, + }, +}; + +const convertToElement = (_, object) => { + const div = document.createElement("div"); + div.innerHTML = `${JSON.stringify(object)}`; + return div; +}; + +const drillObjects = (object) => { + const keys = Object.keys(object); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const value = object[key]; + if (typeof value === "object") drillObjects(value); + else object[key] = convertToElement(key, value); + } + return object; +}; + +Primary.args = { + header: "Subject One", + controls: [ + { + name: "Preview", + onClick: function (key, contentElement) { + const parent = contentElement.parentNode; + const modal = new Modal({ + header: "Preview", + open: true, + onClose: () => { + modal.remove(); + parent.append(contentElement); + }, + }); + modal.append(contentElement); + document.body.appendChild(modal); + }, + }, + ], + instances, + onAdded: (path) => { + return convertToElement(path.join("/"), `This is some text for a new key: ${path.join("/")}`); + }, +}; diff --git a/src/electron/renderer/src/stories/JSONSchemaForm.js b/src/electron/renderer/src/stories/JSONSchemaForm.js index e8bc20599..2acc45411 100644 --- a/src/electron/renderer/src/stories/JSONSchemaForm.js +++ b/src/electron/renderer/src/stories/JSONSchemaForm.js @@ -1,1469 +1,1469 @@ -import { LitElement, css, html } from "lit"; -import { unsafeHTML } from "lit/directives/unsafe-html.js"; - -import { Accordion } from "./Accordion"; - -import { checkStatus } from "../validation"; -import { header, replaceRefsWithValue } from "./forms/utils"; -import { resolve } from "../promises"; -import { merge } from "./pages/utils"; -import { resolveProperties } from "./pages/guided-mode/data/utils"; - -import { JSONSchemaInput, getEditableItems } from "./JSONSchemaInput"; -import { InspectorListItem } from "./preview/inspector/InspectorList"; - -const encode = (str) => { - try { - document.querySelector(`#${str}`); - return str; - } catch { - return btoa(str).replace(/\+|\/|\=/g, "_"); - } -}; - -export const get = (path, object, omitted = [], skipped = []) => { - // path = path.slice(this.base.length); // Correct for base path - if (!path) throw new Error("Path not specified"); - return path.reduce((acc, curr, i) => { - const tempAcc = acc?.[curr] ?? acc?.[omitted.find((str) => acc[str] && acc[str][curr])]?.[curr]; - if (tempAcc) return tempAcc; - else { - const level1 = acc?.[skipped.find((str) => acc[str])]; - if (level1) { - // Handle items-like objects - const result = get(path.slice(i), level1, omitted, skipped); - if (result) return result; - - // Handle pattern properties objects - const got = Object.keys(level1).find((key) => { - const result = get(path.slice(i + 1), level1[key], omitted, skipped); - if (result && typeof result === "object") return result; // Schema are objects... - }); - - if (got) return level1[got]; - } - } - }, object); -}; - -export const getSchema = (path, schema, base = []) => { - if (typeof path === "string") path = path.split("."); - - // NOTE: Still must correct for the base here - if (base.length) { - const indexOf = path.indexOf(base.slice(-1)[0]); - if (indexOf !== -1) path = path.slice(indexOf + 1); - } - - // NOTE: Refs are now pre-resolved - const resolved = get(path, schema, ["properties", "patternProperties"], ["patternProperties", "items"]); - - return resolved; -}; - -const additionalPropPattern = "additional"; - -const templateNaNMessage = `
      Type NaN to represent an unknown value.`; - -import { Validator } from "jsonschema"; -import { successHue, warningHue, errorHue } from "./globals"; -import { Button } from "./Button"; - -var validator = new Validator(); - -const isObject = (item) => { - return item && typeof item === "object" && !Array.isArray(item); -}; - -export const getIgnore = (o, path) => { - if (typeof path === "string") path = path.split("."); - return path.reduce((acc, key) => { - const info = acc[key] ?? {}; - - const accWildcard = acc["*"] ?? {}; - const infoWildcard = info["*"] ?? {}; - const mergedWildcards = { ...accWildcard, ...infoWildcard }; - - if (key in mergedWildcards) return { ...info, ...mergedWildcards[key] }; - - return { - ...info, - "*": mergedWildcards, // Accumulate ignore values - }; - }, o); -}; - -const selfRequiredSymbol = Symbol(); - -const componentCSS = ` - - * { - box-sizing: border-box; - } - - :host { - display: inline-block; - width: 100%; - } - - - - .form-section:not(:last-child):not(:empty), .link:not(:last-child){ - margin-bottom: 15px; - } - - .form-section { - display: flex; - flex-direction: column; - gap: 10px; - } - - .form-section[hidden] { - display: none; - } - - #empty { - display: flex; - align-items: center; - justify-content: center; - height: 100%; - width: 100%; - color: gray; - } - - - p { - margin: 0 0 1em; - line-height: 1.4285em; - } - - *:first-child jsonschema-input { - margin: 0; - } - - .link { - border: 1px solid black; - border-radius: 4px; - position: relative; - - } - - .link > div { - padding: 20px; - } - - .link::before { - box-sizing: border-box; - display: block; - width: 100%; - color: white; - background: black; - padding: 10px; - content: ''attr(data-name)''; - font-weight: bold; - } - - .link::after { - box-sizing: border-box; - display: block; - width: 10px; - height: 10px; - background: hsl(${successHue}, 100%, 70%) !important; - border-radius: 50%; - position: absolute; - top: 0; - right: 0; - content: ''; - margin: 15px; - } - - .link.error::after { - background: hsl(${errorHue}, 100%, 70%) !important; - } - - .link.warning::after { - background: hsl(${warningHue}, 100%, 70%) !important; - } - - hr { - margin: 1em 0 1.5em 0; - } - - pre { - white-space: pre-wrap; /* Since CSS 2.1 */ - white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - word-wrap: break-word; /* Internet Explorer 5.5+ */ - font-family: unset; - color: DimGray; - } - - h4 { - margin: 0; - margin-bottom: 5px; - padding-bottom: 5px; - border-bottom: 1px solid gainsboro; - } - - .guided--text-input-instructions { - font-size: 13px; - width: 100%; - padding-top: 4px; - color: dimgray !important; - margin: 0 0 1em; - line-height: 1.4285em; - } - - nwb-accordion { - margin-bottom: 0.5em; - } - - [disabled]{ - opacity: 0.5; - pointer-events: none; - } - - small { - font-size: 0.8em; - } -`; - -document.addEventListener("dragover", (dragEvent) => { - dragEvent.preventDefault(); - dragEvent.stopPropagation(); -}); - -export class JSONSchemaForm extends LitElement { - static get styles() { - return css([componentCSS]); - } - - static get properties() { - return { - schema: { type: Object, reflect: false }, - results: { type: Object, reflect: false }, - required: { type: Object, reflect: false }, - dialogType: { type: String, reflect: false }, - dialogOptions: { type: Object, reflect: false }, - globals: { type: Object, reflect: false }, - validateEmptyValues: { type: Boolean, reflect: true }, - }; - } - - base = []; - forms = {}; - inputs = []; - - tables = {}; - #nErrors = 0; - #nWarnings = 0; - - #toggleRendered; - #rendered; - #updateRendered = (force) => - force || this.#rendered === true - ? (this.#rendered = new Promise( - (resolve) => (this.#toggleRendered = () => resolve((this.#rendered = true))) - )) - : this.#rendered; - - resolved = {}; // Keep track of actual resolved values—not just what the user provides as results - - constructor(props = {}) { - super(); - - this.#rendered = this.#updateRendered(true); - - this.identifier = props.identifier; - this.schema = props.schema ?? {}; - this.results = (props.base ? structuredClone(props.results) : props.results) ?? {}; // Deep clone results in nested forms - this.globals = props.globals ?? {}; - - this.ignore = props.ignore ?? {}; - this.required = props.required ?? {}; - this.dialogOptions = props.dialogOptions; - this.dialogType = props.dialogType; - this.deferLoading = props.deferLoading ?? false; - - this.controls = props.controls ?? {}; - - this.transformErrors = props.transformErrors; - - this.emptyMessage = props.emptyMessage ?? "No properties to render"; - - this.onlyRequired = props.onlyRequired ?? false; - this.showLevelOverride = props.showLevelOverride ?? false; - - this.groups = props.groups ?? []; // NOTE: We assume properties only belong to one conditional requirement group - - // NOTE: Documentation for validateEmptyValues - this.validateEmptyValues = props.validateEmptyValues === undefined ? true : props.validateEmptyValues; // false = validate when not empty, true = always validate, null = never validate - - if (props.onInvalid) this.onInvalid = props.onInvalid; - if (props.sort) this.sort = props.sort; - - if (props.validateOnChange) this.validateOnChange = props.validateOnChange; - if (props.onThrow) this.onThrow = props.onThrow; - if (props.onLoaded) this.onLoaded = props.onLoaded; - if (props.onUpdate) this.onUpdate = props.onUpdate; - if (props.renderTable) this.renderTable = props.renderTable; - if (props.renderCustomHTML) this.renderCustomHTML = props.renderCustomHTML; - if (props.onOverride) this.onOverride = props.onOverride; - - if (props.onStatusChange) this.onStatusChange = props.onStatusChange; - - if (props.base) this.base = props.base; - } - - // Handle wildcards to grab multiple form elements - getAllFormElements = (path, config = { forms: true, tables: true, inputs: true }) => { - const name = path[0]; - const upcomingPath = path.slice(1); - - const isWildcard = name === "*"; - const last = !upcomingPath.length; - - if (isWildcard) { - if (last) { - const allElements = []; - if (config.forms) allElements.push(...this.forms.values()); - if (config.tables) allElements.push(...this.tables.values()); - if (config.inputs) allElements.push(...this.inputs.values()); - return allElements; - } else - return Object.values(this.forms) - .map((form) => form.getAllFormElements(upcomingPath, config)) - .flat(); - } - - // Get Single element - else { - const result = this.#getElementOnForm(path); - if (!result) return []; - - if (last) { - if (result instanceof JSONSchemaForm && config.forms) return [result]; - else if (result instanceof JSONSchemaInput && config.inputs) return [result]; - else if (config.tables) return [result]; - - return []; - } else { - if (result instanceof JSONSchemaForm) return result.getAllFormElements(upcomingPath, config); - else return [result]; - } - } - }; - - // Single later only - #getElementOnForm = (path, { forms = true, tables = true, inputs = true } = {}) => { - if (typeof path === "string") path = path.split("."); - if (!path.length) return this; - - const name = path[0]; - - const form = this.forms[name]; - if (form && forms) return form; - - const table = this.tables[name]; - if (table && tables) return table; - - const foundInput = this.inputs[path.join(".")]; // Check Inputs - if (foundInput && inputs) return foundInput; - }; - - // Get the form element defined by the path (stops before table cells) - getFormElement = ( - path, - { forms, tables, inputs } = { - forms: true, - tables: true, - inputs: true, - } - ) => { - if (typeof path === "string") path = path.split("."); - if (!path.length) return this; - - const updatedPath = path.slice(1); - - const result = this.#getElementOnForm(path, { forms, tables, inputs }); - if (result instanceof JSONSchemaForm) { - if (!updatedPath.length) return result; - else return result.getFormElement(updatedPath, { forms, tables, inputs }); - } - - return result; - }; - - #requirements = {}; - - attributeChangedCallback(changedProperties, oldValue, newValue) { - super.attributeChangedCallback(changedProperties, oldValue, newValue); - if (changedProperties === "options") this.requestUpdate(); - } - - getGlobalValue(path) { - if (typeof path === "string") path = path.split("."); - const resolved = this.#get(path, this.globals); - return resolved; - } - - // Track resolved values for the form (data only) - updateData(localPath, value, forceUpdate = false) { - const path = [...localPath]; - const name = path.pop(); - - const reducer = (acc, key) => { - const value = acc[key]; - return value && typeof value === "object" ? value : (acc[key] = {}); - }; // NOTE: Create nested objects if required to set a new path - - const resultParent = path.reduce(reducer, this.results); - const resolvedParent = path.reduce(reducer, this.resolved); - const hasUpdate = resolvedParent[name] !== value; - - const globalValue = this.getGlobalValue(localPath); - - // NOTE: Forms with nested forms will handle their own state updates - if (this.isUndefined(value)) { - // Continue to resolve and re-render... - if (globalValue) { - value = resolvedParent[name] = globalValue; - const input = this.getFormElement(localPath); - if (input) { - input.updateData(globalValue); - this.onOverride(name, globalValue, path); - } - } else resolvedParent[name] = undefined; - - resultParent[name] = undefined; // NOTE: Will be removed when stringified - } else { - resultParent[name] = value === globalValue ? undefined : value; // Retain association with global value - resolvedParent[name] = - isObject(value) && isObject(resolvedParent) ? merge(value, resolvedParent[name]) : value; // Merge with existing resolved values - } - - if (hasUpdate || forceUpdate) this.onUpdate(localPath, value); // Ensure the value has actually changed - } - - #addMessage = (name, message, type) => { - if (Array.isArray(name)) name = name.join("-"); // Convert array to string - const parent = this.shadowRoot.querySelector(`#${encode(name)}`); - if (!parent) return; - - let container = parent.querySelector(`.${type}`); - - if (!container) { - container = document.createElement("div"); - container.classList.add(type); - parent.append(container); - } - - const item = new InspectorListItem(message); - container.appendChild(item); - }; - - #clearMessages = (localPath, type) => { - if (Array.isArray(localPath)) localPath = localPath.join("-"); // Convert array to string - - if (!localPath.length) return; - - const parent = this.shadowRoot.querySelector(`#${encode(localPath)}`); - if (!parent) return; - - const container = parent.querySelector(`.${type}`); - if (!container) return; - - const nChildren = container.children.length; - container.remove(); - - // Track errors and warnings - if (type === "errors") this.#nErrors -= nChildren; - if (type === "warnings") this.#nWarnings -= nChildren; - }; - - status; - checkStatus = () => { - checkStatus.call(this, this.#nWarnings, this.#nErrors, [ - ...Object.entries(this.forms) - .filter(([k, v]) => { - const accordion = this.accordions[k]; - return !accordion || !accordion.disabled; - }) - .map(([_, v]) => v), - ...Object.values(this.tables), - ]); - }; - - throw = (message) => { - this.onThrow(message, this.identifier); - throw new Error(message); - }; - - validateSchema = (resolved, schema, name) => { - return validator - .validate(resolved, schema) - .errors.map((e) => { - const propName = e.path.slice(-1)[0] ?? name ?? (e.property === "instance" ? "Form" : e.property); - const rowName = e.path.slice(-2)[0]; - - const isRow = typeof rowName === "number"; - - const resolvedValue = e.instance; // Get offending value - const resolvedSchema = e.schema; // Get offending schema - - // ------------ Exclude Certain Errors ------------ - // Allow using null to specify an immutable table - if ( - e.message.includes("does not meet maximum length") || - e.message.includes("does not meet minimum length") - ) { - if (e.argument === null) return; - } - - // Allow referring to floats as null (i.e. JSON NaN representation) - if (e.message.includes("is not of a type(s)")) { - if (resolvedSchema.type === "number") { - if (resolvedValue === "NaN") return; - else if (resolvedValue === null) { - if (schema.type !== "array") return; // Allow null in non-tables - } else if (isRow) e.message = `${e.message}. ${templateNaNMessage}`; - } else if (resolvedSchema.type === "string") { - if ("properties" in resolvedSchema) return; // Allow for constructing types from object types - } - } - - // Ignore required errors if value is empty - if (e.name === "required" && this.validateEmptyValues === null && !(e.property in e.instance)) return; - - // Non-Strict Rule - if (resolvedSchema.strict === false && e.message.includes("is not one of enum values")) return; - - const prevHeader = name ? header(name) : "Row"; - - return { - type: "error", - message: `${ - typeof propName === "string" - ? `${header(propName)}${isRow ? ` on ${prevHeader} ${rowName}` : ""}` - : `${prevHeader} ${propName}` - } ${e.message}.`, - }; - }) - .filter((v) => !!v); - }; - - validate = async (resolved = this.resolved) => { - if (this.validateEmptyValues === false) this.validateEmptyValues = true; - - // Validate against the entire JSON Schema - const copy = structuredClone(resolved); - delete copy.__disabled; - - const result = this.validateSchema(copy, this.schema); - - const resolvedErrors = this.#resolveErrors(result, this.base, resolved); - - // Check if any required inputs are missing - const requiredButNotSpecified = await this.#validateRequirements(resolved); // get missing required paths - const isValid = !requiredButNotSpecified.length; - - // Check if all inputs are valid - const flaggedInputs = (this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(".invalid")) : []).filter( - (el) => el.nextElementSibling - ); // Skip tables - - if (resolvedErrors.length) { - const len = resolvedErrors.length; - if (len === 1) this.throw(resolvedErrors[0].message); - else this.throw(`${len} JSON Schema errors detected.`); - } - - const allErrors = flaggedInputs - .map((inputElement) => Array.from(inputElement.nextElementSibling.children).map((li) => li.message)) - .flat(); - - const nMissingRequired = allErrors.reduce((acc, curr) => { - return (acc += curr.includes(this.#isARequiredPropertyString) ? 1 : 0); - }, 0); - - // Print out a detailed error message if any inputs are missing - let message = isValid - ? "" - : requiredButNotSpecified.length === 1 - ? `${header(requiredButNotSpecified[0])} is not defined` - : `${requiredButNotSpecified.length} required inputs are not specified properly`; - if (requiredButNotSpecified.length !== nMissingRequired) - console.warn("Disagreement about the correct error to throw..."); - - // if (!isValid && allErrors.length && nMissingRequired === allErrors.length) message = `${nMissingRequired} required inputs are not defined.`; - - // Check if all inputs are valid - if (flaggedInputs.length) { - flaggedInputs[0].focus(); - if (!message) { - if (flaggedInputs.length === 1) { - const path = flaggedInputs[0].path; - const schema = this.getSchema(path); - message = `${header(schema.title ?? path.join("."))} is not valid`; - } else message = `${flaggedInputs.length} invalid form values`; - } - message += `${ - this.base.length ? ` in the ${this.base.join(".")} section` : "" - }. Please check the highlighted fields.`; - } - - if (message) this.throw(message); - - // Validate nested forms (skip disabled) - for (let name in this.forms) { - const accordion = this.accordions[name]; - if (!accordion || !accordion.disabled) - await this.forms[name].validate(resolved ? resolved[name] : undefined); // Validate nested forms too - } - - for (let key in this.tables) { - try { - this.tables[key].validate(resolved ? resolved[key] : undefined); // Validate nested tables too - } catch (error) { - const title = this.tables[key].schema.title; - const message = error.message.replace( - "this table", - `the ${header(title ?? [...this.base, key].join("."))} table` - ); - this.throw(message); - break; - } - } - - return true; - }; - - #get = (path, object = this.resolved, omitted = [], skipped = []) => get(path, object, omitted, skipped); - - #checkRequiredAfterChange = async (localPath) => { - const path = [...localPath]; - const name = path.pop(); - const isValid = await this.triggerValidation(name, path, false); - if (!isValid) return true; - }; - - // Resolve all references on the schema when set (INTERNAL USE ONLY) - #schema; - - set schema(schema) { - this.#schema = schema; - this.#schema = replaceRefsWithValue(schema); - } - - get schema() { - return this.#schema; - } - - getSchema = (path, schema = this.schema) => getSchema(path, schema, this.base); - - #renderInteractiveElement = (name, info, required, path = [], value, propertyType) => { - let isRequired = this.#isRequired([...path, name]); - - const localPath = [...path, name]; - const externalPath = [...this.base, ...localPath]; - - const resolved = this.#get(path, this.resolved); - if (value === undefined) value = resolved[name]; - - const isConditional = this.#getLink(externalPath)?.conditional || typeof isRequired === "function"; // Check the two possible ways of determining if a field is conditional - - if (isConditional && !isRequired) - isRequired = required[name] = async () => { - const isRequiredAfterChange = await this.#checkRequiredAfterChange(localPath); - if (isRequiredAfterChange) { - return true; - } else { - const linkResults = await this.#applyToLinkedProperties(this.#checkRequiredAfterChange, localPath); // Check links - if (linkResults.includes(true)) return true; - // Handle updates when no longer required - else return false; - } - }; - - const interactiveInput = new JSONSchemaInput({ - schema: info, - path: localPath, - value, - form: this, - controls: this.controls[name], - required: isRequired, - conditional: isConditional, - validateEmptyValue: this.validateEmptyValues, - pattern: propertyType === "pattern" ? name : propertyType ?? undefined, - renderTable: this.renderTable, - renderCustomHTML: this.renderCustomHTML, - showLabel: !("title" in info && !info.title), - }); - - this.inputs[localPath.join("-")] = interactiveInput; - - return html`
      ${interactiveInput}
      `; - }; - - load = () => { - if (!this.#loaded) Object.values(this.tables).forEach((t) => t.load()); - }; - - #loaded = false; - nLoaded = 0; - - checkAllLoaded = () => { - const expected = [...Object.keys(this.forms), ...Object.keys(this.tables)].length; - if (this.nLoaded === expected) { - this.#loaded = true; - this.onLoaded(); - } - }; - - // willValidateWhenEmpty = (k) => (Array.isArray(this.validateEmptyValues) && this.validateEmptyValues.includes(k)) || this.validateEmptyValues; - - #validateRequirements = async (resolved = this.resolved, requirements = this.#requirements, parentPath) => { - let invalid = []; - - for (let name in requirements) { - let isRequired = this.#isRequired(name, requirements); - - if (this.accordions[name]?.disabled) continue; // Skip disabled accordions - - // // NOTE: Uncomment to block checking requirements inside optional properties - // if (!requirements[name][selfRequiredSymbol] && !resolved[name]) continue; // Do not continue checking requirements if absent and not required - - if (typeof isRequired === "function") isRequired = await isRequired.call(this.resolved); - if (isRequired) { - let path = parentPath ? `${parentPath}-${name}` : name; - - // if (typeof isRequired === "object" && !Array.isArray(isRequired)) - // invalid.push(...(await this.#validateRequirements(resolved[name], isRequired, path))); - // else - if (this.isUndefined(resolved[name]) && this.validateEmptyValues !== null) invalid.push(path); - } - } - - return invalid; - }; - - // Checks missing required properties and throws an error if any are found - onInvalid = () => {}; - onLoaded = () => {}; - onUpdate = () => {}; - onOverride = () => {}; - - // #deleteExtraneousResults = (results, schema) => { - // for (let name in results) { - // if (!schema.properties || !(name in schema.properties)) delete results[name]; - // else if (results[name] && typeof results[name] === "object" && !Array.isArray(results[name])) - // this.#deleteExtraneousResults(results[name], schema.properties[name]); - // } - // }; - - #getRenderable = (schema = {}, required, ignore = {}, path, recursive = false) => { - const entries = Object.entries(schema.properties ?? {}); - - const isArrayOfArrays = (arr) => !!arr.find((v) => Array.isArray(v)); - - const flattenRecursedValues = (arr) => { - const newArr = []; - arr.forEach((item) => { - if (isArrayOfArrays(item)) newArr.push(...item); - else newArr.push(item); - }); - - return newArr; - }; - - const isRenderable = (key, value) => { - if (recursive && value.properties) - return this.#getRenderable( - value, - this.#isRequired([...path, key]), - getIgnore(ignore, key), - [...path, key], - true - ); - else return [key, value]; - }; - - const res = entries - .map(([key, value]) => { - if (!value.properties && key === "definitions") return false; // Skip definitions - - // If conclusively ignored - if (this.ignore["*"]?.[key] === true) - return false; // Skip all properties with this name - else if (this.ignore[key] === true) return false; // Skip this property - - if (this.showLevelOverride >= path.length) return isRenderable(key, value); - if (required[key]) return isRenderable(key, value); - if (this.#getLink([...this.base, ...path, key])) return isRenderable(key, value); - if (!this.onlyRequired) return isRenderable(key, value); - return false; - }) - .filter((result) => !!result); - - return flattenRecursedValues(res); // Flatten on the last pass - }; - - validateOnChange = () => {}; - onStatusChange = () => {}; - onThrow = () => {}; - renderTable = () => {}; - renderCustomHTML = () => {}; - - #getLink = (args) => { - if (typeof args === "string") args = args.split("-"); - const group = this.#getGroup(args); - if (!group) return; - return group.link ? group : undefined; - }; - - #getGroup = (args) => { - if (typeof args === "string") args = args.split("-"); - const group = this.groups.find((linked) => linked.properties.find((link) => link.join("-") === args.join("-"))); - return group; - }; - - #applyToLinkedProperties = (fn, externalPath) => { - const links = this.#getLink(externalPath)?.properties; - if (!links) return []; - return Promise.all( - links - .map((link) => { - const linkEl = this.shadowRoot.getElementById(`${link.join("-")}`); - return fn(link, linkEl); - }) - .flat() - ); - }; - - // Check if all links are not required anymore - #isLinkResolved = async (pathArr) => { - return ( - await this.#applyToLinkedProperties((link) => { - const isRequired = this.#isRequired(link.slice((this.base ?? []).length)); - if (typeof isRequired === "function") return !isRequired.call(this.resolved); - else return !isRequired; - }, pathArr) - ).reduce((a, b) => a && b, true); - }; - - #isRequired = (path, requirements = this.#requirements) => { - if (typeof path === "string") path = path.split("-"); - // path = path.slice(this.base.length); // Remove base path - let res = path.reduce((obj, key) => obj?.[key], requirements); - if (typeof res === "object") res = res[selfRequiredSymbol]; - return res; - }; - - #getGroupElement = (externalPath) => { - const link = this.#getGroup(externalPath); - if (!link) return; - return this.shadowRoot.querySelector(`[data-name="${link.name}"]`); - }; - - isUndefined(value) { - return value === undefined || value === ""; - } - - #isARequiredPropertyString = `is a required property`; - - #resolveErrors = (errors, externalPath, parent) => { - return errors - .map((e) => { - // Custom Error Transformations - if (this.transformErrors) { - const name = externalPath.slice(-1)[0]; - const res = this.transformErrors(e, externalPath, parent[name]); - if (res === false) return; - } - - return e; - }) - .filter((v) => !!v); - }; - - // Assume this is going to return as a Promise—even if the change function isn't returning one - triggerValidation = async (name, path = [], checkLinks = true, input, schema, parent, hooks = {}) => { - const { onError, onWarning, onInfo } = hooks; - - const localPath = [...path, name].filter((str) => typeof str === "string"); // Ignore row information - const externalPath = [...this.base, ...localPath]; - const pathToValidate = [...this.base, ...path]; - - const undefinedPathToken = localPath.findIndex((str) => !str && typeof str !== "number") !== -1; - if (undefinedPathToken) return true; // Will be unable to get schema anyways (additionalProperties) - - if (!input) input = this.getFormElement(localPath, { inputs: true }); - if (!parent) parent = this.#get(path, this.resolved); - if (!schema) schema = this.getSchema(localPath); - - const value = parent[name]; - - const skipValidation = this.validateEmptyValues === null && value === undefined; - - const validateArgs = input.pattern || skipValidation ? [] : [value, schema]; - - // Run validation functions - const jsonSchemaErrors = validateArgs.length === 2 ? this.validateSchema(...validateArgs, name) : []; - const valid = skipValidation ? true : await this.validateOnChange(name, parent, pathToValidate, value); - - if (valid === null) return null; // Skip validation / data change if the value is null - - const isRequired = this.#isRequired(localPath) || (!input.table && input.required); // Do not trust required status of table validations - - let warnings = Array.isArray(valid) - ? valid.filter((info) => info.type === "warning" && (!isRequired || !info.missing)) - : []; - - const errors = [ - ...(Array.isArray(valid) - ? valid?.filter((info) => info.type === "error" || (isRequired && info.missing)) - : []), // Derived Errors - ...jsonSchemaErrors, // JSON Schema Errors - ]; - - const info = Array.isArray(valid) ? valid?.filter((info) => info.type === "info") : []; - - const isUndefined = this.isUndefined(parent[name]); - - const link = this.#getLink(externalPath); - - if (!errors.length) { - if (isUndefined) { - // Throw at least a basic warning if a non-linked property is required and missing - if (!link && isRequired) { - if (this.validateEmptyValues === null) { - warnings.push({ - message: `${schema.title ?? header(name)} is a suggested property.`, - type: "warning", - missing: true, - }); - } else { - const rowName = pathToValidate.slice(-1)[0]; - const isRow = typeof rowName === "number"; - - errors.push({ - message: `${schema.title ?? header(name)} ${this.#isARequiredPropertyString}. ${ - schema.type === "number" - ? isRow - ? templateNaNMessage - : "
      Use the 'I Don't Know' checkbox if unsure." - : "" - }`, - type: "error", - missing: true, - }); - } - } - } - - // Validate Regex Pattern automatically - else if (schema.pattern) { - const regex = new RegExp(schema.pattern, schema.flags); - if (!regex.test(parent[name])) { - errors.push({ - message: `${schema.title ?? header(name)} does not match the required pattern (${regex}).`, - type: "error", - }); - } - } - } - - // Clear old errors and warnings - this.#clearMessages(localPath, "errors"); - this.#clearMessages(localPath, "warnings"); - this.#clearMessages(localPath, "info"); - - const isFunction = typeof valid === "function"; - const isValid = - valid === true || - valid == undefined || - isFunction || - (Array.isArray(valid) && !valid.find((error) => error.type === "error")); - - if (!isValid && errors.length === 0) errors.push({ type: "error", message: "Invalid value detected" }); - - const resolvedErrors = this.#resolveErrors(errors, externalPath, parent); - - // Track errors and warnings - const updatedWarnings = warnings.map((info) => (onWarning ? onWarning(info) : info)).filter((v) => !!v); - const updatedErrors = resolvedErrors.map((info) => (onError ? onError(info) : info)).filter((v) => !!v); - - this.#nErrors += updatedErrors.length; - this.#nWarnings += updatedWarnings.length; - this.checkStatus(); - - // Show aggregated errors and warnings (if allowed) - updatedWarnings.forEach((info) => (onWarning ? "" : this.#addMessage(localPath, info, "warnings"))); - info.forEach((info) => (onInfo ? onInfo(info) : this.#addMessage(localPath, info, "info"))); - - const groupEl = this.#getGroupElement(externalPath); - - if (groupEl) { - groupEl.classList[resolvedErrors.length ? "add" : "remove"]("error"); - groupEl.classList[warnings.length ? "add" : "remove"]("warning"); - } - - const clearAllErrors = isValid && updatedErrors.length === 0; - if (clearAllErrors) { - input.classList.remove("invalid"); - - await this.#applyToLinkedProperties((path, element) => { - element.classList.remove("required", "conditional"); // Links manage their own error and validity states, but only one needs to be valid - }, localPath); - - if (isFunction) valid(); // Run if returned value is a function - } else { - if (this.validateEmptyValues) { - // Add new invalid classes and errors - input.classList.add("invalid"); - - // Only add the conditional class for linked elements - await this.#applyToLinkedProperties( - (name, element) => element.classList.add("required", "conditional"), - [...path, name] - ); - - updatedErrors.forEach((info) => (onError ? "" : this.#addMessage(localPath, info, "errors"))); - } - // element.title = errors.map((info) => info.message).join("\n"); // Set all errors to show on hover - } - - // Update link - if (link) { - if (checkLinks) { - if (!(await this.#isLinkResolved(externalPath))) { - errors.push(...warnings); // Move warnings to errors if the element is linked - warnings = []; - - this.#applyToLinkedProperties((path) => { - const internalPath = path.slice((this.base ?? []).length); - if (internalPath.join("-") === externalPath.join("-")) return; - const name = internalPath.slice(-1)[0]; - this.triggerValidation(name, internalPath.slice(0, -1), false); - }, externalPath); - } - } - } - - return clearAllErrors; - }; - - accordions = {}; - - #render = (schema, results, required = {}, ignore = {}, path = []) => { - let isRenderableGroup = Symbol("isRenderableGroup"); - - const hasPatternProperties = !!schema.patternProperties; - const allowAdditionalProperties = schema.additionalProperties !== false; - - // Filter non-required properties (if specified) and render the sub-schema - const renderable = this.#getRenderable(schema, required, ignore, path); - // // Filter non-required properties (if specified) and render the sub-schema - // const renderable = path.length ? this.#getRenderable(schema, required) : Object.entries(schema.properties ?? {}) - - const hasProperties = renderable.length > 0 || hasPatternProperties || allowAdditionalProperties; - - if (!hasProperties) return html`
      ${this.emptyMessage}
      `; - let renderableWithLinks = renderable.reduce((acc, [name, info]) => { - const externalPath = [...this.base, ...path, name]; - const group = this.#getGroup(externalPath); // Use the base path to find a group - if (group && group.name) { - if (!acc.find(([_, info]) => info === group)) { - const entry = [group.name, group]; - entry[isRenderableGroup] = true; - acc.push(entry); - } - } else acc.push([name, info]); - - return acc; - }, []); - - const getRequiredValue = (name) => { - const value = required[name]; - return value && typeof value === "object" ? value[selfRequiredSymbol] : value; - }; - - const sorted = renderableWithLinks - - // Sort alphabetically - .sort(([name], [name2]) => { - const header1 = header(name); - const header2 = header(name2); - if (header1.toLowerCase() < header2.toLowerCase()) { - return -1; - } - if (header1.toLowerCase() > header2.toLowerCase()) { - return 1; - } - return 0; - }) - - // Sort required properties to the top - .sort((e1, e2) => { - const [name] = e1; - const [name2] = e2; - - if (getRequiredValue(name) && !getRequiredValue(name2)) return -1; // first required - if (!getRequiredValue(name) && getRequiredValue(name2)) return 1; // second required - - if (e1[isRenderableGroup] && !e2[isRenderableGroup]) return -1; // first link - if (!e1[isRenderableGroup] && e2[isRenderableGroup]) return 1; // second link - - return 0; // Both required - }) - - // Prioritise properties without other properties (e.g. name over NWBFile) - .sort((e1, e2) => { - const [_, info] = e1; - const [__, info2] = e2; - - if (e1[isRenderableGroup] || e2[isRenderableGroup]) return 0; - - if (info2.properties && info.properties) return 0; - else if (info2.properties) return -1; - else if (info.properties) return 1; - else return 0; - }); - - if (schema.order) { - sorted.sort(([name], [name2]) => { - const index = schema.order.indexOf(name); - const index2 = schema.order.indexOf(name2); - if (index === -1) return 1; - if (index2 === -1) return -1; - return index - index2; - }); - } - - const finalSort = this.sort ? sorted.sort(this.sort) : sorted; - - let rendered = finalSort.map((entry) => { - const [name, info] = entry; - - const hasPatternProperties = !!info.patternProperties; - - // Render linked properties - if (entry[isRenderableGroup]) { - const linkedProperties = info.properties.map((path) => { - const pathCopy = [...path].slice((this.base ?? []).length); - const name = pathCopy.pop(); - return this.#renderInteractiveElement(name, schema.properties[name], required, pathCopy); - }); - return html` - - `; - } - - // Directly render the interactive property element - if (!info.properties) return this.#renderInteractiveElement(name, info, required, path); - - const hasMany = renderable.length > 1; // How many siblings? - - const localPath = [...path, name]; - - // Check properties that will be rendered before creating the accordion - const base = [...this.base, ...localPath]; - - const explicitlyRequired = schema.required?.includes(name) ?? false; - - const headerName = header(info.title ?? name); - - const renderableInside = this.#getRenderable(info, required[name], ignore, localPath, true); - - const __disabled = this.results.__disabled ?? (this.results.__disabled = {}); - const __interacted = __disabled.__interacted ?? (__disabled.__interacted = {}); - - const hasInteraction = __interacted[name]; // NOTE: This locks the specific value to what the user has chosen... - - const { __disabled: __tempDisabledGlobal = {} } = this.getGlobalValue(localPath.slice(0, -1)); - - const __disabledGlobal = structuredClone(__tempDisabledGlobal); // NOTE: Cloning ensures no property transfer - - let isGlobalEffect = !hasInteraction || (!hasInteraction && __disabledGlobal.__interacted?.[name]); // Indicate whether global effect is used - - const __disabledResolved = isGlobalEffect ? __disabledGlobal : __disabled; - - const isDisabled = !!__disabledResolved[name]; - - const nestedResults = __disabled[name] ?? results[name] ?? this.results[name]; // One or the other will exist—depending on global or local disabling - - if (renderableInside.length) { - const ignore = getIgnore(this.ignore, name); - - const ogContext = this; - const nested = (this.forms[name] = new JSONSchemaForm({ - identifier: this.identifier, - schema: info, - results: { ...nestedResults }, - globals: this.globals?.[name], - - controls: this.controls[name], - - onUpdate: (internalPath, value, forceUpdate) => { - const path = [...localPath, ...internalPath]; - this.updateData(path, value, forceUpdate); - }, - - transformErrors: this.transformErrors, - - required: required[name], // Scoped to the sub-schema - ignore, - dialogOptions: this.dialogOptions, - dialogType: this.dialogType, - onlyRequired: this.onlyRequired, - showLevelOverride: this.showLevelOverride, - deferLoading: this.deferLoading, - groups: this.groups, - validateOnChange: (...args) => this.validateOnChange(...args), - onThrow: (...args) => this.onThrow(...args), - validateEmptyValues: this.validateEmptyValues, - onStatusChange: (status) => { - accordion.setStatus(status); - this.checkStatus(); - }, // Forward status changes to the parent form - onInvalid: (...args) => this.onInvalid(...args), - onLoaded: () => { - this.nLoaded++; - this.checkAllLoaded(); - }, - renderCustomHTML: function (...args) { - return ogContext.renderCustomHTML.call(this, ...args); - }, - renderTable: function (...args) { - return ogContext.renderTable.call(this, ...args); - }, - onOverride: (...args) => this.onOverride(...args), - base, - })); - } - - const oldStates = this.accordions[name]; - - const disableText = "Skip"; - const enableText = "Enable"; - - const disabledPath = [...path, "__disabled"]; - const interactedPath = [...disabledPath, "__interacted"]; - - const enableToggle = new Button({ - label: isDisabled ? enableText : disableText, - size: "extra-small", - onClick: (ev) => { - ev.stopPropagation(); - - const willEnable = enableToggle.label === enableText; - - // Reset parameters on interaction - isGlobalEffect = false; - - enableToggle.label = willEnable ? disableText : enableText; - - willEnable ? enable() : disable(); - this.updateData([...interactedPath, name], true, true); - - this.onUpdate(localPath, this.results[name]); - }, - }); - - // const enableToggle = document.createElement("input"); - const enableToggleContainer = document.createElement("div"); - Object.assign(enableToggleContainer.style, { position: "relative" }); - enableToggleContainer.append(enableToggle); - Object.assign(enableToggle.style, { marginRight: "10px", pointerEvents: "all" }); - - // Skip if accordion will be empty - if (!renderableInside.length) return; - - const accordion = (this.accordions[name] = new Accordion({ - name: headerName, - toggleable: hasMany, // Only show toggle if there are multiple siblings - subtitle: html`
      - ${explicitlyRequired ? "" : enableToggleContainer} -
      `, - content: this.forms[name], - - // States - open: oldStates?.open ?? !hasMany, - disabled: isDisabled, - status: oldStates?.status ?? "valid", // Always show a status - })); - - accordion.id = name; // assign name to accordion id - - const disable = () => { - accordion.disabled = true; - - const target = this.results; - const value = target[name] ?? {}; - - let update = true; - if (target.__disabled?.[name] && isGlobalEffect) update = false; - - // Disabled path is set to actual value - if (update) this.updateData([...disabledPath, name], value); - - // Actual data is set to undefined - this.updateData(localPath, undefined); - - this.checkStatus(); - }; - - const enable = () => { - accordion.disabled = false; - - const { __disabled = {} } = this.results; - - // Actual value is restored to the cached value - if (__disabled[name]) this.updateData(localPath, __disabled[name]); - - // Cached value is cleared - this.updateData([...disabledPath, name], undefined); - - this.checkStatus(); - }; - - if (isGlobalEffect) { - isDisabled ? disable() : enable(); - Object.assign(enableToggle.style, { accentColor: "gray" }); - } - - return accordion; - }); - - if (hasPatternProperties) { - const patternProps = Object.entries(schema.patternProperties).map(([key, schema]) => { - return this.#renderInteractiveElement( - key, - { - ...schema, - title: `Pattern Properties ${key}`, - }, - required, - path, - results, - "pattern" - ); - }); - - rendered = [...rendered, ...patternProps]; - } - - const additionalProps = getEditableItems(results, additionalPropPattern, { schema }); - - // Render additional properties - if (allowAdditionalProperties) { - // NOTE: If no pre-existing additional properties exist, exclude the entire rendering group - if (!additionalProps.length) return rendered; - - const additionalElement = this.#renderInteractiveElement( - "", - { - title: `Additional Properties`, - ...schema, - }, - required, - path, - results, - additionalPropPattern - ); - - return [...rendered, additionalElement]; - } - - // Delete additional properties off the final results - else { - additionalProps.forEach(({ key }) => { - delete results[key]; - }); - } - - return rendered; - }; - - #registerRequirements = (schema, requirements = {}, acc = this.#requirements, path = []) => { - if (!schema) return; - - const isItem = (schema) => schema.items && schema.items.properties; - if (isItem(schema)) schema = schema.items; - - if (schema.required) schema.required.forEach((key) => (acc[key] = true)); - - for (let key in requirements) acc[key] = requirements[key]; // Overwrite standard requirements with custom requirements - - if (schema.properties) { - Object.entries(schema.properties).forEach(([key, value]) => { - const isPropItem = isItem(value); - - if (value.properties || isPropItem) { - const fullPath = [...path, key]; - let nextAccumulator = acc[key]; - const isNotObject = typeof nextAccumulator !== "object"; - if (!nextAccumulator || isNotObject) - nextAccumulator = acc[key] = { [selfRequiredSymbol]: !!(nextAccumulator && !isPropItem) }; - this.#registerRequirements(value, requirements[key], nextAccumulator, fullPath); - } - }); - } - }; - - updated() { - this.checkAllLoaded(); // Throw if no tables - this.#toggleRendered(); // Toggle internal render state - } - - #resetLoadState() { - this.#loaded = false; - this.nLoaded = 0; - this.inputs = {}; - } - - #resolving; - // Check if everything is internally rendered - get rendered() { - if (this.#resolving) return this.#resolving; - this.#resolving = resolve(this.#rendered, () => { - const promise = Promise.all( - [...Object.values(this.forms), ...Object.values(this.tables)].map(({ rendered }) => rendered) - ); - promise.then(() => (this.#resolving = null)); - return promise; - }); - return this.#resolving; - } - - render() { - this.#updateRendered(); // Create a new promise to check on the rendered state - - this.#resetLoadState(); - - const schema = this.schema ?? {}; - - this.resolved = structuredClone(this.results); // Track resolved values as a copy of the user-specified results - - // Register default properties - resolveProperties(schema.properties, this.resolved, this.globals); - - // // Delete extraneous results - // this.#deleteExtraneousResults(this.results, this.schema); - this.#requirements = {}; - this.#registerRequirements(this.schema, this.required); - - return html` - ${schema.description - ? html`

      Description

      -

      ${unsafeHTML(schema.description)}

      ` - : ""} - ${this.#render(schema, this.resolved, this.#requirements, this.ignore)} - `; - } -} - -customElements.get("nwb-jsonschema-form") || customElements.define("nwb-jsonschema-form", JSONSchemaForm); +import { LitElement, css, html } from "lit"; +import { unsafeHTML } from "lit/directives/unsafe-html.js"; + +import { Accordion } from "./Accordion"; + +import { checkStatus } from "../validation"; +import { header, replaceRefsWithValue } from "./forms/utils"; +import { resolve } from "../promises"; +import { merge } from "./pages/utils"; +import { resolveProperties } from "./pages/guided-mode/data/utils"; + +import { JSONSchemaInput, getEditableItems } from "./JSONSchemaInput"; +import { InspectorListItem } from "./preview/inspector/InspectorList"; + +const encode = (str) => { + try { + document.querySelector(`#${str}`); + return str; + } catch { + return btoa(str).replace(/\+|\/|\=/g, "_"); + } +}; + +export const get = (path, object, omitted = [], skipped = []) => { + // path = path.slice(this.base.length); // Correct for base path + if (!path) throw new Error("Path not specified"); + return path.reduce((acc, curr, i) => { + const tempAcc = acc?.[curr] ?? acc?.[omitted.find((str) => acc[str] && acc[str][curr])]?.[curr]; + if (tempAcc) return tempAcc; + else { + const level1 = acc?.[skipped.find((str) => acc[str])]; + if (level1) { + // Handle items-like objects + const result = get(path.slice(i), level1, omitted, skipped); + if (result) return result; + + // Handle pattern properties objects + const got = Object.keys(level1).find((key) => { + const result = get(path.slice(i + 1), level1[key], omitted, skipped); + if (result && typeof result === "object") return result; // Schema are objects... + }); + + if (got) return level1[got]; + } + } + }, object); +}; + +export const getSchema = (path, schema, base = []) => { + if (typeof path === "string") path = path.split("."); + + // NOTE: Still must correct for the base here + if (base.length) { + const indexOf = path.indexOf(base.slice(-1)[0]); + if (indexOf !== -1) path = path.slice(indexOf + 1); + } + + // NOTE: Refs are now pre-resolved + const resolved = get(path, schema, ["properties", "patternProperties"], ["patternProperties", "items"]); + + return resolved; +}; + +const additionalPropPattern = "additional"; + +const templateNaNMessage = `
      Type NaN to represent an unknown value.`; + +import { Validator } from "jsonschema"; +import { successHue, warningHue, errorHue } from "./globals"; +import { Button } from "./Button"; + +var validator = new Validator(); + +const isObject = (item) => { + return item && typeof item === "object" && !Array.isArray(item); +}; + +export const getIgnore = (o, path) => { + if (typeof path === "string") path = path.split("."); + return path.reduce((acc, key) => { + const info = acc[key] ?? {}; + + const accWildcard = acc["*"] ?? {}; + const infoWildcard = info["*"] ?? {}; + const mergedWildcards = { ...accWildcard, ...infoWildcard }; + + if (key in mergedWildcards) return { ...info, ...mergedWildcards[key] }; + + return { + ...info, + "*": mergedWildcards, // Accumulate ignore values + }; + }, o); +}; + +const selfRequiredSymbol = Symbol(); + +const componentCSS = ` + + * { + box-sizing: border-box; + } + + :host { + display: inline-block; + width: 100%; + } + + + + .form-section:not(:last-child):not(:empty), .link:not(:last-child){ + margin-bottom: 15px; + } + + .form-section { + display: flex; + flex-direction: column; + gap: 10px; + } + + .form-section[hidden] { + display: none; + } + + #empty { + display: flex; + align-items: center; + justify-content: center; + height: 100%; + width: 100%; + color: gray; + } + + + p { + margin: 0 0 1em; + line-height: 1.4285em; + } + + *:first-child jsonschema-input { + margin: 0; + } + + .link { + border: 1px solid black; + border-radius: 4px; + position: relative; + + } + + .link > div { + padding: 20px; + } + + .link::before { + box-sizing: border-box; + display: block; + width: 100%; + color: white; + background: black; + padding: 10px; + content: ''attr(data-name)''; + font-weight: bold; + } + + .link::after { + box-sizing: border-box; + display: block; + width: 10px; + height: 10px; + background: hsl(${successHue}, 100%, 70%) !important; + border-radius: 50%; + position: absolute; + top: 0; + right: 0; + content: ''; + margin: 15px; + } + + .link.error::after { + background: hsl(${errorHue}, 100%, 70%) !important; + } + + .link.warning::after { + background: hsl(${warningHue}, 100%, 70%) !important; + } + + hr { + margin: 1em 0 1.5em 0; + } + + pre { + white-space: pre-wrap; /* Since CSS 2.1 */ + white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + word-wrap: break-word; /* Internet Explorer 5.5+ */ + font-family: unset; + color: DimGray; + } + + h4 { + margin: 0; + margin-bottom: 5px; + padding-bottom: 5px; + border-bottom: 1px solid gainsboro; + } + + .guided--text-input-instructions { + font-size: 13px; + width: 100%; + padding-top: 4px; + color: dimgray !important; + margin: 0 0 1em; + line-height: 1.4285em; + } + + nwb-accordion { + margin-bottom: 0.5em; + } + + [disabled]{ + opacity: 0.5; + pointer-events: none; + } + + small { + font-size: 0.8em; + } +`; + +document.addEventListener("dragover", (dragEvent) => { + dragEvent.preventDefault(); + dragEvent.stopPropagation(); +}); + +export class JSONSchemaForm extends LitElement { + static get styles() { + return css([componentCSS]); + } + + static get properties() { + return { + schema: { type: Object, reflect: false }, + results: { type: Object, reflect: false }, + required: { type: Object, reflect: false }, + dialogType: { type: String, reflect: false }, + dialogOptions: { type: Object, reflect: false }, + globals: { type: Object, reflect: false }, + validateEmptyValues: { type: Boolean, reflect: true }, + }; + } + + base = []; + forms = {}; + inputs = []; + + tables = {}; + #nErrors = 0; + #nWarnings = 0; + + #toggleRendered; + #rendered; + #updateRendered = (force) => + force || this.#rendered === true + ? (this.#rendered = new Promise( + (resolve) => (this.#toggleRendered = () => resolve((this.#rendered = true))) + )) + : this.#rendered; + + resolved = {}; // Keep track of actual resolved values—not just what the user provides as results + + constructor(props = {}) { + super(); + + this.#rendered = this.#updateRendered(true); + + this.identifier = props.identifier; + this.schema = props.schema ?? {}; + this.results = (props.base ? structuredClone(props.results) : props.results) ?? {}; // Deep clone results in nested forms + this.globals = props.globals ?? {}; + + this.ignore = props.ignore ?? {}; + this.required = props.required ?? {}; + this.dialogOptions = props.dialogOptions; + this.dialogType = props.dialogType; + this.deferLoading = props.deferLoading ?? false; + + this.controls = props.controls ?? {}; + + this.transformErrors = props.transformErrors; + + this.emptyMessage = props.emptyMessage ?? "No properties to render"; + + this.onlyRequired = props.onlyRequired ?? false; + this.showLevelOverride = props.showLevelOverride ?? false; + + this.groups = props.groups ?? []; // NOTE: We assume properties only belong to one conditional requirement group + + // NOTE: Documentation for validateEmptyValues + this.validateEmptyValues = props.validateEmptyValues === undefined ? true : props.validateEmptyValues; // false = validate when not empty, true = always validate, null = never validate + + if (props.onInvalid) this.onInvalid = props.onInvalid; + if (props.sort) this.sort = props.sort; + + if (props.validateOnChange) this.validateOnChange = props.validateOnChange; + if (props.onThrow) this.onThrow = props.onThrow; + if (props.onLoaded) this.onLoaded = props.onLoaded; + if (props.onUpdate) this.onUpdate = props.onUpdate; + if (props.renderTable) this.renderTable = props.renderTable; + if (props.renderCustomHTML) this.renderCustomHTML = props.renderCustomHTML; + if (props.onOverride) this.onOverride = props.onOverride; + + if (props.onStatusChange) this.onStatusChange = props.onStatusChange; + + if (props.base) this.base = props.base; + } + + // Handle wildcards to grab multiple form elements + getAllFormElements = (path, config = { forms: true, tables: true, inputs: true }) => { + const name = path[0]; + const upcomingPath = path.slice(1); + + const isWildcard = name === "*"; + const last = !upcomingPath.length; + + if (isWildcard) { + if (last) { + const allElements = []; + if (config.forms) allElements.push(...this.forms.values()); + if (config.tables) allElements.push(...this.tables.values()); + if (config.inputs) allElements.push(...this.inputs.values()); + return allElements; + } else + return Object.values(this.forms) + .map((form) => form.getAllFormElements(upcomingPath, config)) + .flat(); + } + + // Get Single element + else { + const result = this.#getElementOnForm(path); + if (!result) return []; + + if (last) { + if (result instanceof JSONSchemaForm && config.forms) return [result]; + else if (result instanceof JSONSchemaInput && config.inputs) return [result]; + else if (config.tables) return [result]; + + return []; + } else { + if (result instanceof JSONSchemaForm) return result.getAllFormElements(upcomingPath, config); + else return [result]; + } + } + }; + + // Single later only + #getElementOnForm = (path, { forms = true, tables = true, inputs = true } = {}) => { + if (typeof path === "string") path = path.split("."); + if (!path.length) return this; + + const name = path[0]; + + const form = this.forms[name]; + if (form && forms) return form; + + const table = this.tables[name]; + if (table && tables) return table; + + const foundInput = this.inputs[path.join(".")]; // Check Inputs + if (foundInput && inputs) return foundInput; + }; + + // Get the form element defined by the path (stops before table cells) + getFormElement = ( + path, + { forms, tables, inputs } = { + forms: true, + tables: true, + inputs: true, + } + ) => { + if (typeof path === "string") path = path.split("."); + if (!path.length) return this; + + const updatedPath = path.slice(1); + + const result = this.#getElementOnForm(path, { forms, tables, inputs }); + if (result instanceof JSONSchemaForm) { + if (!updatedPath.length) return result; + else return result.getFormElement(updatedPath, { forms, tables, inputs }); + } + + return result; + }; + + #requirements = {}; + + attributeChangedCallback(changedProperties, oldValue, newValue) { + super.attributeChangedCallback(changedProperties, oldValue, newValue); + if (changedProperties === "options") this.requestUpdate(); + } + + getGlobalValue(path) { + if (typeof path === "string") path = path.split("."); + const resolved = this.#get(path, this.globals); + return resolved; + } + + // Track resolved values for the form (data only) + updateData(localPath, value, forceUpdate = false) { + const path = [...localPath]; + const name = path.pop(); + + const reducer = (acc, key) => { + const value = acc[key]; + return value && typeof value === "object" ? value : (acc[key] = {}); + }; // NOTE: Create nested objects if required to set a new path + + const resultParent = path.reduce(reducer, this.results); + const resolvedParent = path.reduce(reducer, this.resolved); + const hasUpdate = resolvedParent[name] !== value; + + const globalValue = this.getGlobalValue(localPath); + + // NOTE: Forms with nested forms will handle their own state updates + if (this.isUndefined(value)) { + // Continue to resolve and re-render... + if (globalValue) { + value = resolvedParent[name] = globalValue; + const input = this.getFormElement(localPath); + if (input) { + input.updateData(globalValue); + this.onOverride(name, globalValue, path); + } + } else resolvedParent[name] = undefined; + + resultParent[name] = undefined; // NOTE: Will be removed when stringified + } else { + resultParent[name] = value === globalValue ? undefined : value; // Retain association with global value + resolvedParent[name] = + isObject(value) && isObject(resolvedParent) ? merge(value, resolvedParent[name]) : value; // Merge with existing resolved values + } + + if (hasUpdate || forceUpdate) this.onUpdate(localPath, value); // Ensure the value has actually changed + } + + #addMessage = (name, message, type) => { + if (Array.isArray(name)) name = name.join("-"); // Convert array to string + const parent = this.shadowRoot.querySelector(`#${encode(name)}`); + if (!parent) return; + + let container = parent.querySelector(`.${type}`); + + if (!container) { + container = document.createElement("div"); + container.classList.add(type); + parent.append(container); + } + + const item = new InspectorListItem(message); + container.appendChild(item); + }; + + #clearMessages = (localPath, type) => { + if (Array.isArray(localPath)) localPath = localPath.join("-"); // Convert array to string + + if (!localPath.length) return; + + const parent = this.shadowRoot.querySelector(`#${encode(localPath)}`); + if (!parent) return; + + const container = parent.querySelector(`.${type}`); + if (!container) return; + + const nChildren = container.children.length; + container.remove(); + + // Track errors and warnings + if (type === "errors") this.#nErrors -= nChildren; + if (type === "warnings") this.#nWarnings -= nChildren; + }; + + status; + checkStatus = () => { + checkStatus.call(this, this.#nWarnings, this.#nErrors, [ + ...Object.entries(this.forms) + .filter(([k, v]) => { + const accordion = this.accordions[k]; + return !accordion || !accordion.disabled; + }) + .map(([_, v]) => v), + ...Object.values(this.tables), + ]); + }; + + throw = (message) => { + this.onThrow(message, this.identifier); + throw new Error(message); + }; + + validateSchema = (resolved, schema, name) => { + return validator + .validate(resolved, schema) + .errors.map((e) => { + const propName = e.path.slice(-1)[0] ?? name ?? (e.property === "instance" ? "Form" : e.property); + const rowName = e.path.slice(-2)[0]; + + const isRow = typeof rowName === "number"; + + const resolvedValue = e.instance; // Get offending value + const resolvedSchema = e.schema; // Get offending schema + + // ------------ Exclude Certain Errors ------------ + // Allow using null to specify an immutable table + if ( + e.message.includes("does not meet maximum length") || + e.message.includes("does not meet minimum length") + ) { + if (e.argument === null) return; + } + + // Allow referring to floats as null (i.e. JSON NaN representation) + if (e.message.includes("is not of a type(s)")) { + if (resolvedSchema.type === "number") { + if (resolvedValue === "NaN") return; + else if (resolvedValue === null) { + if (schema.type !== "array") return; // Allow null in non-tables + } else if (isRow) e.message = `${e.message}. ${templateNaNMessage}`; + } else if (resolvedSchema.type === "string") { + if ("properties" in resolvedSchema) return; // Allow for constructing types from object types + } + } + + // Ignore required errors if value is empty + if (e.name === "required" && this.validateEmptyValues === null && !(e.property in e.instance)) return; + + // Non-Strict Rule + if (resolvedSchema.strict === false && e.message.includes("is not one of enum values")) return; + + const prevHeader = name ? header(name) : "Row"; + + return { + type: "error", + message: `${ + typeof propName === "string" + ? `${header(propName)}${isRow ? ` on ${prevHeader} ${rowName}` : ""}` + : `${prevHeader} ${propName}` + } ${e.message}.`, + }; + }) + .filter((v) => !!v); + }; + + validate = async (resolved = this.resolved) => { + if (this.validateEmptyValues === false) this.validateEmptyValues = true; + + // Validate against the entire JSON Schema + const copy = structuredClone(resolved); + delete copy.__disabled; + + const result = this.validateSchema(copy, this.schema); + + const resolvedErrors = this.#resolveErrors(result, this.base, resolved); + + // Check if any required inputs are missing + const requiredButNotSpecified = await this.#validateRequirements(resolved); // get missing required paths + const isValid = !requiredButNotSpecified.length; + + // Check if all inputs are valid + const flaggedInputs = (this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(".invalid")) : []).filter( + (el) => el.nextElementSibling + ); // Skip tables + + if (resolvedErrors.length) { + const len = resolvedErrors.length; + if (len === 1) this.throw(resolvedErrors[0].message); + else this.throw(`${len} JSON Schema errors detected.`); + } + + const allErrors = flaggedInputs + .map((inputElement) => Array.from(inputElement.nextElementSibling.children).map((li) => li.message)) + .flat(); + + const nMissingRequired = allErrors.reduce((acc, curr) => { + return (acc += curr.includes(this.#isARequiredPropertyString) ? 1 : 0); + }, 0); + + // Print out a detailed error message if any inputs are missing + let message = isValid + ? "" + : requiredButNotSpecified.length === 1 + ? `${header(requiredButNotSpecified[0])} is not defined` + : `${requiredButNotSpecified.length} required inputs are not specified properly`; + if (requiredButNotSpecified.length !== nMissingRequired) + console.warn("Disagreement about the correct error to throw..."); + + // if (!isValid && allErrors.length && nMissingRequired === allErrors.length) message = `${nMissingRequired} required inputs are not defined.`; + + // Check if all inputs are valid + if (flaggedInputs.length) { + flaggedInputs[0].focus(); + if (!message) { + if (flaggedInputs.length === 1) { + const path = flaggedInputs[0].path; + const schema = this.getSchema(path); + message = `${header(schema.title ?? path.join("."))} is not valid`; + } else message = `${flaggedInputs.length} invalid form values`; + } + message += `${ + this.base.length ? ` in the ${this.base.join(".")} section` : "" + }. Please check the highlighted fields.`; + } + + if (message) this.throw(message); + + // Validate nested forms (skip disabled) + for (let name in this.forms) { + const accordion = this.accordions[name]; + if (!accordion || !accordion.disabled) + await this.forms[name].validate(resolved ? resolved[name] : undefined); // Validate nested forms too + } + + for (let key in this.tables) { + try { + this.tables[key].validate(resolved ? resolved[key] : undefined); // Validate nested tables too + } catch (error) { + const title = this.tables[key].schema.title; + const message = error.message.replace( + "this table", + `the ${header(title ?? [...this.base, key].join("."))} table` + ); + this.throw(message); + break; + } + } + + return true; + }; + + #get = (path, object = this.resolved, omitted = [], skipped = []) => get(path, object, omitted, skipped); + + #checkRequiredAfterChange = async (localPath) => { + const path = [...localPath]; + const name = path.pop(); + const isValid = await this.triggerValidation(name, path, false); + if (!isValid) return true; + }; + + // Resolve all references on the schema when set (INTERNAL USE ONLY) + #schema; + + set schema(schema) { + this.#schema = schema; + this.#schema = replaceRefsWithValue(schema); + } + + get schema() { + return this.#schema; + } + + getSchema = (path, schema = this.schema) => getSchema(path, schema, this.base); + + #renderInteractiveElement = (name, info, required, path = [], value, propertyType) => { + let isRequired = this.#isRequired([...path, name]); + + const localPath = [...path, name]; + const externalPath = [...this.base, ...localPath]; + + const resolved = this.#get(path, this.resolved); + if (value === undefined) value = resolved[name]; + + const isConditional = this.#getLink(externalPath)?.conditional || typeof isRequired === "function"; // Check the two possible ways of determining if a field is conditional + + if (isConditional && !isRequired) + isRequired = required[name] = async () => { + const isRequiredAfterChange = await this.#checkRequiredAfterChange(localPath); + if (isRequiredAfterChange) { + return true; + } else { + const linkResults = await this.#applyToLinkedProperties(this.#checkRequiredAfterChange, localPath); // Check links + if (linkResults.includes(true)) return true; + // Handle updates when no longer required + else return false; + } + }; + + const interactiveInput = new JSONSchemaInput({ + schema: info, + path: localPath, + value, + form: this, + controls: this.controls[name], + required: isRequired, + conditional: isConditional, + validateEmptyValue: this.validateEmptyValues, + pattern: propertyType === "pattern" ? name : propertyType ?? undefined, + renderTable: this.renderTable, + renderCustomHTML: this.renderCustomHTML, + showLabel: !("title" in info && !info.title), + }); + + this.inputs[localPath.join("-")] = interactiveInput; + + return html`
      ${interactiveInput}
      `; + }; + + load = () => { + if (!this.#loaded) Object.values(this.tables).forEach((t) => t.load()); + }; + + #loaded = false; + nLoaded = 0; + + checkAllLoaded = () => { + const expected = [...Object.keys(this.forms), ...Object.keys(this.tables)].length; + if (this.nLoaded === expected) { + this.#loaded = true; + this.onLoaded(); + } + }; + + // willValidateWhenEmpty = (k) => (Array.isArray(this.validateEmptyValues) && this.validateEmptyValues.includes(k)) || this.validateEmptyValues; + + #validateRequirements = async (resolved = this.resolved, requirements = this.#requirements, parentPath) => { + let invalid = []; + + for (let name in requirements) { + let isRequired = this.#isRequired(name, requirements); + + if (this.accordions[name]?.disabled) continue; // Skip disabled accordions + + // // NOTE: Uncomment to block checking requirements inside optional properties + // if (!requirements[name][selfRequiredSymbol] && !resolved[name]) continue; // Do not continue checking requirements if absent and not required + + if (typeof isRequired === "function") isRequired = await isRequired.call(this.resolved); + if (isRequired) { + let path = parentPath ? `${parentPath}-${name}` : name; + + // if (typeof isRequired === "object" && !Array.isArray(isRequired)) + // invalid.push(...(await this.#validateRequirements(resolved[name], isRequired, path))); + // else + if (this.isUndefined(resolved[name]) && this.validateEmptyValues !== null) invalid.push(path); + } + } + + return invalid; + }; + + // Checks missing required properties and throws an error if any are found + onInvalid = () => {}; + onLoaded = () => {}; + onUpdate = () => {}; + onOverride = () => {}; + + // #deleteExtraneousResults = (results, schema) => { + // for (let name in results) { + // if (!schema.properties || !(name in schema.properties)) delete results[name]; + // else if (results[name] && typeof results[name] === "object" && !Array.isArray(results[name])) + // this.#deleteExtraneousResults(results[name], schema.properties[name]); + // } + // }; + + #getRenderable = (schema = {}, required, ignore = {}, path, recursive = false) => { + const entries = Object.entries(schema.properties ?? {}); + + const isArrayOfArrays = (arr) => !!arr.find((v) => Array.isArray(v)); + + const flattenRecursedValues = (arr) => { + const newArr = []; + arr.forEach((item) => { + if (isArrayOfArrays(item)) newArr.push(...item); + else newArr.push(item); + }); + + return newArr; + }; + + const isRenderable = (key, value) => { + if (recursive && value.properties) + return this.#getRenderable( + value, + this.#isRequired([...path, key]), + getIgnore(ignore, key), + [...path, key], + true + ); + else return [key, value]; + }; + + const res = entries + .map(([key, value]) => { + if (!value.properties && key === "definitions") return false; // Skip definitions + + // If conclusively ignored + if (this.ignore["*"]?.[key] === true) + return false; // Skip all properties with this name + else if (this.ignore[key] === true) return false; // Skip this property + + if (this.showLevelOverride >= path.length) return isRenderable(key, value); + if (required[key]) return isRenderable(key, value); + if (this.#getLink([...this.base, ...path, key])) return isRenderable(key, value); + if (!this.onlyRequired) return isRenderable(key, value); + return false; + }) + .filter((result) => !!result); + + return flattenRecursedValues(res); // Flatten on the last pass + }; + + validateOnChange = () => {}; + onStatusChange = () => {}; + onThrow = () => {}; + renderTable = () => {}; + renderCustomHTML = () => {}; + + #getLink = (args) => { + if (typeof args === "string") args = args.split("-"); + const group = this.#getGroup(args); + if (!group) return; + return group.link ? group : undefined; + }; + + #getGroup = (args) => { + if (typeof args === "string") args = args.split("-"); + const group = this.groups.find((linked) => linked.properties.find((link) => link.join("-") === args.join("-"))); + return group; + }; + + #applyToLinkedProperties = (fn, externalPath) => { + const links = this.#getLink(externalPath)?.properties; + if (!links) return []; + return Promise.all( + links + .map((link) => { + const linkEl = this.shadowRoot.getElementById(`${link.join("-")}`); + return fn(link, linkEl); + }) + .flat() + ); + }; + + // Check if all links are not required anymore + #isLinkResolved = async (pathArr) => { + return ( + await this.#applyToLinkedProperties((link) => { + const isRequired = this.#isRequired(link.slice((this.base ?? []).length)); + if (typeof isRequired === "function") return !isRequired.call(this.resolved); + else return !isRequired; + }, pathArr) + ).reduce((a, b) => a && b, true); + }; + + #isRequired = (path, requirements = this.#requirements) => { + if (typeof path === "string") path = path.split("-"); + // path = path.slice(this.base.length); // Remove base path + let res = path.reduce((obj, key) => obj?.[key], requirements); + if (typeof res === "object") res = res[selfRequiredSymbol]; + return res; + }; + + #getGroupElement = (externalPath) => { + const link = this.#getGroup(externalPath); + if (!link) return; + return this.shadowRoot.querySelector(`[data-name="${link.name}"]`); + }; + + isUndefined(value) { + return value === undefined || value === ""; + } + + #isARequiredPropertyString = `is a required property`; + + #resolveErrors = (errors, externalPath, parent) => { + return errors + .map((e) => { + // Custom Error Transformations + if (this.transformErrors) { + const name = externalPath.slice(-1)[0]; + const res = this.transformErrors(e, externalPath, parent[name]); + if (res === false) return; + } + + return e; + }) + .filter((v) => !!v); + }; + + // Assume this is going to return as a Promise—even if the change function isn't returning one + triggerValidation = async (name, path = [], checkLinks = true, input, schema, parent, hooks = {}) => { + const { onError, onWarning, onInfo } = hooks; + + const localPath = [...path, name].filter((str) => typeof str === "string"); // Ignore row information + const externalPath = [...this.base, ...localPath]; + const pathToValidate = [...this.base, ...path]; + + const undefinedPathToken = localPath.findIndex((str) => !str && typeof str !== "number") !== -1; + if (undefinedPathToken) return true; // Will be unable to get schema anyways (additionalProperties) + + if (!input) input = this.getFormElement(localPath, { inputs: true }); + if (!parent) parent = this.#get(path, this.resolved); + if (!schema) schema = this.getSchema(localPath); + + const value = parent[name]; + + const skipValidation = this.validateEmptyValues === null && value === undefined; + + const validateArgs = input.pattern || skipValidation ? [] : [value, schema]; + + // Run validation functions + const jsonSchemaErrors = validateArgs.length === 2 ? this.validateSchema(...validateArgs, name) : []; + const valid = skipValidation ? true : await this.validateOnChange(name, parent, pathToValidate, value); + + if (valid === null) return null; // Skip validation / data change if the value is null + + const isRequired = this.#isRequired(localPath) || (!input.table && input.required); // Do not trust required status of table validations + + let warnings = Array.isArray(valid) + ? valid.filter((info) => info.type === "warning" && (!isRequired || !info.missing)) + : []; + + const errors = [ + ...(Array.isArray(valid) + ? valid?.filter((info) => info.type === "error" || (isRequired && info.missing)) + : []), // Derived Errors + ...jsonSchemaErrors, // JSON Schema Errors + ]; + + const info = Array.isArray(valid) ? valid?.filter((info) => info.type === "info") : []; + + const isUndefined = this.isUndefined(parent[name]); + + const link = this.#getLink(externalPath); + + if (!errors.length) { + if (isUndefined) { + // Throw at least a basic warning if a non-linked property is required and missing + if (!link && isRequired) { + if (this.validateEmptyValues === null) { + warnings.push({ + message: `${schema.title ?? header(name)} is a suggested property.`, + type: "warning", + missing: true, + }); + } else { + const rowName = pathToValidate.slice(-1)[0]; + const isRow = typeof rowName === "number"; + + errors.push({ + message: `${schema.title ?? header(name)} ${this.#isARequiredPropertyString}. ${ + schema.type === "number" + ? isRow + ? templateNaNMessage + : "
      Use the 'I Don't Know' checkbox if unsure." + : "" + }`, + type: "error", + missing: true, + }); + } + } + } + + // Validate Regex Pattern automatically + else if (schema.pattern) { + const regex = new RegExp(schema.pattern, schema.flags); + if (!regex.test(parent[name])) { + errors.push({ + message: `${schema.title ?? header(name)} does not match the required pattern (${regex}).`, + type: "error", + }); + } + } + } + + // Clear old errors and warnings + this.#clearMessages(localPath, "errors"); + this.#clearMessages(localPath, "warnings"); + this.#clearMessages(localPath, "info"); + + const isFunction = typeof valid === "function"; + const isValid = + valid === true || + valid == undefined || + isFunction || + (Array.isArray(valid) && !valid.find((error) => error.type === "error")); + + if (!isValid && errors.length === 0) errors.push({ type: "error", message: "Invalid value detected" }); + + const resolvedErrors = this.#resolveErrors(errors, externalPath, parent); + + // Track errors and warnings + const updatedWarnings = warnings.map((info) => (onWarning ? onWarning(info) : info)).filter((v) => !!v); + const updatedErrors = resolvedErrors.map((info) => (onError ? onError(info) : info)).filter((v) => !!v); + + this.#nErrors += updatedErrors.length; + this.#nWarnings += updatedWarnings.length; + this.checkStatus(); + + // Show aggregated errors and warnings (if allowed) + updatedWarnings.forEach((info) => (onWarning ? "" : this.#addMessage(localPath, info, "warnings"))); + info.forEach((info) => (onInfo ? onInfo(info) : this.#addMessage(localPath, info, "info"))); + + const groupEl = this.#getGroupElement(externalPath); + + if (groupEl) { + groupEl.classList[resolvedErrors.length ? "add" : "remove"]("error"); + groupEl.classList[warnings.length ? "add" : "remove"]("warning"); + } + + const clearAllErrors = isValid && updatedErrors.length === 0; + if (clearAllErrors) { + input.classList.remove("invalid"); + + await this.#applyToLinkedProperties((path, element) => { + element.classList.remove("required", "conditional"); // Links manage their own error and validity states, but only one needs to be valid + }, localPath); + + if (isFunction) valid(); // Run if returned value is a function + } else { + if (this.validateEmptyValues) { + // Add new invalid classes and errors + input.classList.add("invalid"); + + // Only add the conditional class for linked elements + await this.#applyToLinkedProperties( + (name, element) => element.classList.add("required", "conditional"), + [...path, name] + ); + + updatedErrors.forEach((info) => (onError ? "" : this.#addMessage(localPath, info, "errors"))); + } + // element.title = errors.map((info) => info.message).join("\n"); // Set all errors to show on hover + } + + // Update link + if (link) { + if (checkLinks) { + if (!(await this.#isLinkResolved(externalPath))) { + errors.push(...warnings); // Move warnings to errors if the element is linked + warnings = []; + + this.#applyToLinkedProperties((path) => { + const internalPath = path.slice((this.base ?? []).length); + if (internalPath.join("-") === externalPath.join("-")) return; + const name = internalPath.slice(-1)[0]; + this.triggerValidation(name, internalPath.slice(0, -1), false); + }, externalPath); + } + } + } + + return clearAllErrors; + }; + + accordions = {}; + + #render = (schema, results, required = {}, ignore = {}, path = []) => { + let isRenderableGroup = Symbol("isRenderableGroup"); + + const hasPatternProperties = !!schema.patternProperties; + const allowAdditionalProperties = schema.additionalProperties !== false; + + // Filter non-required properties (if specified) and render the sub-schema + const renderable = this.#getRenderable(schema, required, ignore, path); + // // Filter non-required properties (if specified) and render the sub-schema + // const renderable = path.length ? this.#getRenderable(schema, required) : Object.entries(schema.properties ?? {}) + + const hasProperties = renderable.length > 0 || hasPatternProperties || allowAdditionalProperties; + + if (!hasProperties) return html`
      ${this.emptyMessage}
      `; + let renderableWithLinks = renderable.reduce((acc, [name, info]) => { + const externalPath = [...this.base, ...path, name]; + const group = this.#getGroup(externalPath); // Use the base path to find a group + if (group && group.name) { + if (!acc.find(([_, info]) => info === group)) { + const entry = [group.name, group]; + entry[isRenderableGroup] = true; + acc.push(entry); + } + } else acc.push([name, info]); + + return acc; + }, []); + + const getRequiredValue = (name) => { + const value = required[name]; + return value && typeof value === "object" ? value[selfRequiredSymbol] : value; + }; + + const sorted = renderableWithLinks + + // Sort alphabetically + .sort(([name], [name2]) => { + const header1 = header(name); + const header2 = header(name2); + if (header1.toLowerCase() < header2.toLowerCase()) { + return -1; + } + if (header1.toLowerCase() > header2.toLowerCase()) { + return 1; + } + return 0; + }) + + // Sort required properties to the top + .sort((e1, e2) => { + const [name] = e1; + const [name2] = e2; + + if (getRequiredValue(name) && !getRequiredValue(name2)) return -1; // first required + if (!getRequiredValue(name) && getRequiredValue(name2)) return 1; // second required + + if (e1[isRenderableGroup] && !e2[isRenderableGroup]) return -1; // first link + if (!e1[isRenderableGroup] && e2[isRenderableGroup]) return 1; // second link + + return 0; // Both required + }) + + // Prioritise properties without other properties (e.g. name over NWBFile) + .sort((e1, e2) => { + const [_, info] = e1; + const [__, info2] = e2; + + if (e1[isRenderableGroup] || e2[isRenderableGroup]) return 0; + + if (info2.properties && info.properties) return 0; + else if (info2.properties) return -1; + else if (info.properties) return 1; + else return 0; + }); + + if (schema.order) { + sorted.sort(([name], [name2]) => { + const index = schema.order.indexOf(name); + const index2 = schema.order.indexOf(name2); + if (index === -1) return 1; + if (index2 === -1) return -1; + return index - index2; + }); + } + + const finalSort = this.sort ? sorted.sort(this.sort) : sorted; + + let rendered = finalSort.map((entry) => { + const [name, info] = entry; + + const hasPatternProperties = !!info.patternProperties; + + // Render linked properties + if (entry[isRenderableGroup]) { + const linkedProperties = info.properties.map((path) => { + const pathCopy = [...path].slice((this.base ?? []).length); + const name = pathCopy.pop(); + return this.#renderInteractiveElement(name, schema.properties[name], required, pathCopy); + }); + return html` + + `; + } + + // Directly render the interactive property element + if (!info.properties) return this.#renderInteractiveElement(name, info, required, path); + + const hasMany = renderable.length > 1; // How many siblings? + + const localPath = [...path, name]; + + // Check properties that will be rendered before creating the accordion + const base = [...this.base, ...localPath]; + + const explicitlyRequired = schema.required?.includes(name) ?? false; + + const headerName = header(info.title ?? name); + + const renderableInside = this.#getRenderable(info, required[name], ignore, localPath, true); + + const __disabled = this.results.__disabled ?? (this.results.__disabled = {}); + const __interacted = __disabled.__interacted ?? (__disabled.__interacted = {}); + + const hasInteraction = __interacted[name]; // NOTE: This locks the specific value to what the user has chosen... + + const { __disabled: __tempDisabledGlobal = {} } = this.getGlobalValue(localPath.slice(0, -1)); + + const __disabledGlobal = structuredClone(__tempDisabledGlobal); // NOTE: Cloning ensures no property transfer + + let isGlobalEffect = !hasInteraction || (!hasInteraction && __disabledGlobal.__interacted?.[name]); // Indicate whether global effect is used + + const __disabledResolved = isGlobalEffect ? __disabledGlobal : __disabled; + + const isDisabled = !!__disabledResolved[name]; + + const nestedResults = __disabled[name] ?? results[name] ?? this.results[name]; // One or the other will exist—depending on global or local disabling + + if (renderableInside.length) { + const ignore = getIgnore(this.ignore, name); + + const ogContext = this; + const nested = (this.forms[name] = new JSONSchemaForm({ + identifier: this.identifier, + schema: info, + results: { ...nestedResults }, + globals: this.globals?.[name], + + controls: this.controls[name], + + onUpdate: (internalPath, value, forceUpdate) => { + const path = [...localPath, ...internalPath]; + this.updateData(path, value, forceUpdate); + }, + + transformErrors: this.transformErrors, + + required: required[name], // Scoped to the sub-schema + ignore, + dialogOptions: this.dialogOptions, + dialogType: this.dialogType, + onlyRequired: this.onlyRequired, + showLevelOverride: this.showLevelOverride, + deferLoading: this.deferLoading, + groups: this.groups, + validateOnChange: (...args) => this.validateOnChange(...args), + onThrow: (...args) => this.onThrow(...args), + validateEmptyValues: this.validateEmptyValues, + onStatusChange: (status) => { + accordion.setStatus(status); + this.checkStatus(); + }, // Forward status changes to the parent form + onInvalid: (...args) => this.onInvalid(...args), + onLoaded: () => { + this.nLoaded++; + this.checkAllLoaded(); + }, + renderCustomHTML: function (...args) { + return ogContext.renderCustomHTML.call(this, ...args); + }, + renderTable: function (...args) { + return ogContext.renderTable.call(this, ...args); + }, + onOverride: (...args) => this.onOverride(...args), + base, + })); + } + + const oldStates = this.accordions[name]; + + const disableText = "Skip"; + const enableText = "Enable"; + + const disabledPath = [...path, "__disabled"]; + const interactedPath = [...disabledPath, "__interacted"]; + + const enableToggle = new Button({ + label: isDisabled ? enableText : disableText, + size: "extra-small", + onClick: (ev) => { + ev.stopPropagation(); + + const willEnable = enableToggle.label === enableText; + + // Reset parameters on interaction + isGlobalEffect = false; + + enableToggle.label = willEnable ? disableText : enableText; + + willEnable ? enable() : disable(); + this.updateData([...interactedPath, name], true, true); + + this.onUpdate(localPath, this.results[name]); + }, + }); + + // const enableToggle = document.createElement("input"); + const enableToggleContainer = document.createElement("div"); + Object.assign(enableToggleContainer.style, { position: "relative" }); + enableToggleContainer.append(enableToggle); + Object.assign(enableToggle.style, { marginRight: "10px", pointerEvents: "all" }); + + // Skip if accordion will be empty + if (!renderableInside.length) return; + + const accordion = (this.accordions[name] = new Accordion({ + name: headerName, + toggleable: hasMany, // Only show toggle if there are multiple siblings + subtitle: html`
      + ${explicitlyRequired ? "" : enableToggleContainer} +
      `, + content: this.forms[name], + + // States + open: oldStates?.open ?? !hasMany, + disabled: isDisabled, + status: oldStates?.status ?? "valid", // Always show a status + })); + + accordion.id = name; // assign name to accordion id + + const disable = () => { + accordion.disabled = true; + + const target = this.results; + const value = target[name] ?? {}; + + let update = true; + if (target.__disabled?.[name] && isGlobalEffect) update = false; + + // Disabled path is set to actual value + if (update) this.updateData([...disabledPath, name], value); + + // Actual data is set to undefined + this.updateData(localPath, undefined); + + this.checkStatus(); + }; + + const enable = () => { + accordion.disabled = false; + + const { __disabled = {} } = this.results; + + // Actual value is restored to the cached value + if (__disabled[name]) this.updateData(localPath, __disabled[name]); + + // Cached value is cleared + this.updateData([...disabledPath, name], undefined); + + this.checkStatus(); + }; + + if (isGlobalEffect) { + isDisabled ? disable() : enable(); + Object.assign(enableToggle.style, { accentColor: "gray" }); + } + + return accordion; + }); + + if (hasPatternProperties) { + const patternProps = Object.entries(schema.patternProperties).map(([key, schema]) => { + return this.#renderInteractiveElement( + key, + { + ...schema, + title: `Pattern Properties ${key}`, + }, + required, + path, + results, + "pattern" + ); + }); + + rendered = [...rendered, ...patternProps]; + } + + const additionalProps = getEditableItems(results, additionalPropPattern, { schema }); + + // Render additional properties + if (allowAdditionalProperties) { + // NOTE: If no pre-existing additional properties exist, exclude the entire rendering group + if (!additionalProps.length) return rendered; + + const additionalElement = this.#renderInteractiveElement( + "", + { + title: `Additional Properties`, + ...schema, + }, + required, + path, + results, + additionalPropPattern + ); + + return [...rendered, additionalElement]; + } + + // Delete additional properties off the final results + else { + additionalProps.forEach(({ key }) => { + delete results[key]; + }); + } + + return rendered; + }; + + #registerRequirements = (schema, requirements = {}, acc = this.#requirements, path = []) => { + if (!schema) return; + + const isItem = (schema) => schema.items && schema.items.properties; + if (isItem(schema)) schema = schema.items; + + if (schema.required) schema.required.forEach((key) => (acc[key] = true)); + + for (let key in requirements) acc[key] = requirements[key]; // Overwrite standard requirements with custom requirements + + if (schema.properties) { + Object.entries(schema.properties).forEach(([key, value]) => { + const isPropItem = isItem(value); + + if (value.properties || isPropItem) { + const fullPath = [...path, key]; + let nextAccumulator = acc[key]; + const isNotObject = typeof nextAccumulator !== "object"; + if (!nextAccumulator || isNotObject) + nextAccumulator = acc[key] = { [selfRequiredSymbol]: !!(nextAccumulator && !isPropItem) }; + this.#registerRequirements(value, requirements[key], nextAccumulator, fullPath); + } + }); + } + }; + + updated() { + this.checkAllLoaded(); // Throw if no tables + this.#toggleRendered(); // Toggle internal render state + } + + #resetLoadState() { + this.#loaded = false; + this.nLoaded = 0; + this.inputs = {}; + } + + #resolving; + // Check if everything is internally rendered + get rendered() { + if (this.#resolving) return this.#resolving; + this.#resolving = resolve(this.#rendered, () => { + const promise = Promise.all( + [...Object.values(this.forms), ...Object.values(this.tables)].map(({ rendered }) => rendered) + ); + promise.then(() => (this.#resolving = null)); + return promise; + }); + return this.#resolving; + } + + render() { + this.#updateRendered(); // Create a new promise to check on the rendered state + + this.#resetLoadState(); + + const schema = this.schema ?? {}; + + this.resolved = structuredClone(this.results); // Track resolved values as a copy of the user-specified results + + // Register default properties + resolveProperties(schema.properties, this.resolved, this.globals); + + // // Delete extraneous results + // this.#deleteExtraneousResults(this.results, this.schema); + this.#requirements = {}; + this.#registerRequirements(this.schema, this.required); + + return html` + ${schema.description + ? html`

      Description

      +

      ${unsafeHTML(schema.description)}

      ` + : ""} + ${this.#render(schema, this.resolved, this.#requirements, this.ignore)} + `; + } +} + +customElements.get("nwb-jsonschema-form") || customElements.define("nwb-jsonschema-form", JSONSchemaForm); diff --git a/src/electron/renderer/src/stories/JSONSchemaForm.stories.js b/src/electron/renderer/src/stories/JSONSchemaForm.stories.js index bbaa8b48b..8aa3b0e93 100644 --- a/src/electron/renderer/src/stories/JSONSchemaForm.stories.js +++ b/src/electron/renderer/src/stories/JSONSchemaForm.stories.js @@ -1,128 +1,128 @@ -import { JSONSchemaForm } from "./JSONSchemaForm"; - -export default { - title: "Components/JSON Schema Form", - // Set controls - argTypes: {}, -}; - -const Template = (args) => new JSONSchemaForm(args); - -const defaultSchema = { - title: "Test Title", - description: "This is a test description", - properties: { - test: { - type: "string", - default: true, - description: "This is a test description", - }, - warn: { - type: "string", - }, - optional: { - type: "string", - format: "file", - }, - list: { - type: "array", - items: { - type: "string", - format: "file", - }, - }, - }, - required: ["test"], -}; - -export const Default = Template.bind({}); -Default.args = { - results: { - test: "false", - list: ["item"], - }, - schema: defaultSchema, -}; - -export const Nested = Template.bind({}); -Nested.args = { - results: { - name: "name", - ignored: true, - }, - schema: { - properties: { - name: { - type: "string", - }, - warn: { - type: "string", - }, - nested: defaultSchema, - }, - }, - required: { - name: true, - }, - - validateOnChange: (name, parentInfo, path) => { - if (name === "name" && parentInfo[name] !== "name") - return [ - { - type: "error", - message: 'Name must be "name"', - }, - ]; - - if (name === "warn" && parentInfo[name] !== "warn") - return [ - { - type: "warning", - message: 'Warn must be "warn"', - }, - ]; - }, -}; - -const linked = ["age", "date_of_birth"]; -export const Linked = Template.bind({}); -Linked.args = { - schema: { - properties: { - name: { - type: "string", - }, - required: { - type: "string", - }, - age: { - type: "number", - }, - date_of_birth: { - type: "string", - format: "date-time", - }, - }, - required: ["required"], - }, - groups: [ - { - name: "Subject Age", - properties: [["age"], ["date_of_birth"]], - }, - ], - validateOnChange: (name, parentInfo) => { - const bothUnspecified = !parentInfo["age"] && !parentInfo["date_of_birth"]; - - if (bothUnspecified && linked.includes(name)) - return [ - { - type: "error", - message: "Age or date of birth must be specified", - }, - ]; - }, -}; - -// ...this.info.globalState.metadata, -// validateOnChange +import { JSONSchemaForm } from "./JSONSchemaForm"; + +export default { + title: "Components/JSON Schema Form", + // Set controls + argTypes: {}, +}; + +const Template = (args) => new JSONSchemaForm(args); + +const defaultSchema = { + title: "Test Title", + description: "This is a test description", + properties: { + test: { + type: "string", + default: true, + description: "This is a test description", + }, + warn: { + type: "string", + }, + optional: { + type: "string", + format: "file", + }, + list: { + type: "array", + items: { + type: "string", + format: "file", + }, + }, + }, + required: ["test"], +}; + +export const Default = Template.bind({}); +Default.args = { + results: { + test: "false", + list: ["item"], + }, + schema: defaultSchema, +}; + +export const Nested = Template.bind({}); +Nested.args = { + results: { + name: "name", + ignored: true, + }, + schema: { + properties: { + name: { + type: "string", + }, + warn: { + type: "string", + }, + nested: defaultSchema, + }, + }, + required: { + name: true, + }, + + validateOnChange: (name, parentInfo, path) => { + if (name === "name" && parentInfo[name] !== "name") + return [ + { + type: "error", + message: 'Name must be "name"', + }, + ]; + + if (name === "warn" && parentInfo[name] !== "warn") + return [ + { + type: "warning", + message: 'Warn must be "warn"', + }, + ]; + }, +}; + +const linked = ["age", "date_of_birth"]; +export const Linked = Template.bind({}); +Linked.args = { + schema: { + properties: { + name: { + type: "string", + }, + required: { + type: "string", + }, + age: { + type: "number", + }, + date_of_birth: { + type: "string", + format: "date-time", + }, + }, + required: ["required"], + }, + groups: [ + { + name: "Subject Age", + properties: [["age"], ["date_of_birth"]], + }, + ], + validateOnChange: (name, parentInfo) => { + const bothUnspecified = !parentInfo["age"] && !parentInfo["date_of_birth"]; + + if (bothUnspecified && linked.includes(name)) + return [ + { + type: "error", + message: "Age or date of birth must be specified", + }, + ]; + }, +}; + +// ...this.info.globalState.metadata, +// validateOnChange diff --git a/src/electron/renderer/src/stories/JSONSchemaInput.js b/src/electron/renderer/src/stories/JSONSchemaInput.js index f68fb0f72..786fe9eea 100644 --- a/src/electron/renderer/src/stories/JSONSchemaInput.js +++ b/src/electron/renderer/src/stories/JSONSchemaInput.js @@ -1,1279 +1,1279 @@ -import { LitElement, css, html } from "lit"; -import { unsafeHTML } from "lit/directives/unsafe-html.js"; -import { FilesystemSelector } from "./FileSystemSelector"; - -import { BasicTable } from "./BasicTable"; -import { header, tempPropertyKey, tempPropertyValueKey } from "./forms/utils"; - -import { Button } from "./Button"; -import { List } from "./List"; -import { Modal } from "./Modal"; - -import { capitalize } from "./forms/utils"; -import { JSONSchemaForm, getIgnore } from "./JSONSchemaForm"; -import { Search } from "./Search"; -import tippy from "tippy.js"; -import { merge } from "./pages/utils"; -import { OptionalSection } from "./OptionalSection"; -import { InspectorListItem } from "./preview/inspector/InspectorList"; - -const isDevelopment = !!import.meta.env; - -const dateTimeRegex = /(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})/; - -function resolveDateTime(value) { - if (typeof value === "string") { - const match = value.match(dateTimeRegex); - if (match) return `${match[1]}-${match[2]}-${match[3]}T${match[4]}:${match[5]}`; - return value; - } - - return value; -} - -export function createTable(fullPath, { onUpdate, onThrow, overrides = {} }) { - const name = fullPath.slice(-1)[0]; - const path = fullPath.slice(0, -1); - const relativePath = this.form?.base ? fullPath.slice(this.form.base.length) : fullPath; - - const schema = this.schema; - const validateOnChange = this.validateOnChange; - - const ignore = this.form?.ignore ? getIgnore(this.form?.ignore, path) : {}; - - const commonValidationFunction = async (tableBasePath, path, parent, newValue, itemPropSchema) => { - const warnings = []; - const errors = []; - - const name = path.slice(-1)[0]; - const completePath = [...tableBasePath, ...path.slice(0, -1)]; - - const result = await (validateOnChange - ? this.onValidate - ? this.onValidate() - : this.form?.triggerValidation - ? this.form.triggerValidation( - name, - completePath, - false, - this, - itemPropSchema, - { ...parent, [name]: newValue }, - { - onError: (error) => { - errors.push(error); // Skip counting errors - }, - onWarning: (warning) => { - warnings.push(warning); // Skip counting warnings - }, - } - ) // NOTE: No pattern properties support - : "" - : true); - - const returnedValue = errors.length ? errors : warnings.length ? warnings : result; - - return returnedValue; - }; - - const commonTableMetadata = { - onStatusChange: () => this.form?.checkStatus && this.form.checkStatus(), // Check status on all elements - validateEmptyCells: this.validateEmptyValue, - deferLoading: this.form?.deferLoading, - onLoaded: () => { - if (this.form) { - if (this.form.nLoaded) this.form.nLoaded++; - if (this.form.checkAllLoaded) this.form.checkAllLoaded(); - } - }, - onThrow: (...args) => onThrow(...args), - }; - - const addPropertyKeyToSchema = (schema) => { - const schemaCopy = structuredClone(schema); - - const schemaItemsRef = schemaCopy["items"]; - - if (!schemaItemsRef.properties) schemaItemsRef.properties = {}; - if (!schemaItemsRef.required) schemaItemsRef.required = []; - - schemaItemsRef.properties[tempPropertyKey] = { title: "Property Key", type: "string", pattern: name }; - if (!schemaItemsRef.order) schemaItemsRef.order = []; - schemaItemsRef.order.unshift(tempPropertyKey); - - schemaItemsRef.required.push(tempPropertyKey); - - return schemaCopy; - }; - - const createNestedTable = (id, value, { name: propName = id, nestedSchema = schema } = {}) => { - const schemaCopy = addPropertyKeyToSchema(nestedSchema); - - const resultPath = [...path]; - - const schemaPath = [...fullPath]; - - // THIS IS AN ISSUE - const rowData = Object.entries(value).map(([key, value]) => { - return !schemaCopy["items"] - ? { [tempPropertyKey]: key, [tempPropertyValueKey]: value } - : { [tempPropertyKey]: key, ...value }; - }); - - if (propName) { - resultPath.push(propName); - schemaPath.push(propName); - } - - const allRemovedKeys = new Set(); - - const keyAlreadyExists = (key) => Object.keys(value).includes(key); - - const previousValidValues = {}; - - function resolvePath(path, target) { - return path - .map((key, i) => { - const ogKey = key; - const nextKey = path[i + 1]; - if (key === tempPropertyKey) key = target[tempPropertyKey]; - if (nextKey === tempPropertyKey) key = []; - - target = target[ogKey] ?? {}; - - if (nextKey === tempPropertyValueKey) return target[tempPropertyKey]; // Grab next property key - if (key === tempPropertyValueKey) return []; - - return key; - }) - .flat(); - } - - function setValueOnAccumulator(row, acc) { - const key = row[tempPropertyKey]; - - if (!key) return acc; - - if (tempPropertyValueKey in row) { - const propValue = row[tempPropertyValueKey]; - if (Array.isArray(propValue)) - acc[key] = propValue.reduce((acc, row) => setValueOnAccumulator(row, acc), {}); - else acc[key] = propValue; - } else { - const copy = { ...row }; - delete copy[tempPropertyKey]; - acc[key] = copy; - } - - return acc; - } - - const nestedIgnore = this.form?.ignore ? getIgnore(this.form?.ignore, schemaPath) : {}; - - merge(overrides.ignore, nestedIgnore); - - merge(overrides.schema, schemaCopy, { arrays: "append" }); - - const tableMetadata = { - keyColumn: tempPropertyKey, - schema: schemaCopy, - data: rowData, - ignore: nestedIgnore, // According to schema - - onUpdate: function (path, newValue) { - const oldKeys = Object.keys(value); - - if (path.slice(-1)[0] === tempPropertyKey && keyAlreadyExists(newValue)) return; // Do not overwrite existing keys - - const result = this.data.reduce((acc, row) => setValueOnAccumulator(row, acc), {}); - - const newKeys = Object.keys(result); - const removedKeys = oldKeys.filter((k) => !newKeys.includes(k)); - removedKeys.forEach((key) => allRemovedKeys.add(key)); - newKeys.forEach((key) => allRemovedKeys.delete(key)); - allRemovedKeys.forEach((key) => (result[key] = undefined)); - - // const resolvedPath = resolvePath(path, this.data) - return onUpdate.call(this, [], result); // Update all table data - }, - - validateOnChange: function (path, parent, newValue) { - const rowIdx = path[0]; - const currentKey = this.data[rowIdx]?.[tempPropertyKey]; - - const updatedPath = resolvePath(path, this.data); - - const resolvedKey = previousValidValues[rowIdx] ?? currentKey; - - // Do not overwrite existing keys - if (path.slice(-1)[0] === tempPropertyKey && resolvedKey !== newValue) { - if (keyAlreadyExists(newValue)) { - if (!previousValidValues[rowIdx]) previousValidValues[rowIdx] = resolvedKey; - - return [ - { - message: `Key already exists.
      This value is still ${resolvedKey}.`, - type: "error", - }, - ]; - } else delete previousValidValues[rowIdx]; - } - - const toIterate = updatedPath.filter((value) => typeof value === "string"); - - const itemPropsSchema = toIterate.reduce( - (acc, key) => acc?.properties?.[key] ?? acc?.items?.properties?.[key], - schemaCopy - ); - - return commonValidationFunction([], updatedPath, parent, newValue, itemPropsSchema, 1); - }, - ...commonTableMetadata, - }; - - const table = this.renderTable(id, tableMetadata, fullPath); - - return table; // Try rendering as a nested table with a fake property key (otherwise use nested forms) - }; - - const schemaCopy = structuredClone(schema); - - // Possibly multiple tables - if (isEditableObject(schema, this.value)) { - // One table with nested tables for each property - const data = getEditableItems(this.value, this.pattern, { name, schema: schemaCopy }).reduce( - (acc, { key, value }) => { - acc[key] = value; - return acc; - }, - {} - ); - - const table = createNestedTable(name, data, { schema }); - if (table) return table; - } - - const nestedIgnore = getIgnore(ignore, fullPath); - Object.assign(nestedIgnore, overrides.ignore ?? {}); - - merge(overrides.ignore, nestedIgnore); - - merge(overrides.schema, schemaCopy, { arrays: "append" }); - - // Normal table parsing - const tableMetadata = { - schema: schemaCopy, - data: this.value, - - ignore: nestedIgnore, // According to schema - - onUpdate: function () { - return onUpdate.call(this, relativePath, this.data); // Update all table data - }, - - validateOnChange: (...args) => commonValidationFunction(relativePath, ...args), - - ...commonTableMetadata, - }; - - const table = (this.table = this.renderTable(name, tableMetadata, path)); // Try creating table. Otherwise use nested form - - if (table) { - const tableEl = table === true ? new BasicTable(tableMetadata) : table; - const tables = this.form?.tables; - if (tables) tables[name] = tableEl; - return tableEl; - } -} - -// Schema or value indicates editable object -export const isEditableObject = (schema, value) => - schema.type === "object" || (value && typeof value === "object" && !Array.isArray(value)); - -export const isAdditionalProperties = (pattern) => pattern === "additional"; -export const isPatternProperties = (pattern) => pattern && !isAdditionalProperties(pattern); - -export const getEditableItems = (value = {}, pattern, { name, schema } = {}) => { - let items = Object.entries(value); - - const allowAdditionalProperties = isAdditionalProperties(pattern); - - if (isPatternProperties(pattern)) { - const regex = new RegExp(name); - items = items.filter(([key]) => regex.test(key)); - } else if (allowAdditionalProperties) { - const props = Object.keys(schema.properties ?? {}); - items = items.filter(([key]) => !props.includes(key)); - - const patternProps = Object.keys(schema.patternProperties ?? {}); - patternProps.forEach((key) => { - const regex = new RegExp(key); - items = items.filter(([k]) => !regex.test(k)); - }); - } else if (schema.properties) items = items.filter(([key]) => key in schema.properties); - - items = items.filter(([key]) => !key.includes("__")); // Remove secret properties - - return items.map(([key, value]) => { - return { key, value }; - }); -}; - -const isFilesystemSelector = (name = "", format) => { - if (Array.isArray(format)) return format.map((f) => isFilesystemSelector(name, f)).every(Boolean) ? format : null; - - const matched = name.match(/(.+_)?(.+)_paths?/); - if (!format && matched) format = matched[2] === "folder" ? "directory" : matched[2]; - return ["file", "directory"].includes(format) ? format : null; // Handle file and directory formats -}; - -function getFirstFocusableElement(element) { - const root = element.shadowRoot || element; - const focusableElements = getKeyboardFocusableElements(root); - if (focusableElements.length === 0) { - for (let child of root.children) { - const focusableElement = getFirstFocusableElement(child); - if (focusableElement) return focusableElement; - } - } - return focusableElements[0]; -} - -function getKeyboardFocusableElements(element = document) { - const root = element.shadowRoot || element; - return [ - ...root.querySelectorAll('a[href], button, input, textarea, select, details,[tabindex]:not([tabindex="-1"])'), - ].filter( - (focusableElement) => - !focusableElement.hasAttribute("disabled") && !focusableElement.getAttribute("aria-hidden") - ); -} - -export class JSONSchemaInput extends LitElement { - static get styles() { - return css` - * { - box-sizing: border-box; - } - - :host(.invalid) .guided--input { - background: rgb(255, 229, 228) !important; - } - - jsonschema-input { - width: 100%; - } - - main { - display: flex; - align-items: center; - } - - #controls { - margin-left: 10px; - flex-grow: 1; - } - - .guided--input { - width: 100%; - border-radius: 4px; - padding: 10px 12px; - font-size: 100%; - font-weight: normal; - border: 1px solid var(--color-border); - transition: border-color 150ms ease-in-out 0s; - outline: none; - color: rgb(33, 49, 60); - background-color: rgb(255, 255, 255); - } - - .guided--input:disabled { - opacity: 0.5; - pointer-events: none; - } - - .guided--input::placeholder { - opacity: 0.5; - } - - .guided--text-area { - height: 5em; - resize: none; - font-family: unset; - } - .guided--text-area-tall { - height: 15em; - } - .guided--input:hover { - box-shadow: rgb(231 238 236) 0px 0px 0px 2px; - } - .guided--input:focus { - outline: 0; - box-shadow: var(--color-light-green) 0px 0px 0px 1px; - } - - input[type="number"].hideStep::-webkit-outer-spin-button, - input[type="number"].hideStep::-webkit-inner-spin-button { - -webkit-appearance: none; - margin: 0; - } - - /* Firefox */ - input[type="number"].hideStep { - -moz-appearance: textfield; - } - - .guided--text-input-instructions { - font-size: 13px; - width: 100%; - padding-top: 4px; - color: dimgray !important; - margin: 0 0; - line-height: 1.4285em; - } - - .nan-handler { - display: flex; - align-items: center; - margin-left: 5px; - white-space: nowrap; - } - - .nan-handler span { - margin-left: 5px; - font-size: 12px; - } - - .schema-input.list { - width: 100%; - } - - .guided--form-label { - display: block; - width: 100%; - margin: 0; - margin-bottom: 10px; - color: black; - font-weight: 600; - font-size: 1.2em !important; - } - - :host([data-table]) .guided--form-label { - margin-bottom: 0px; - } - - .guided--form-label.centered { - text-align: center; - } - - .guided--form-label.header { - font-size: 1.5em !important; - } - - .required label:after { - content: " *"; - color: #ff0033; - } - - :host(:not([validateemptyvalue])) .required label:after { - color: gray; - } - - .required.conditional label:after { - color: transparent; - } - - hr { - display: block; - height: 1px; - border: 0; - border-top: 1px solid #ccc; - padding: 0; - margin-bottom: 1em; - } - `; - } - - static get properties() { - return { - schema: { type: Object, reflect: false }, - validateEmptyValue: { type: Boolean, reflect: true }, - required: { type: Boolean, reflect: true }, - }; - } - - // Enforce dynamic required properties - attributeChangedCallback(key, _, latest) { - super.attributeChangedCallback(...arguments); - - const formSchema = this.form?.schema; - if (!formSchema) return; - - if (key === "required") { - const name = this.path.slice(-1)[0]; - - if (latest !== null && !this.conditional) { - const requirements = formSchema.required ?? (formSchema.required = []); - if (!requirements.includes(name)) requirements.push(name); - } - - // Remove requirement from form schema (and force if conditional requirement) - else { - const requirements = formSchema.required; - if (requirements && requirements.includes(name)) { - const idx = requirements.indexOf(name); - if (idx > -1) requirements.splice(idx, 1); - } - } - } - } - - // schema, - // parent, - // path, - // form, - // pattern - // showLabel - // description - controls = []; - // required; - validateOnChange = true; - - constructor(props = {}) { - super(); - Object.assign(this, props); - if (props.validateEmptyValue === false) this.validateEmptyValue = true; // False is treated as required but not triggered if empty - } - - // Print the default value of the schema if not caught - onUncaughtSchema = (schema) => { - // In development, show uncaught schemas - if (!isDevelopment) { - if (this.form) { - const inputContainer = this.form.shadowRoot.querySelector(`#${this.path.slice(-1)[0]}`); - inputContainer.style.display = "none"; - } - } - - if (schema.default) return `
      ${JSON.stringify(schema.default, null, 2)}
      `; - - const error = new InspectorListItem({ - message: - "

      Internal GUIDE Error

      Cannot render this property because of a misformatted schema.", - }); - error.style.width = "100%"; - - return error; - }; - - // onUpdate = () => {} - // onValidate = () => {} - - updateData(value, forceValidate = false) { - if (!forceValidate) { - // Update the actual input element - const inputElement = this.getElement(); - if (!inputElement) return false; - - const hasList = inputElement.querySelector("nwb-list"); - - if (inputElement.type === "checkbox") inputElement.checked = value; - else if (hasList) - hasList.items = this.#mapToList({ value, hasList }); // NOTE: Make sure this is correct - else if (inputElement instanceof Search) inputElement.shadowRoot.querySelector("input").value = value; - else inputElement.value = value; - } - - const { path: fullPath } = this; - const path = typeof fullPath === "string" ? fullPath.split("-") : [...fullPath]; - const name = path.splice(-1)[0]; - - this.#updateData(fullPath, value); - this.#triggerValidation(name, path); // NOTE: Is asynchronous - - return true; - } - - getElement = () => this.shadowRoot.querySelector(".schema-input"); - - #activateTimeoutValidation = (name, path, hooks) => { - this.#clearTimeoutValidation(); - this.#validationTimeout = setTimeout(() => { - this.onValidate - ? this.onValidate() - : this.form?.triggerValidation - ? this.form.triggerValidation(name, path, undefined, this, undefined, undefined, hooks) - : ""; - }, 1000); - }; - - #clearTimeoutValidation = () => { - if (this.#validationTimeout) clearTimeout(this.#validationTimeout); - }; - - #validationTimeout = null; - #updateData = (fullPath, value, forceUpdate, hooks = {}) => { - this.onUpdate - ? this.onUpdate(value) - : this.form?.updateData - ? this.form.updateData(fullPath, value, forceUpdate) - : ""; - - const path = [...fullPath]; - const name = path.splice(-1)[0]; - - this.value = value; // Update the latest value - - if (hooks.willTimeout !== false) this.#activateTimeoutValidation(name, path, hooks); - }; - - #triggerValidation = async (name, path) => { - this.#clearTimeoutValidation(); - return this.onValidate - ? this.onValidate() - : this.form?.triggerValidation - ? this.form.triggerValidation(name, path, undefined, this) - : ""; - }; - - updated() { - const inputElement = this.getElement(); - if (inputElement) inputElement.dispatchEvent(new Event("change")); - } - - render() { - const { schema } = this; - - const input = this.#render(); - - if (input === null) return null; // Hide rendering - - const description = this.description ?? schema.description; - - const descriptionHTML = description - ? html`

      - ${unsafeHTML(capitalize(description))}${[".", "?", "!"].includes(description.slice(-1)[0]) ? "" : "."} -

      ` - : ""; - - return html` -
      - ${this.showLabel - ? html`` - : ""} -
      ${input}${this.controls ? html`
      ${this.controls}
      ` : ""}
      - ${descriptionHTML} -
      - `; - } - - #onThrow = (...args) => (this.onThrow ? this.onThrow(...args) : this.form?.onThrow(...args)); - - #list; - #mapToList({ value = this.value, schema = this.schema, list } = {}) { - const { path: fullPath } = this; - const path = typeof fullPath === "string" ? fullPath.split("-") : [...fullPath]; - const name = path.splice(-1)[0]; - - const canAddProperties = isEditableObject(this.schema, this.value); - - if (canAddProperties) { - const editable = getEditableItems(this.value, this.pattern, { name, schema }); - - return editable.map(({ key, value }) => { - return { - key, - value, - controls: [ - new Button({ - label: "Edit", - size: "small", - onClick: () => - this.#createModal({ - key, - schema: isAdditionalProperties(this.pattern) ? undefined : schema, - results: value, - list: list ?? this.#list, - }), - }), - ], - }; - }); - } else { - const resolved = value ?? []; - return resolved - ? resolved.map((value) => { - return { value }; - }) - : []; - } - } - - #modal; - - #createModal({ key, schema = {}, results, list, label } = {}) { - const schemaCopy = structuredClone(schema); - - const createNewObject = !results && (schemaCopy.type === "object" || schemaCopy.properties); - - // const schemaProperties = Object.keys(schema.properties ?? {}); - // const additionalProperties = Object.keys(results).filter((key) => !schemaProperties.includes(key)); - // // const additionalElement = html`Cannot edit additional properties (${additionalProperties}) at this time` - - const allowPatternProperties = isPatternProperties(this.pattern); - const allowAdditionalProperties = isAdditionalProperties(this.pattern); - const createNewPatternProperty = allowPatternProperties && createNewObject; - - // Add a property name entry to the schema - if (createNewPatternProperty) { - schemaCopy.properties = { - __: { title: "Property Name", type: "string", pattern: this.pattern }, - ...schemaCopy.properties, - }; - schemaCopy.required = [...(schemaCopy.required ?? []), "__"]; - } - - if (this.#modal) this.#modal.remove(); - - const submitButton = new Button({ - label: "Submit", - primary: true, - }); - - const isObject = schemaCopy.type === "object" || schemaCopy.properties; // NOTE: For formatted strings, this is not an object - - // NOTE: Will be replaced by single instances - let updateTarget = results ?? (isObject ? {} : undefined); - - submitButton.onClick = async () => { - await nestedModalElement.validate(); - - let value = updateTarget; - - if (schemaCopy?.format && schemaCopy.properties) { - let newValue = schemaCopy?.format; - for (let key in schemaCopy.properties) newValue = newValue.replace(`{${key}}`, value[key] ?? "").trim(); - value = newValue; - } - - // Skip if not unique - if (schemaCopy.uniqueItems && list.items.find((item) => item.value === value)) - return this.#modal.toggle(false); - - // Add to the list - if (createNewPatternProperty) { - const key = value.__; - delete value.__; - list.add({ key, value }); - } else list.add({ key, value }); - - this.#modal.toggle(false); - }; - - this.#modal = new Modal({ - header: label ? `${header(label)} Editor` : key ? header(key) : `Property Editor`, - footer: submitButton, - showCloseButton: createNewObject, - }); - - const div = document.createElement("div"); - div.style.padding = "25px"; - - const inputTitle = header(schemaCopy.title ?? label ?? "Value"); - - const nestedModalElement = isObject - ? new JSONSchemaForm({ - schema: schemaCopy, - results: updateTarget, - validateEmptyValues: false, - onUpdate: (internalPath, value) => { - if (!createNewObject) { - const path = [key, ...internalPath]; - this.#updateData(path, value, true); // Live updates - } - }, - renderTable: this.renderTable, - onThrow: this.#onThrow, - }) - : new JSONSchemaForm({ - schema: { - properties: { - [tempPropertyKey]: { - ...schemaCopy, - title: inputTitle, - }, - }, - required: [tempPropertyKey], - }, - validateEmptyValues: false, - results: updateTarget, - onUpdate: (_, value) => { - if (createNewObject) updateTarget[key] = value; - else updateTarget = value; - }, - // renderTable: this.renderTable, - // onThrow: this.#onThrow, - }); - - div.append(nestedModalElement); - - this.#modal.append(div); - - document.body.append(this.#modal); - - setTimeout(() => this.#modal.toggle(true)); - - return this.#modal; - } - - #getType = (value = this.value) => (Array.isArray(value) ? "array" : typeof value); - - #handleNextInput = (idx) => { - const next = Object.values(this.form.inputs)[idx]; - if (next) { - const firstFocusableElement = getFirstFocusableElement(next); - if (firstFocusableElement) { - if (firstFocusableElement.tagName === "BUTTON") return this.#handleNextInput(idx + 1); - firstFocusableElement.focus(); - } - } - }; - - #moveToNextInput = (ev) => { - if (ev.key === "Enter") { - ev.preventDefault(); - if (this.form?.inputs) { - const idx = Object.values(this.form.inputs).findIndex((input) => input === this); - this.#handleNextInput(idx + 1); - } - - ev.target.blur(); - } - }; - - #render() { - const { validateOnChange, schema, path: fullPath } = this; - - this.removeAttribute("data-table"); - - // Do your best to fill in missing schema values - if (!("type" in schema)) schema.type = this.#getType(); - - const resolvedFullPath = typeof fullPath === "string" ? fullPath.split("-") : [...fullPath]; - const path = [...resolvedFullPath]; - const name = path.splice(-1)[0]; - - const isArray = schema.type === "array"; // Handle string (and related) formats / types - - const itemSchema = this.form?.getSchema ? this.form.getSchema("items", schema) : schema["items"]; - const isTable = itemSchema?.type === "object" && this.renderTable; - - const canAddProperties = isEditableObject(this.schema, this.value); - - if (this.renderCustomHTML) { - const custom = this.renderCustomHTML(name, schema, path, { - onUpdate: this.#updateData, - onThrow: this.#onThrow, - }); - - const renderEmpty = custom === null; - if (custom) return custom; - else if (renderEmpty) { - this.remove(); // Remove from DOM so that parent can be empty - return; - } - } - - // Handle file and directory formats - const createFilesystemSelector = (format) => { - const filesystemSelectorElement = new FilesystemSelector({ - type: format, - value: this.value, - accept: schema.accept, - onSelect: (paths = []) => { - const value = paths.length ? paths : undefined; - this.#updateData(fullPath, value); - }, - onChange: (filePath) => validateOnChange && this.#triggerValidation(name, path), - onThrow: (...args) => this.#onThrow(...args), - dialogOptions: this.form?.dialogOptions, - dialogType: this.form?.dialogType, - multiple: isArray, - }); - filesystemSelectorElement.classList.add("schema-input"); - return filesystemSelectorElement; - }; - - // Transform to single item if maxItems is 1 - if (isArray && schema.maxItems === 1 && !isTable) { - return new JSONSchemaInput({ - value: this.value?.[0], - schema: { - ...schema.items, - strict: schema.strict, - }, - path: fullPath, - validateEmptyValue: this.validateEmptyValue, - required: this.required, - validateOnChange: () => (validateOnChange ? this.#triggerValidation(name, path) : ""), - form: this.form, - onUpdate: (value) => this.#updateData(fullPath, [value]), - }); - } - - if (isArray || canAddProperties) { - // if ('value' in this && !Array.isArray(this.value)) this.value = [ this.value ] - - const allowPatternProperties = isPatternProperties(this.pattern); - const allowAdditionalProperties = isAdditionalProperties(this.pattern); - - // Provide default item types - if (isArray) { - const hasItemsRef = "items" in schema && "$ref" in schema.items; - if (!("items" in schema)) schema.items = {}; - if (!("type" in schema.items) && !hasItemsRef) { - // Guess the type of the first item - if (this.value) { - const itemToCheck = this.value[0]; - schema.items.type = itemToCheck ? this.#getType(itemToCheck) : "string"; - } - - // If no value, handle uncaught schema - else return this.onUncaughtSchema(schema); - } - } - - const fileSystemFormat = isFilesystemSelector(name, itemSchema?.format); - if (fileSystemFormat) return createFilesystemSelector(fileSystemFormat); - // Create tables if possible - else if (itemSchema?.type === "string" && !itemSchema.properties) { - const list = new List({ - items: this.value, - emptyMessage: "No items", - onChange: ({ items }) => { - this.#updateData(fullPath, items.length ? items.map((o) => o.value) : undefined); - if (validateOnChange) this.#triggerValidation(name, path); - }, - }); - - if (itemSchema.enum) { - const search = new Search({ - options: itemSchema.enum.map((v) => { - return { - key: v, - value: v, - label: itemSchema.enumLabels?.[v] ?? v, - keywords: itemSchema.enumKeywords?.[v], - description: itemSchema.enumDescriptions?.[v], - link: itemSchema.enumLinks?.[v], - }; - }), - value: this.value, - listMode: schema.strict === false ? "click" : "append", - showAllWhenEmpty: false, - onSelect: async ({ label, value }) => { - if (!value) return; - if (schema.uniqueItems && this.value && this.value.includes(value)) return; - list.add({ content: label, value }); - }, - }); - - search.style.height = "auto"; - return html`
      ${search}${list}
      `; - } else { - const input = document.createElement("input"); - input.classList.add("guided--input"); - input.placeholder = "Provide an item for the list"; - - const submitButton = new Button({ - label: "Submit", - primary: true, - size: "small", - onClick: () => { - const value = input.value; - if (!value) return; - if (schema.uniqueItems && this.value && this.value.includes(value)) return; - list.add({ value }); - input.value = ""; - }, - }); - - input.addEventListener("keydown", (ev) => { - if (ev.key === "Enter") submitButton.onClick(); - }); - - return html`
      validateOnChange && this.#triggerValidation(name, path)} - > -
      ${input}${submitButton}
      - ${list} -
      `; - } - } else if (isTable) { - const instanceThis = this; - - function updateFunction(path, value = this.data) { - return instanceThis.#updateData(path, value, true, { - willTimeout: false, // Since there is a special validation function, do not trigger a timeout validation call - onError: (e) => e, - onWarning: (e) => e, - }); - } - - const externalPath = this.form?.base ? [...this.form.base, ...resolvedFullPath] : resolvedFullPath; - - const table = createTable.call(this, externalPath, { - onUpdate: updateFunction, - onThrow: this.#onThrow, - }); // Ensure change propagates - - if (table) { - this.setAttribute("data-table", ""); - return table; - } - } - - const addButton = new Button({ - size: "small", - }); - - addButton.innerText = `Add ${canAddProperties ? "Property" : "Item"}`; - - const buttonDiv = document.createElement("div"); - Object.assign(buttonDiv.style, { width: "fit-content" }); - buttonDiv.append(addButton); - - const disableButton = ({ message, submessage }) => { - addButton.setAttribute("disabled", true); - tippy(buttonDiv, { - content: `
      ${message}
      ${submessage}
      `, - allowHTML: true, - }); - }; - - const list = (this.#list = new List({ - items: this.#mapToList(), - - // Add edit button when new items are added - // NOTE: Duplicates some code in #mapToList - transform: (item) => { - if (canAddProperties) { - const { key, value } = item; - item.controls = [ - new Button({ - label: "Edit", - size: "small", - onClick: () => { - this.#createModal({ - key, - schema, - results: value, - list, - }); - }, - }), - ]; - } - }, - onChange: async ({ object, items }, { object: oldObject }) => { - if (this.pattern) { - const oldKeys = Object.keys(oldObject); - const newKeys = Object.keys(object); - const removedKeys = oldKeys.filter((k) => !newKeys.includes(k)); - const updatedKeys = newKeys.filter((k) => oldObject[k] !== object[k]); - removedKeys.forEach((k) => this.#updateData([...fullPath.slice(1), k], undefined)); - updatedKeys.forEach((k) => this.#updateData([...fullPath.slice(1), k], object[k])); - } else { - this.#updateData(fullPath, items.length ? items.map((o) => o.value) : undefined); - } - - if (validateOnChange) await this.#triggerValidation(name, path); - }, - })); - - if (allowAdditionalProperties) - disableButton({ - message: "Additional properties cannot be added at this time.", - submessage: "They don't have a predictable structure.", - }); - - addButton.onClick = () => - this.#createModal({ label: name, list, schema: allowPatternProperties ? schema : itemSchema }); - - return html` -
      validateOnChange && this.#triggerValidation(name, path)}> - ${list} ${buttonDiv} -
      - `; - } - - // Basic enumeration of properties on a select element - if (schema.enum && schema.enum.length) { - const options = schema.enum.map((v) => { - return { - key: v, - value: v, - category: schema.enumCategories?.[v], - label: schema.enumLabels?.[v] ?? v, - keywords: schema.enumKeywords?.[v], - description: schema.enumDescriptions?.[v], - link: schema.enumLinks?.[v], - }; - }); - - const search = new Search({ - options, - strict: schema.strict, - value: { - value: this.value, - key: this.value, - category: schema.enumCategories?.[this.value], - label: schema.enumLabels?.[this.value], - keywords: schema.enumKeywords?.[this.value], - }, - showAllWhenEmpty: false, - listMode: "input", - onSelect: async ({ value, key }) => { - const result = value ?? key; - this.#updateData(fullPath, result); - if (validateOnChange) await this.#triggerValidation(name, path); - }, - }); - - search.classList.add("schema-input"); - search.onchange = () => validateOnChange && this.#triggerValidation(name, path); // Ensure validation on forced change - - search.addEventListener("keydown", this.#moveToNextInput); - this.style.width = "100%"; - return search; - } else if (schema.type === "boolean") { - const optional = new OptionalSection({ - value: this.value ?? false, - color: "rgb(32,32,32)", - size: "small", - onSelect: (value) => this.#updateData(fullPath, value), - onChange: () => validateOnChange && this.#triggerValidation(name, path), - }); - - optional.classList.add("schema-input"); - return optional; - } else if (schema.type === "string" || schema.type === "number" || schema.type === "integer") { - const isInteger = schema.type === "integer"; - if (isInteger) schema.type = "number"; - const isNumber = schema.type === "number"; - - const isRequiredNumber = isNumber && this.required; - - const fileSystemFormat = isFilesystemSelector(name, schema.format); - if (fileSystemFormat) return createFilesystemSelector(fileSystemFormat); - // Handle long string formats - else if (schema.format === "long" || isArray) - return html``; - // Handle other string formats - else { - const isDateTime = schema.format === "date-time"; - - const type = isDateTime - ? "datetime-local" - : schema.format ?? (schema.type === "string" ? "text" : schema.type); - - const value = isDateTime ? resolveDateTime(this.value) : this.value; - - const { minimum, maximum, exclusiveMax, exclusiveMin } = schema; - const min = exclusiveMin ?? minimum; - const max = exclusiveMax ?? maximum; - - return html` - { - let value = ev.target.value; - let newValue = value; - - // const isBlank = value === ''; - - if (isInteger) value = newValue = parseInt(value); - else if (isNumber) value = newValue = parseFloat(value); - - if (isNumber) { - if ("min" in schema && newValue < schema.min) newValue = schema.min; - else if ("max" in schema && newValue > schema.max) newValue = schema.max; - - if (isNaN(newValue)) newValue = undefined; - } - - if (schema.transform) newValue = schema.transform(newValue, this.value, schema); - - // // Do not check pattern if value is empty - // if (schema.pattern && !isBlank) { - // const regex = new RegExp(schema.pattern) - // if (!regex.test(isNaN(newValue) ? value : newValue)) newValue = this.value // revert to last value - // } - - if (isNumber && newValue !== value) { - ev.target.value = newValue; - value = newValue; - } - - if (isRequiredNumber) { - const nanHandler = ev.target.parentNode.querySelector(".nan-handler"); - if (!(newValue && Number.isNaN(newValue))) nanHandler.checked = false; - } - - this.#updateData(fullPath, value); - }} - @change=${(ev) => validateOnChange && this.#triggerValidation(name, path)} - @keydown=${this.#moveToNextInput} - /> - ${schema.unit ?? ""} - ${isRequiredNumber - ? html`
      { - const siblingInput = ev.target.parentNode.previousElementSibling; - if (ev.target.checked) { - this.#updateData(fullPath, null); - siblingInput.setAttribute("disabled", true); - } else { - siblingInput.removeAttribute("disabled"); - const ev = new Event("input"); - siblingInput.dispatchEvent(ev); - } - this.#triggerValidation(name, path); - }} - >I Don't Know
      ` - : ""} - `; - } - } - - return this.onUncaughtSchema(schema); - } -} - -customElements.get("jsonschema-input") || customElements.define("jsonschema-input", JSONSchemaInput); +import { LitElement, css, html } from "lit"; +import { unsafeHTML } from "lit/directives/unsafe-html.js"; +import { FilesystemSelector } from "./FileSystemSelector"; + +import { BasicTable } from "./BasicTable"; +import { header, tempPropertyKey, tempPropertyValueKey } from "./forms/utils"; + +import { Button } from "./Button"; +import { List } from "./List"; +import { Modal } from "./Modal"; + +import { capitalize } from "./forms/utils"; +import { JSONSchemaForm, getIgnore } from "./JSONSchemaForm"; +import { Search } from "./Search"; +import tippy from "tippy.js"; +import { merge } from "./pages/utils"; +import { OptionalSection } from "./OptionalSection"; +import { InspectorListItem } from "./preview/inspector/InspectorList"; + +const isDevelopment = !!import.meta.env; + +const dateTimeRegex = /(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})/; + +function resolveDateTime(value) { + if (typeof value === "string") { + const match = value.match(dateTimeRegex); + if (match) return `${match[1]}-${match[2]}-${match[3]}T${match[4]}:${match[5]}`; + return value; + } + + return value; +} + +export function createTable(fullPath, { onUpdate, onThrow, overrides = {} }) { + const name = fullPath.slice(-1)[0]; + const path = fullPath.slice(0, -1); + const relativePath = this.form?.base ? fullPath.slice(this.form.base.length) : fullPath; + + const schema = this.schema; + const validateOnChange = this.validateOnChange; + + const ignore = this.form?.ignore ? getIgnore(this.form?.ignore, path) : {}; + + const commonValidationFunction = async (tableBasePath, path, parent, newValue, itemPropSchema) => { + const warnings = []; + const errors = []; + + const name = path.slice(-1)[0]; + const completePath = [...tableBasePath, ...path.slice(0, -1)]; + + const result = await (validateOnChange + ? this.onValidate + ? this.onValidate() + : this.form?.triggerValidation + ? this.form.triggerValidation( + name, + completePath, + false, + this, + itemPropSchema, + { ...parent, [name]: newValue }, + { + onError: (error) => { + errors.push(error); // Skip counting errors + }, + onWarning: (warning) => { + warnings.push(warning); // Skip counting warnings + }, + } + ) // NOTE: No pattern properties support + : "" + : true); + + const returnedValue = errors.length ? errors : warnings.length ? warnings : result; + + return returnedValue; + }; + + const commonTableMetadata = { + onStatusChange: () => this.form?.checkStatus && this.form.checkStatus(), // Check status on all elements + validateEmptyCells: this.validateEmptyValue, + deferLoading: this.form?.deferLoading, + onLoaded: () => { + if (this.form) { + if (this.form.nLoaded) this.form.nLoaded++; + if (this.form.checkAllLoaded) this.form.checkAllLoaded(); + } + }, + onThrow: (...args) => onThrow(...args), + }; + + const addPropertyKeyToSchema = (schema) => { + const schemaCopy = structuredClone(schema); + + const schemaItemsRef = schemaCopy["items"]; + + if (!schemaItemsRef.properties) schemaItemsRef.properties = {}; + if (!schemaItemsRef.required) schemaItemsRef.required = []; + + schemaItemsRef.properties[tempPropertyKey] = { title: "Property Key", type: "string", pattern: name }; + if (!schemaItemsRef.order) schemaItemsRef.order = []; + schemaItemsRef.order.unshift(tempPropertyKey); + + schemaItemsRef.required.push(tempPropertyKey); + + return schemaCopy; + }; + + const createNestedTable = (id, value, { name: propName = id, nestedSchema = schema } = {}) => { + const schemaCopy = addPropertyKeyToSchema(nestedSchema); + + const resultPath = [...path]; + + const schemaPath = [...fullPath]; + + // THIS IS AN ISSUE + const rowData = Object.entries(value).map(([key, value]) => { + return !schemaCopy["items"] + ? { [tempPropertyKey]: key, [tempPropertyValueKey]: value } + : { [tempPropertyKey]: key, ...value }; + }); + + if (propName) { + resultPath.push(propName); + schemaPath.push(propName); + } + + const allRemovedKeys = new Set(); + + const keyAlreadyExists = (key) => Object.keys(value).includes(key); + + const previousValidValues = {}; + + function resolvePath(path, target) { + return path + .map((key, i) => { + const ogKey = key; + const nextKey = path[i + 1]; + if (key === tempPropertyKey) key = target[tempPropertyKey]; + if (nextKey === tempPropertyKey) key = []; + + target = target[ogKey] ?? {}; + + if (nextKey === tempPropertyValueKey) return target[tempPropertyKey]; // Grab next property key + if (key === tempPropertyValueKey) return []; + + return key; + }) + .flat(); + } + + function setValueOnAccumulator(row, acc) { + const key = row[tempPropertyKey]; + + if (!key) return acc; + + if (tempPropertyValueKey in row) { + const propValue = row[tempPropertyValueKey]; + if (Array.isArray(propValue)) + acc[key] = propValue.reduce((acc, row) => setValueOnAccumulator(row, acc), {}); + else acc[key] = propValue; + } else { + const copy = { ...row }; + delete copy[tempPropertyKey]; + acc[key] = copy; + } + + return acc; + } + + const nestedIgnore = this.form?.ignore ? getIgnore(this.form?.ignore, schemaPath) : {}; + + merge(overrides.ignore, nestedIgnore); + + merge(overrides.schema, schemaCopy, { arrays: "append" }); + + const tableMetadata = { + keyColumn: tempPropertyKey, + schema: schemaCopy, + data: rowData, + ignore: nestedIgnore, // According to schema + + onUpdate: function (path, newValue) { + const oldKeys = Object.keys(value); + + if (path.slice(-1)[0] === tempPropertyKey && keyAlreadyExists(newValue)) return; // Do not overwrite existing keys + + const result = this.data.reduce((acc, row) => setValueOnAccumulator(row, acc), {}); + + const newKeys = Object.keys(result); + const removedKeys = oldKeys.filter((k) => !newKeys.includes(k)); + removedKeys.forEach((key) => allRemovedKeys.add(key)); + newKeys.forEach((key) => allRemovedKeys.delete(key)); + allRemovedKeys.forEach((key) => (result[key] = undefined)); + + // const resolvedPath = resolvePath(path, this.data) + return onUpdate.call(this, [], result); // Update all table data + }, + + validateOnChange: function (path, parent, newValue) { + const rowIdx = path[0]; + const currentKey = this.data[rowIdx]?.[tempPropertyKey]; + + const updatedPath = resolvePath(path, this.data); + + const resolvedKey = previousValidValues[rowIdx] ?? currentKey; + + // Do not overwrite existing keys + if (path.slice(-1)[0] === tempPropertyKey && resolvedKey !== newValue) { + if (keyAlreadyExists(newValue)) { + if (!previousValidValues[rowIdx]) previousValidValues[rowIdx] = resolvedKey; + + return [ + { + message: `Key already exists.
      This value is still ${resolvedKey}.`, + type: "error", + }, + ]; + } else delete previousValidValues[rowIdx]; + } + + const toIterate = updatedPath.filter((value) => typeof value === "string"); + + const itemPropsSchema = toIterate.reduce( + (acc, key) => acc?.properties?.[key] ?? acc?.items?.properties?.[key], + schemaCopy + ); + + return commonValidationFunction([], updatedPath, parent, newValue, itemPropsSchema, 1); + }, + ...commonTableMetadata, + }; + + const table = this.renderTable(id, tableMetadata, fullPath); + + return table; // Try rendering as a nested table with a fake property key (otherwise use nested forms) + }; + + const schemaCopy = structuredClone(schema); + + // Possibly multiple tables + if (isEditableObject(schema, this.value)) { + // One table with nested tables for each property + const data = getEditableItems(this.value, this.pattern, { name, schema: schemaCopy }).reduce( + (acc, { key, value }) => { + acc[key] = value; + return acc; + }, + {} + ); + + const table = createNestedTable(name, data, { schema }); + if (table) return table; + } + + const nestedIgnore = getIgnore(ignore, fullPath); + Object.assign(nestedIgnore, overrides.ignore ?? {}); + + merge(overrides.ignore, nestedIgnore); + + merge(overrides.schema, schemaCopy, { arrays: "append" }); + + // Normal table parsing + const tableMetadata = { + schema: schemaCopy, + data: this.value, + + ignore: nestedIgnore, // According to schema + + onUpdate: function () { + return onUpdate.call(this, relativePath, this.data); // Update all table data + }, + + validateOnChange: (...args) => commonValidationFunction(relativePath, ...args), + + ...commonTableMetadata, + }; + + const table = (this.table = this.renderTable(name, tableMetadata, path)); // Try creating table. Otherwise use nested form + + if (table) { + const tableEl = table === true ? new BasicTable(tableMetadata) : table; + const tables = this.form?.tables; + if (tables) tables[name] = tableEl; + return tableEl; + } +} + +// Schema or value indicates editable object +export const isEditableObject = (schema, value) => + schema.type === "object" || (value && typeof value === "object" && !Array.isArray(value)); + +export const isAdditionalProperties = (pattern) => pattern === "additional"; +export const isPatternProperties = (pattern) => pattern && !isAdditionalProperties(pattern); + +export const getEditableItems = (value = {}, pattern, { name, schema } = {}) => { + let items = Object.entries(value); + + const allowAdditionalProperties = isAdditionalProperties(pattern); + + if (isPatternProperties(pattern)) { + const regex = new RegExp(name); + items = items.filter(([key]) => regex.test(key)); + } else if (allowAdditionalProperties) { + const props = Object.keys(schema.properties ?? {}); + items = items.filter(([key]) => !props.includes(key)); + + const patternProps = Object.keys(schema.patternProperties ?? {}); + patternProps.forEach((key) => { + const regex = new RegExp(key); + items = items.filter(([k]) => !regex.test(k)); + }); + } else if (schema.properties) items = items.filter(([key]) => key in schema.properties); + + items = items.filter(([key]) => !key.includes("__")); // Remove secret properties + + return items.map(([key, value]) => { + return { key, value }; + }); +}; + +const isFilesystemSelector = (name = "", format) => { + if (Array.isArray(format)) return format.map((f) => isFilesystemSelector(name, f)).every(Boolean) ? format : null; + + const matched = name.match(/(.+_)?(.+)_paths?/); + if (!format && matched) format = matched[2] === "folder" ? "directory" : matched[2]; + return ["file", "directory"].includes(format) ? format : null; // Handle file and directory formats +}; + +function getFirstFocusableElement(element) { + const root = element.shadowRoot || element; + const focusableElements = getKeyboardFocusableElements(root); + if (focusableElements.length === 0) { + for (let child of root.children) { + const focusableElement = getFirstFocusableElement(child); + if (focusableElement) return focusableElement; + } + } + return focusableElements[0]; +} + +function getKeyboardFocusableElements(element = document) { + const root = element.shadowRoot || element; + return [ + ...root.querySelectorAll('a[href], button, input, textarea, select, details,[tabindex]:not([tabindex="-1"])'), + ].filter( + (focusableElement) => + !focusableElement.hasAttribute("disabled") && !focusableElement.getAttribute("aria-hidden") + ); +} + +export class JSONSchemaInput extends LitElement { + static get styles() { + return css` + * { + box-sizing: border-box; + } + + :host(.invalid) .guided--input { + background: rgb(255, 229, 228) !important; + } + + jsonschema-input { + width: 100%; + } + + main { + display: flex; + align-items: center; + } + + #controls { + margin-left: 10px; + flex-grow: 1; + } + + .guided--input { + width: 100%; + border-radius: 4px; + padding: 10px 12px; + font-size: 100%; + font-weight: normal; + border: 1px solid var(--color-border); + transition: border-color 150ms ease-in-out 0s; + outline: none; + color: rgb(33, 49, 60); + background-color: rgb(255, 255, 255); + } + + .guided--input:disabled { + opacity: 0.5; + pointer-events: none; + } + + .guided--input::placeholder { + opacity: 0.5; + } + + .guided--text-area { + height: 5em; + resize: none; + font-family: unset; + } + .guided--text-area-tall { + height: 15em; + } + .guided--input:hover { + box-shadow: rgb(231 238 236) 0px 0px 0px 2px; + } + .guided--input:focus { + outline: 0; + box-shadow: var(--color-light-green) 0px 0px 0px 1px; + } + + input[type="number"].hideStep::-webkit-outer-spin-button, + input[type="number"].hideStep::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; + } + + /* Firefox */ + input[type="number"].hideStep { + -moz-appearance: textfield; + } + + .guided--text-input-instructions { + font-size: 13px; + width: 100%; + padding-top: 4px; + color: dimgray !important; + margin: 0 0; + line-height: 1.4285em; + } + + .nan-handler { + display: flex; + align-items: center; + margin-left: 5px; + white-space: nowrap; + } + + .nan-handler span { + margin-left: 5px; + font-size: 12px; + } + + .schema-input.list { + width: 100%; + } + + .guided--form-label { + display: block; + width: 100%; + margin: 0; + margin-bottom: 10px; + color: black; + font-weight: 600; + font-size: 1.2em !important; + } + + :host([data-table]) .guided--form-label { + margin-bottom: 0px; + } + + .guided--form-label.centered { + text-align: center; + } + + .guided--form-label.header { + font-size: 1.5em !important; + } + + .required label:after { + content: " *"; + color: #ff0033; + } + + :host(:not([validateemptyvalue])) .required label:after { + color: gray; + } + + .required.conditional label:after { + color: transparent; + } + + hr { + display: block; + height: 1px; + border: 0; + border-top: 1px solid #ccc; + padding: 0; + margin-bottom: 1em; + } + `; + } + + static get properties() { + return { + schema: { type: Object, reflect: false }, + validateEmptyValue: { type: Boolean, reflect: true }, + required: { type: Boolean, reflect: true }, + }; + } + + // Enforce dynamic required properties + attributeChangedCallback(key, _, latest) { + super.attributeChangedCallback(...arguments); + + const formSchema = this.form?.schema; + if (!formSchema) return; + + if (key === "required") { + const name = this.path.slice(-1)[0]; + + if (latest !== null && !this.conditional) { + const requirements = formSchema.required ?? (formSchema.required = []); + if (!requirements.includes(name)) requirements.push(name); + } + + // Remove requirement from form schema (and force if conditional requirement) + else { + const requirements = formSchema.required; + if (requirements && requirements.includes(name)) { + const idx = requirements.indexOf(name); + if (idx > -1) requirements.splice(idx, 1); + } + } + } + } + + // schema, + // parent, + // path, + // form, + // pattern + // showLabel + // description + controls = []; + // required; + validateOnChange = true; + + constructor(props = {}) { + super(); + Object.assign(this, props); + if (props.validateEmptyValue === false) this.validateEmptyValue = true; // False is treated as required but not triggered if empty + } + + // Print the default value of the schema if not caught + onUncaughtSchema = (schema) => { + // In development, show uncaught schemas + if (!isDevelopment) { + if (this.form) { + const inputContainer = this.form.shadowRoot.querySelector(`#${this.path.slice(-1)[0]}`); + inputContainer.style.display = "none"; + } + } + + if (schema.default) return `
      ${JSON.stringify(schema.default, null, 2)}
      `; + + const error = new InspectorListItem({ + message: + "

      Internal GUIDE Error

      Cannot render this property because of a misformatted schema.", + }); + error.style.width = "100%"; + + return error; + }; + + // onUpdate = () => {} + // onValidate = () => {} + + updateData(value, forceValidate = false) { + if (!forceValidate) { + // Update the actual input element + const inputElement = this.getElement(); + if (!inputElement) return false; + + const hasList = inputElement.querySelector("nwb-list"); + + if (inputElement.type === "checkbox") inputElement.checked = value; + else if (hasList) + hasList.items = this.#mapToList({ value, hasList }); // NOTE: Make sure this is correct + else if (inputElement instanceof Search) inputElement.shadowRoot.querySelector("input").value = value; + else inputElement.value = value; + } + + const { path: fullPath } = this; + const path = typeof fullPath === "string" ? fullPath.split("-") : [...fullPath]; + const name = path.splice(-1)[0]; + + this.#updateData(fullPath, value); + this.#triggerValidation(name, path); // NOTE: Is asynchronous + + return true; + } + + getElement = () => this.shadowRoot.querySelector(".schema-input"); + + #activateTimeoutValidation = (name, path, hooks) => { + this.#clearTimeoutValidation(); + this.#validationTimeout = setTimeout(() => { + this.onValidate + ? this.onValidate() + : this.form?.triggerValidation + ? this.form.triggerValidation(name, path, undefined, this, undefined, undefined, hooks) + : ""; + }, 1000); + }; + + #clearTimeoutValidation = () => { + if (this.#validationTimeout) clearTimeout(this.#validationTimeout); + }; + + #validationTimeout = null; + #updateData = (fullPath, value, forceUpdate, hooks = {}) => { + this.onUpdate + ? this.onUpdate(value) + : this.form?.updateData + ? this.form.updateData(fullPath, value, forceUpdate) + : ""; + + const path = [...fullPath]; + const name = path.splice(-1)[0]; + + this.value = value; // Update the latest value + + if (hooks.willTimeout !== false) this.#activateTimeoutValidation(name, path, hooks); + }; + + #triggerValidation = async (name, path) => { + this.#clearTimeoutValidation(); + return this.onValidate + ? this.onValidate() + : this.form?.triggerValidation + ? this.form.triggerValidation(name, path, undefined, this) + : ""; + }; + + updated() { + const inputElement = this.getElement(); + if (inputElement) inputElement.dispatchEvent(new Event("change")); + } + + render() { + const { schema } = this; + + const input = this.#render(); + + if (input === null) return null; // Hide rendering + + const description = this.description ?? schema.description; + + const descriptionHTML = description + ? html`

      + ${unsafeHTML(capitalize(description))}${[".", "?", "!"].includes(description.slice(-1)[0]) ? "" : "."} +

      ` + : ""; + + return html` +
      + ${this.showLabel + ? html`` + : ""} +
      ${input}${this.controls ? html`
      ${this.controls}
      ` : ""}
      + ${descriptionHTML} +
      + `; + } + + #onThrow = (...args) => (this.onThrow ? this.onThrow(...args) : this.form?.onThrow(...args)); + + #list; + #mapToList({ value = this.value, schema = this.schema, list } = {}) { + const { path: fullPath } = this; + const path = typeof fullPath === "string" ? fullPath.split("-") : [...fullPath]; + const name = path.splice(-1)[0]; + + const canAddProperties = isEditableObject(this.schema, this.value); + + if (canAddProperties) { + const editable = getEditableItems(this.value, this.pattern, { name, schema }); + + return editable.map(({ key, value }) => { + return { + key, + value, + controls: [ + new Button({ + label: "Edit", + size: "small", + onClick: () => + this.#createModal({ + key, + schema: isAdditionalProperties(this.pattern) ? undefined : schema, + results: value, + list: list ?? this.#list, + }), + }), + ], + }; + }); + } else { + const resolved = value ?? []; + return resolved + ? resolved.map((value) => { + return { value }; + }) + : []; + } + } + + #modal; + + #createModal({ key, schema = {}, results, list, label } = {}) { + const schemaCopy = structuredClone(schema); + + const createNewObject = !results && (schemaCopy.type === "object" || schemaCopy.properties); + + // const schemaProperties = Object.keys(schema.properties ?? {}); + // const additionalProperties = Object.keys(results).filter((key) => !schemaProperties.includes(key)); + // // const additionalElement = html`Cannot edit additional properties (${additionalProperties}) at this time` + + const allowPatternProperties = isPatternProperties(this.pattern); + const allowAdditionalProperties = isAdditionalProperties(this.pattern); + const createNewPatternProperty = allowPatternProperties && createNewObject; + + // Add a property name entry to the schema + if (createNewPatternProperty) { + schemaCopy.properties = { + __: { title: "Property Name", type: "string", pattern: this.pattern }, + ...schemaCopy.properties, + }; + schemaCopy.required = [...(schemaCopy.required ?? []), "__"]; + } + + if (this.#modal) this.#modal.remove(); + + const submitButton = new Button({ + label: "Submit", + primary: true, + }); + + const isObject = schemaCopy.type === "object" || schemaCopy.properties; // NOTE: For formatted strings, this is not an object + + // NOTE: Will be replaced by single instances + let updateTarget = results ?? (isObject ? {} : undefined); + + submitButton.onClick = async () => { + await nestedModalElement.validate(); + + let value = updateTarget; + + if (schemaCopy?.format && schemaCopy.properties) { + let newValue = schemaCopy?.format; + for (let key in schemaCopy.properties) newValue = newValue.replace(`{${key}}`, value[key] ?? "").trim(); + value = newValue; + } + + // Skip if not unique + if (schemaCopy.uniqueItems && list.items.find((item) => item.value === value)) + return this.#modal.toggle(false); + + // Add to the list + if (createNewPatternProperty) { + const key = value.__; + delete value.__; + list.add({ key, value }); + } else list.add({ key, value }); + + this.#modal.toggle(false); + }; + + this.#modal = new Modal({ + header: label ? `${header(label)} Editor` : key ? header(key) : `Property Editor`, + footer: submitButton, + showCloseButton: createNewObject, + }); + + const div = document.createElement("div"); + div.style.padding = "25px"; + + const inputTitle = header(schemaCopy.title ?? label ?? "Value"); + + const nestedModalElement = isObject + ? new JSONSchemaForm({ + schema: schemaCopy, + results: updateTarget, + validateEmptyValues: false, + onUpdate: (internalPath, value) => { + if (!createNewObject) { + const path = [key, ...internalPath]; + this.#updateData(path, value, true); // Live updates + } + }, + renderTable: this.renderTable, + onThrow: this.#onThrow, + }) + : new JSONSchemaForm({ + schema: { + properties: { + [tempPropertyKey]: { + ...schemaCopy, + title: inputTitle, + }, + }, + required: [tempPropertyKey], + }, + validateEmptyValues: false, + results: updateTarget, + onUpdate: (_, value) => { + if (createNewObject) updateTarget[key] = value; + else updateTarget = value; + }, + // renderTable: this.renderTable, + // onThrow: this.#onThrow, + }); + + div.append(nestedModalElement); + + this.#modal.append(div); + + document.body.append(this.#modal); + + setTimeout(() => this.#modal.toggle(true)); + + return this.#modal; + } + + #getType = (value = this.value) => (Array.isArray(value) ? "array" : typeof value); + + #handleNextInput = (idx) => { + const next = Object.values(this.form.inputs)[idx]; + if (next) { + const firstFocusableElement = getFirstFocusableElement(next); + if (firstFocusableElement) { + if (firstFocusableElement.tagName === "BUTTON") return this.#handleNextInput(idx + 1); + firstFocusableElement.focus(); + } + } + }; + + #moveToNextInput = (ev) => { + if (ev.key === "Enter") { + ev.preventDefault(); + if (this.form?.inputs) { + const idx = Object.values(this.form.inputs).findIndex((input) => input === this); + this.#handleNextInput(idx + 1); + } + + ev.target.blur(); + } + }; + + #render() { + const { validateOnChange, schema, path: fullPath } = this; + + this.removeAttribute("data-table"); + + // Do your best to fill in missing schema values + if (!("type" in schema)) schema.type = this.#getType(); + + const resolvedFullPath = typeof fullPath === "string" ? fullPath.split("-") : [...fullPath]; + const path = [...resolvedFullPath]; + const name = path.splice(-1)[0]; + + const isArray = schema.type === "array"; // Handle string (and related) formats / types + + const itemSchema = this.form?.getSchema ? this.form.getSchema("items", schema) : schema["items"]; + const isTable = itemSchema?.type === "object" && this.renderTable; + + const canAddProperties = isEditableObject(this.schema, this.value); + + if (this.renderCustomHTML) { + const custom = this.renderCustomHTML(name, schema, path, { + onUpdate: this.#updateData, + onThrow: this.#onThrow, + }); + + const renderEmpty = custom === null; + if (custom) return custom; + else if (renderEmpty) { + this.remove(); // Remove from DOM so that parent can be empty + return; + } + } + + // Handle file and directory formats + const createFilesystemSelector = (format) => { + const filesystemSelectorElement = new FilesystemSelector({ + type: format, + value: this.value, + accept: schema.accept, + onSelect: (paths = []) => { + const value = paths.length ? paths : undefined; + this.#updateData(fullPath, value); + }, + onChange: (filePath) => validateOnChange && this.#triggerValidation(name, path), + onThrow: (...args) => this.#onThrow(...args), + dialogOptions: this.form?.dialogOptions, + dialogType: this.form?.dialogType, + multiple: isArray, + }); + filesystemSelectorElement.classList.add("schema-input"); + return filesystemSelectorElement; + }; + + // Transform to single item if maxItems is 1 + if (isArray && schema.maxItems === 1 && !isTable) { + return new JSONSchemaInput({ + value: this.value?.[0], + schema: { + ...schema.items, + strict: schema.strict, + }, + path: fullPath, + validateEmptyValue: this.validateEmptyValue, + required: this.required, + validateOnChange: () => (validateOnChange ? this.#triggerValidation(name, path) : ""), + form: this.form, + onUpdate: (value) => this.#updateData(fullPath, [value]), + }); + } + + if (isArray || canAddProperties) { + // if ('value' in this && !Array.isArray(this.value)) this.value = [ this.value ] + + const allowPatternProperties = isPatternProperties(this.pattern); + const allowAdditionalProperties = isAdditionalProperties(this.pattern); + + // Provide default item types + if (isArray) { + const hasItemsRef = "items" in schema && "$ref" in schema.items; + if (!("items" in schema)) schema.items = {}; + if (!("type" in schema.items) && !hasItemsRef) { + // Guess the type of the first item + if (this.value) { + const itemToCheck = this.value[0]; + schema.items.type = itemToCheck ? this.#getType(itemToCheck) : "string"; + } + + // If no value, handle uncaught schema + else return this.onUncaughtSchema(schema); + } + } + + const fileSystemFormat = isFilesystemSelector(name, itemSchema?.format); + if (fileSystemFormat) return createFilesystemSelector(fileSystemFormat); + // Create tables if possible + else if (itemSchema?.type === "string" && !itemSchema.properties) { + const list = new List({ + items: this.value, + emptyMessage: "No items", + onChange: ({ items }) => { + this.#updateData(fullPath, items.length ? items.map((o) => o.value) : undefined); + if (validateOnChange) this.#triggerValidation(name, path); + }, + }); + + if (itemSchema.enum) { + const search = new Search({ + options: itemSchema.enum.map((v) => { + return { + key: v, + value: v, + label: itemSchema.enumLabels?.[v] ?? v, + keywords: itemSchema.enumKeywords?.[v], + description: itemSchema.enumDescriptions?.[v], + link: itemSchema.enumLinks?.[v], + }; + }), + value: this.value, + listMode: schema.strict === false ? "click" : "append", + showAllWhenEmpty: false, + onSelect: async ({ label, value }) => { + if (!value) return; + if (schema.uniqueItems && this.value && this.value.includes(value)) return; + list.add({ content: label, value }); + }, + }); + + search.style.height = "auto"; + return html`
      ${search}${list}
      `; + } else { + const input = document.createElement("input"); + input.classList.add("guided--input"); + input.placeholder = "Provide an item for the list"; + + const submitButton = new Button({ + label: "Submit", + primary: true, + size: "small", + onClick: () => { + const value = input.value; + if (!value) return; + if (schema.uniqueItems && this.value && this.value.includes(value)) return; + list.add({ value }); + input.value = ""; + }, + }); + + input.addEventListener("keydown", (ev) => { + if (ev.key === "Enter") submitButton.onClick(); + }); + + return html`
      validateOnChange && this.#triggerValidation(name, path)} + > +
      ${input}${submitButton}
      + ${list} +
      `; + } + } else if (isTable) { + const instanceThis = this; + + function updateFunction(path, value = this.data) { + return instanceThis.#updateData(path, value, true, { + willTimeout: false, // Since there is a special validation function, do not trigger a timeout validation call + onError: (e) => e, + onWarning: (e) => e, + }); + } + + const externalPath = this.form?.base ? [...this.form.base, ...resolvedFullPath] : resolvedFullPath; + + const table = createTable.call(this, externalPath, { + onUpdate: updateFunction, + onThrow: this.#onThrow, + }); // Ensure change propagates + + if (table) { + this.setAttribute("data-table", ""); + return table; + } + } + + const addButton = new Button({ + size: "small", + }); + + addButton.innerText = `Add ${canAddProperties ? "Property" : "Item"}`; + + const buttonDiv = document.createElement("div"); + Object.assign(buttonDiv.style, { width: "fit-content" }); + buttonDiv.append(addButton); + + const disableButton = ({ message, submessage }) => { + addButton.setAttribute("disabled", true); + tippy(buttonDiv, { + content: `
      ${message}
      ${submessage}
      `, + allowHTML: true, + }); + }; + + const list = (this.#list = new List({ + items: this.#mapToList(), + + // Add edit button when new items are added + // NOTE: Duplicates some code in #mapToList + transform: (item) => { + if (canAddProperties) { + const { key, value } = item; + item.controls = [ + new Button({ + label: "Edit", + size: "small", + onClick: () => { + this.#createModal({ + key, + schema, + results: value, + list, + }); + }, + }), + ]; + } + }, + onChange: async ({ object, items }, { object: oldObject }) => { + if (this.pattern) { + const oldKeys = Object.keys(oldObject); + const newKeys = Object.keys(object); + const removedKeys = oldKeys.filter((k) => !newKeys.includes(k)); + const updatedKeys = newKeys.filter((k) => oldObject[k] !== object[k]); + removedKeys.forEach((k) => this.#updateData([...fullPath.slice(1), k], undefined)); + updatedKeys.forEach((k) => this.#updateData([...fullPath.slice(1), k], object[k])); + } else { + this.#updateData(fullPath, items.length ? items.map((o) => o.value) : undefined); + } + + if (validateOnChange) await this.#triggerValidation(name, path); + }, + })); + + if (allowAdditionalProperties) + disableButton({ + message: "Additional properties cannot be added at this time.", + submessage: "They don't have a predictable structure.", + }); + + addButton.onClick = () => + this.#createModal({ label: name, list, schema: allowPatternProperties ? schema : itemSchema }); + + return html` +
      validateOnChange && this.#triggerValidation(name, path)}> + ${list} ${buttonDiv} +
      + `; + } + + // Basic enumeration of properties on a select element + if (schema.enum && schema.enum.length) { + const options = schema.enum.map((v) => { + return { + key: v, + value: v, + category: schema.enumCategories?.[v], + label: schema.enumLabels?.[v] ?? v, + keywords: schema.enumKeywords?.[v], + description: schema.enumDescriptions?.[v], + link: schema.enumLinks?.[v], + }; + }); + + const search = new Search({ + options, + strict: schema.strict, + value: { + value: this.value, + key: this.value, + category: schema.enumCategories?.[this.value], + label: schema.enumLabels?.[this.value], + keywords: schema.enumKeywords?.[this.value], + }, + showAllWhenEmpty: false, + listMode: "input", + onSelect: async ({ value, key }) => { + const result = value ?? key; + this.#updateData(fullPath, result); + if (validateOnChange) await this.#triggerValidation(name, path); + }, + }); + + search.classList.add("schema-input"); + search.onchange = () => validateOnChange && this.#triggerValidation(name, path); // Ensure validation on forced change + + search.addEventListener("keydown", this.#moveToNextInput); + this.style.width = "100%"; + return search; + } else if (schema.type === "boolean") { + const optional = new OptionalSection({ + value: this.value ?? false, + color: "rgb(32,32,32)", + size: "small", + onSelect: (value) => this.#updateData(fullPath, value), + onChange: () => validateOnChange && this.#triggerValidation(name, path), + }); + + optional.classList.add("schema-input"); + return optional; + } else if (schema.type === "string" || schema.type === "number" || schema.type === "integer") { + const isInteger = schema.type === "integer"; + if (isInteger) schema.type = "number"; + const isNumber = schema.type === "number"; + + const isRequiredNumber = isNumber && this.required; + + const fileSystemFormat = isFilesystemSelector(name, schema.format); + if (fileSystemFormat) return createFilesystemSelector(fileSystemFormat); + // Handle long string formats + else if (schema.format === "long" || isArray) + return html``; + // Handle other string formats + else { + const isDateTime = schema.format === "date-time"; + + const type = isDateTime + ? "datetime-local" + : schema.format ?? (schema.type === "string" ? "text" : schema.type); + + const value = isDateTime ? resolveDateTime(this.value) : this.value; + + const { minimum, maximum, exclusiveMax, exclusiveMin } = schema; + const min = exclusiveMin ?? minimum; + const max = exclusiveMax ?? maximum; + + return html` + { + let value = ev.target.value; + let newValue = value; + + // const isBlank = value === ''; + + if (isInteger) value = newValue = parseInt(value); + else if (isNumber) value = newValue = parseFloat(value); + + if (isNumber) { + if ("min" in schema && newValue < schema.min) newValue = schema.min; + else if ("max" in schema && newValue > schema.max) newValue = schema.max; + + if (isNaN(newValue)) newValue = undefined; + } + + if (schema.transform) newValue = schema.transform(newValue, this.value, schema); + + // // Do not check pattern if value is empty + // if (schema.pattern && !isBlank) { + // const regex = new RegExp(schema.pattern) + // if (!regex.test(isNaN(newValue) ? value : newValue)) newValue = this.value // revert to last value + // } + + if (isNumber && newValue !== value) { + ev.target.value = newValue; + value = newValue; + } + + if (isRequiredNumber) { + const nanHandler = ev.target.parentNode.querySelector(".nan-handler"); + if (!(newValue && Number.isNaN(newValue))) nanHandler.checked = false; + } + + this.#updateData(fullPath, value); + }} + @change=${(ev) => validateOnChange && this.#triggerValidation(name, path)} + @keydown=${this.#moveToNextInput} + /> + ${schema.unit ?? ""} + ${isRequiredNumber + ? html`
      { + const siblingInput = ev.target.parentNode.previousElementSibling; + if (ev.target.checked) { + this.#updateData(fullPath, null); + siblingInput.setAttribute("disabled", true); + } else { + siblingInput.removeAttribute("disabled"); + const ev = new Event("input"); + siblingInput.dispatchEvent(ev); + } + this.#triggerValidation(name, path); + }} + >I Don't Know
      ` + : ""} + `; + } + } + + return this.onUncaughtSchema(schema); + } +} + +customElements.get("jsonschema-input") || customElements.define("jsonschema-input", JSONSchemaInput); diff --git a/src/electron/renderer/src/stories/List.stories.js b/src/electron/renderer/src/stories/List.stories.js index 9ebb39a89..ec8f2f79a 100644 --- a/src/electron/renderer/src/stories/List.stories.js +++ b/src/electron/renderer/src/stories/List.stories.js @@ -1,32 +1,32 @@ -import { List } from "./List"; - -export default { - title: "Components/List", -}; - -const Template = (args) => new List(args); - -const generateString = () => Math.floor(Math.random() * Date.now()).toString(36); - -export const Default = Template.bind({}); -Default.args = { - items: [{ value: "test" }, { value: Array.from({ length: 1000 }).map(generateString).join("") }], -}; - -export const WithKeys = Template.bind({}); -WithKeys.args = { - items: [{ key: "TestKey", value: "test" }], -}; - -export const Empty = Template.bind({}); -Empty.args = { - emptyMessage: "This is empty", - unordered: true, - items: [], -}; - -export const EmptyKeys = Template.bind({}); -EmptyKeys.args = { - emptyMessage: "This is empty", - items: [], -}; +import { List } from "./List"; + +export default { + title: "Components/List", +}; + +const Template = (args) => new List(args); + +const generateString = () => Math.floor(Math.random() * Date.now()).toString(36); + +export const Default = Template.bind({}); +Default.args = { + items: [{ value: "test" }, { value: Array.from({ length: 1000 }).map(generateString).join("") }], +}; + +export const WithKeys = Template.bind({}); +WithKeys.args = { + items: [{ key: "TestKey", value: "test" }], +}; + +export const Empty = Template.bind({}); +Empty.args = { + emptyMessage: "This is empty", + unordered: true, + items: [], +}; + +export const EmptyKeys = Template.bind({}); +EmptyKeys.args = { + emptyMessage: "This is empty", + items: [], +}; diff --git a/src/electron/renderer/src/stories/Main.js b/src/electron/renderer/src/stories/Main.js index 616bfd449..14e6b61e0 100644 --- a/src/electron/renderer/src/stories/Main.js +++ b/src/electron/renderer/src/stories/Main.js @@ -1,218 +1,218 @@ -import { LitElement, html } from "lit"; -import useGlobalStyles from "./utils/useGlobalStyles.js"; -import { GuidedFooter } from "./pages/guided-mode/GuidedFooter.js"; -import { GuidedHeader } from "./pages/guided-mode/GuidedHeader.js"; -import { unsafeHTML } from "lit/directives/unsafe-html.js"; - -export const checkIfPageIsSkipped = (page, workflowValues = {}) => { - if (page.workflow) { - const workflow = page.workflow; - const skipped = Object.entries(workflow).some(([key, state]) => { - const value = workflowValues[key]; - if (state.condition) return state.condition(value) ? state.skip : false; - if (!value) return state.skip; - }); - - return skipped; - } - - return false; -}; - -const componentCSS = ` - :host { - display: grid; - grid-template-rows: fit-content(100%) 1fr fit-content(100%); - } -`; - -export class Main extends LitElement { - static get styles() { - return useGlobalStyles( - componentCSS, - (sheet) => sheet.href && sheet.href.includes("bootstrap"), - this.shadowRoot - ); - } - - static get properties() { - return { - toRender: { type: Object, reflect: false }, - }; - } - - history = []; - - constructor({ toRender } = {}) { - super(); - this.toRender = toRender; - } - - createRenderRoot() { - return this; - } - - attributeChangedCallback(...args) { - const attrs = ["toRender"]; - super.attributeChangedCallback(...args); - if (attrs.includes(args[0])) this.requestUpdate(); - } - - onTransition = () => {}; // user-defined function - updatePages = () => {}; // user-defined function - - next = () => (this.footer ? this.footer.onNext() : this.toRender.page.to(1)); - back = () => (this.footer ? this.footer.onBack() : this.toRender.page.to(-1)); - - #queue = []; - - set(toRender) { - let page = toRender.page ?? toRender; - - if (typeof page === "function") page = new page(); - page.onTransition = this.onTransition; - page.updatePages = this.updatePages; - - // Constrain based on workflow configuration - const workflowConfig = page.workflow ?? (page.workflow = {}); - const workflowValues = page.info.globalState?.project?.workflow ?? {}; - - Object.entries(workflowConfig).forEach(([key, state]) => { - workflowConfig[key].value = workflowValues[key]; - - const value = workflowValues[key]; - - if (state.elements) { - const elements = state.elements; - if (value) elements.forEach((el) => el.removeAttribute("hidden")); - else elements.forEach((el) => el.setAttribute("hidden", true)); - } - }); - - page.requestUpdate(); // Ensure the page is re-rendered with new workflow configurations - - if (this.content) - this.toRender = toRender.page ? toRender : { page }; // Ensure re-render in either case - else this.#queue.push(page); - } - - updated() { - this.content = (this.shadowRoot ?? this).querySelector("#content"); - if (this.#queue.length) { - this.#queue.forEach((content) => this.set(content)); - this.#queue = []; - } - - this.style.overflow = "hidden"; - this.content.style.height = "100%"; - - // Reset scroll position on page change - const section = this.content.children[0]; - section.scrollTop = 0; - } - - #hasAvailableNextPages = (page) => { - const allNext = []; - let currentPage = page; - const workflowValues = page.info.globalState?.project?.workflow ?? {}; - while (currentPage.info.next) { - const nextPage = currentPage.info.next; - const skipped = checkIfPageIsSkipped(nextPage, workflowValues); - if (!skipped) allNext.push(nextPage); - currentPage = nextPage; - } - - return allNext.length > 0; - }; - - render() { - let { page = "", sections = {} } = this.toRender ?? {}; - - let footer = page?.footer; // Page-specific footer - let header = page?.header; // Page-specific header - - if (page) { - this.to = page.to; - - const info = page.info ?? {}; - - // Default Footer Behavior - if (info.parent) { - if (!("footer" in page)) footer = true; // Allow navigating laterally if there is a next page - - const hasAvailableNextPages = this.#hasAvailableNextPages(page); - - // Go to home screen if there is no next page - if (!info.next || !hasAvailableNextPages) { - footer = Object.assign( - { - exit: false, - next: "Exit Pipeline", - onNext: () => this.toRender.page.to("/"), - }, - footer && typeof footer === "object" ? footer : {} - ); - } - } - - if (footer === true) footer = {}; - if (footer && "onNext" in footer && !("next" in footer)) footer.next = "Next"; - - // Define header states - const section = sections[info.section]; - if (section) { - if (header === true || !("header" in page) || !("sections" in page.header)) { - const sectionNames = Object.entries(sections) - .filter(([name, info]) => !Object.values(info.pages).every((state) => state.skipped)) - .map(([name]) => name); - header = page.header && typeof page.header === "object" ? page.header : {}; - header.sections = sectionNames; - header.selected = sectionNames.indexOf(info.section); - } - } - } - - const headerEl = header ? (this.header = new GuidedHeader(header)) : html`
      `; // Render for grid - if (!header) delete this.header; // Reset header - - if (!header) delete this.header; // Reset header - - const footerEl = footer ? (this.footer = new GuidedFooter(footer)) : html`
      `; // Render for grid - if (!footer) delete this.footer; // Reset footer - - const title = header?.title ?? page.info?.title; - - let subtitle = header?.subtitle; - if (typeof subtitle === "function") subtitle = subtitle(); // Generate custom header content if required - - let controls = header?.controls; - if (typeof controls === "function") controls = controls(); // Generate custom header content if required - - return html` - ${headerEl} - ${ - title - ? html`
      -
      -
      -

      ${title}

      - ${unsafeHTML(subtitle)} -
      -
      ${controls}
      -
      -
      -
      ` - : "" - } - -
      -
      ${page}
      -
      - ${footerEl} - `; - } -} - -customElements.get("nwb-main") || customElements.define("nwb-main", Main); +import { LitElement, html } from "lit"; +import useGlobalStyles from "./utils/useGlobalStyles.js"; +import { GuidedFooter } from "./pages/guided-mode/GuidedFooter.js"; +import { GuidedHeader } from "./pages/guided-mode/GuidedHeader.js"; +import { unsafeHTML } from "lit/directives/unsafe-html.js"; + +export const checkIfPageIsSkipped = (page, workflowValues = {}) => { + if (page.workflow) { + const workflow = page.workflow; + const skipped = Object.entries(workflow).some(([key, state]) => { + const value = workflowValues[key]; + if (state.condition) return state.condition(value) ? state.skip : false; + if (!value) return state.skip; + }); + + return skipped; + } + + return false; +}; + +const componentCSS = ` + :host { + display: grid; + grid-template-rows: fit-content(100%) 1fr fit-content(100%); + } +`; + +export class Main extends LitElement { + static get styles() { + return useGlobalStyles( + componentCSS, + (sheet) => sheet.href && sheet.href.includes("bootstrap"), + this.shadowRoot + ); + } + + static get properties() { + return { + toRender: { type: Object, reflect: false }, + }; + } + + history = []; + + constructor({ toRender } = {}) { + super(); + this.toRender = toRender; + } + + createRenderRoot() { + return this; + } + + attributeChangedCallback(...args) { + const attrs = ["toRender"]; + super.attributeChangedCallback(...args); + if (attrs.includes(args[0])) this.requestUpdate(); + } + + onTransition = () => {}; // user-defined function + updatePages = () => {}; // user-defined function + + next = () => (this.footer ? this.footer.onNext() : this.toRender.page.to(1)); + back = () => (this.footer ? this.footer.onBack() : this.toRender.page.to(-1)); + + #queue = []; + + set(toRender) { + let page = toRender.page ?? toRender; + + if (typeof page === "function") page = new page(); + page.onTransition = this.onTransition; + page.updatePages = this.updatePages; + + // Constrain based on workflow configuration + const workflowConfig = page.workflow ?? (page.workflow = {}); + const workflowValues = page.info.globalState?.project?.workflow ?? {}; + + Object.entries(workflowConfig).forEach(([key, state]) => { + workflowConfig[key].value = workflowValues[key]; + + const value = workflowValues[key]; + + if (state.elements) { + const elements = state.elements; + if (value) elements.forEach((el) => el.removeAttribute("hidden")); + else elements.forEach((el) => el.setAttribute("hidden", true)); + } + }); + + page.requestUpdate(); // Ensure the page is re-rendered with new workflow configurations + + if (this.content) + this.toRender = toRender.page ? toRender : { page }; // Ensure re-render in either case + else this.#queue.push(page); + } + + updated() { + this.content = (this.shadowRoot ?? this).querySelector("#content"); + if (this.#queue.length) { + this.#queue.forEach((content) => this.set(content)); + this.#queue = []; + } + + this.style.overflow = "hidden"; + this.content.style.height = "100%"; + + // Reset scroll position on page change + const section = this.content.children[0]; + section.scrollTop = 0; + } + + #hasAvailableNextPages = (page) => { + const allNext = []; + let currentPage = page; + const workflowValues = page.info.globalState?.project?.workflow ?? {}; + while (currentPage.info.next) { + const nextPage = currentPage.info.next; + const skipped = checkIfPageIsSkipped(nextPage, workflowValues); + if (!skipped) allNext.push(nextPage); + currentPage = nextPage; + } + + return allNext.length > 0; + }; + + render() { + let { page = "", sections = {} } = this.toRender ?? {}; + + let footer = page?.footer; // Page-specific footer + let header = page?.header; // Page-specific header + + if (page) { + this.to = page.to; + + const info = page.info ?? {}; + + // Default Footer Behavior + if (info.parent) { + if (!("footer" in page)) footer = true; // Allow navigating laterally if there is a next page + + const hasAvailableNextPages = this.#hasAvailableNextPages(page); + + // Go to home screen if there is no next page + if (!info.next || !hasAvailableNextPages) { + footer = Object.assign( + { + exit: false, + next: "Exit Pipeline", + onNext: () => this.toRender.page.to("/"), + }, + footer && typeof footer === "object" ? footer : {} + ); + } + } + + if (footer === true) footer = {}; + if (footer && "onNext" in footer && !("next" in footer)) footer.next = "Next"; + + // Define header states + const section = sections[info.section]; + if (section) { + if (header === true || !("header" in page) || !("sections" in page.header)) { + const sectionNames = Object.entries(sections) + .filter(([name, info]) => !Object.values(info.pages).every((state) => state.skipped)) + .map(([name]) => name); + header = page.header && typeof page.header === "object" ? page.header : {}; + header.sections = sectionNames; + header.selected = sectionNames.indexOf(info.section); + } + } + } + + const headerEl = header ? (this.header = new GuidedHeader(header)) : html`
      `; // Render for grid + if (!header) delete this.header; // Reset header + + if (!header) delete this.header; // Reset header + + const footerEl = footer ? (this.footer = new GuidedFooter(footer)) : html`
      `; // Render for grid + if (!footer) delete this.footer; // Reset footer + + const title = header?.title ?? page.info?.title; + + let subtitle = header?.subtitle; + if (typeof subtitle === "function") subtitle = subtitle(); // Generate custom header content if required + + let controls = header?.controls; + if (typeof controls === "function") controls = controls(); // Generate custom header content if required + + return html` + ${headerEl} + ${ + title + ? html`
      +
      +
      +

      ${title}

      + ${unsafeHTML(subtitle)} +
      +
      ${controls}
      +
      +
      +
      ` + : "" + } + +
      +
      ${page}
      +
      + ${footerEl} + `; + } +} + +customElements.get("nwb-main") || customElements.define("nwb-main", Main); diff --git a/src/electron/renderer/src/stories/NavigationSidebar.js b/src/electron/renderer/src/stories/NavigationSidebar.js index 029a81175..52bb50c34 100644 --- a/src/electron/renderer/src/stories/NavigationSidebar.js +++ b/src/electron/renderer/src/stories/NavigationSidebar.js @@ -1,163 +1,163 @@ -import { LitElement, html } from "lit"; -import useGlobalStyles from "./utils/useGlobalStyles.js"; -import { unsafeHTML } from "lit/directives/unsafe-html.js"; - -const componentCSS = ` - -`; - -function isHTML(str) { - var doc = new DOMParser().parseFromString(str, "text/html"); - return Array.from(doc.body.childNodes).some((node) => node.nodeType === 1); -} - -export class NavigationSidebar extends LitElement { - static get styles() { - return useGlobalStyles( - componentCSS, - (sheet) => sheet.href && sheet.href.includes("bootstrap"), - this.shadowRoot - ); - } - - static get properties() { - return { - sections: { type: Object, reflect: false }, - active: { type: String, reflect: true }, - header: { type: Object, reflect: false }, - }; - } - - #header; - - constructor({ sections = {}, header } = {}) { - super(); - if (header) this.header = this.#header = header; - this.sections = sections; - } - - createRenderRoot() { - return this; - } - - attributeChangedCallback(...args) { - const attrs = ["page", "active"]; - super.attributeChangedCallback(...args); - if (attrs.includes(args[0])) this.requestUpdate(); - } - - #queue = []; - - updated() { - this.nav = (this.shadowRoot ?? this).querySelector("#guided-nav"); - - Object.entries(this.sections).map(([sectionName, info]) => { - const isActive = Object.values(info.pages).find((state) => state.active); - - const isAllSkipped = Object.values(info.pages).every((state) => state.skipped); - this.#updateClass( - "skipped", - this.querySelector("[data-section-name='" + sectionName + "']"), - !isAllSkipped - ); - - if (isActive) this.#toggleDropdown(sectionName, true); - else this.#toggleDropdown(sectionName, false); - }); - - if (this.#queue.length) { - this.#queue.forEach((content) => content()); - this.#queue = []; - } - } - - show() { - if (this.nav) this.nav.style.display = "block"; - else this.#queue.push(() => this.show()); - } - - hide() { - if (this.nav) this.nav.style.display = "none"; - else this.#queue.push(() => this.hide()); - } - - onClick = () => {}; // Set by the user - - #updateClass = (name, element, force) => { - if (force === undefined) element.classList.toggle(name); - else { - if (force) element.classList.remove(name); - else element.classList.add(name); - } - }; - - #toggleDropdown = (sectionName, forcedState) => { - const hasForce = forcedState !== undefined; - //remove hidden from child elements with guided--nav-bar-section-page class - const children = this.querySelectorAll("[data-section='" + sectionName + "']"); - for (const child of children) child.toggleAttribute("hidden", hasForce ? !forcedState : undefined); - - const dropdown = this.querySelector("[data-section-name='" + sectionName + "']"); - - const toggledState = !this.sections[sectionName].open; - - //toggle the chevron - const chevron = dropdown.querySelector("i"); - this.#updateClass("fa-chevron-right", chevron, forcedState); - this.#updateClass("fa-chevron-down", chevron, hasForce ? !forcedState : forcedState); - - this.sections[sectionName].open = hasForce ? forcedState : toggledState; - }; - - render() { - const header = this.header ?? this.#header; - - return html` - - `; - } -} - -customElements.get("nwb-navigation-sidebar") || customElements.define("nwb-navigation-sidebar", NavigationSidebar); +import { LitElement, html } from "lit"; +import useGlobalStyles from "./utils/useGlobalStyles.js"; +import { unsafeHTML } from "lit/directives/unsafe-html.js"; + +const componentCSS = ` + +`; + +function isHTML(str) { + var doc = new DOMParser().parseFromString(str, "text/html"); + return Array.from(doc.body.childNodes).some((node) => node.nodeType === 1); +} + +export class NavigationSidebar extends LitElement { + static get styles() { + return useGlobalStyles( + componentCSS, + (sheet) => sheet.href && sheet.href.includes("bootstrap"), + this.shadowRoot + ); + } + + static get properties() { + return { + sections: { type: Object, reflect: false }, + active: { type: String, reflect: true }, + header: { type: Object, reflect: false }, + }; + } + + #header; + + constructor({ sections = {}, header } = {}) { + super(); + if (header) this.header = this.#header = header; + this.sections = sections; + } + + createRenderRoot() { + return this; + } + + attributeChangedCallback(...args) { + const attrs = ["page", "active"]; + super.attributeChangedCallback(...args); + if (attrs.includes(args[0])) this.requestUpdate(); + } + + #queue = []; + + updated() { + this.nav = (this.shadowRoot ?? this).querySelector("#guided-nav"); + + Object.entries(this.sections).map(([sectionName, info]) => { + const isActive = Object.values(info.pages).find((state) => state.active); + + const isAllSkipped = Object.values(info.pages).every((state) => state.skipped); + this.#updateClass( + "skipped", + this.querySelector("[data-section-name='" + sectionName + "']"), + !isAllSkipped + ); + + if (isActive) this.#toggleDropdown(sectionName, true); + else this.#toggleDropdown(sectionName, false); + }); + + if (this.#queue.length) { + this.#queue.forEach((content) => content()); + this.#queue = []; + } + } + + show() { + if (this.nav) this.nav.style.display = "block"; + else this.#queue.push(() => this.show()); + } + + hide() { + if (this.nav) this.nav.style.display = "none"; + else this.#queue.push(() => this.hide()); + } + + onClick = () => {}; // Set by the user + + #updateClass = (name, element, force) => { + if (force === undefined) element.classList.toggle(name); + else { + if (force) element.classList.remove(name); + else element.classList.add(name); + } + }; + + #toggleDropdown = (sectionName, forcedState) => { + const hasForce = forcedState !== undefined; + //remove hidden from child elements with guided--nav-bar-section-page class + const children = this.querySelectorAll("[data-section='" + sectionName + "']"); + for (const child of children) child.toggleAttribute("hidden", hasForce ? !forcedState : undefined); + + const dropdown = this.querySelector("[data-section-name='" + sectionName + "']"); + + const toggledState = !this.sections[sectionName].open; + + //toggle the chevron + const chevron = dropdown.querySelector("i"); + this.#updateClass("fa-chevron-right", chevron, forcedState); + this.#updateClass("fa-chevron-down", chevron, hasForce ? !forcedState : forcedState); + + this.sections[sectionName].open = hasForce ? forcedState : toggledState; + }; + + render() { + const header = this.header ?? this.#header; + + return html` + + `; + } +} + +customElements.get("nwb-navigation-sidebar") || customElements.define("nwb-navigation-sidebar", NavigationSidebar); diff --git a/src/electron/renderer/src/stories/OptionalSection.js b/src/electron/renderer/src/stories/OptionalSection.js index 66a3045da..2f2f9e305 100644 --- a/src/electron/renderer/src/stories/OptionalSection.js +++ b/src/electron/renderer/src/stories/OptionalSection.js @@ -1,123 +1,123 @@ -import { LitElement, css, html } from "lit"; -import "./Button"; -import { Button } from "./Button"; - -export class OptionalSection extends LitElement { - static get styles() { - return css` - :host { - display: block; - } - - h2 { - margin: 0; - margin-bottom: 10px; - } - - .optional-section__toggle { - margin-bottom: 5px; - } - - .optional-section__content { - text-align: left; - } - `; - } - - get hidden() { - return this.shadowRoot.querySelector(".optional-section__content").hidden; - } - - attributeChangedCallback(...args) { - super.attributeChangedCallback(...args); - if (args[0] === "value") this.requestUpdate(); - } - - changed; - - constructor(props = {}) { - super(); - this.header = props.header ?? ""; - this.description = props.description ?? ""; - this.content = props.content ?? ""; - this.altContent = props.altContent ?? ""; - this.value = props.value; - this.size = props.size; - this.color = props.color; - - if (props.onChange) this.onChange = props.onChange; - if (props.onSelect) this.onSelect = props.onSelect; - - this.addEventListener("change", () => this.onChange(this.value)); - } - - onChange = () => {}; // User-defined function - onSelect = () => {}; // User-defined function - - #show = (state) => { - const content = this.shadowRoot.querySelector(".optional-section__content"); - const altContent = this.shadowRoot.querySelector("#altContent"); - - this.yes.primary = !!state; - this.no.primary = !state; - - if (state === undefined) state = !content.classList.contains("hidden"); - if (state) { - content.removeAttribute("hidden"); - altContent.setAttribute("hidden", true); - } else { - content.setAttribute("hidden", true); - altContent.removeAttribute("hidden"); - } - }; - - show(state) { - this.toggled = true; - this.#show(state); - this.value = state; - this.onSelect(state); - const event = new Event("change"); // Create a new change event - this.dispatchEvent(event); - } - - yes = new Button({ - label: "Yes", - color: "green", - onClick: () => this.show(true), - }); - - no = new Button({ - label: "No", - color: "red", - onClick: () => this.show(false), - }); - - updated() { - if (this.value === undefined) this.shadowRoot.querySelector(".optional-section__content").hidden = true; - else this.#show(this.value); - } - - render() { - this.yes.size = this.size; - this.no.size = this.size; - - if (this.color) { - this.yes.color = this.color; - this.no.color = this.color; - } - - return html` -
      - ${this.header ? html`

      ${this.header}

      ` : ""} -
      ${this.description}
      -
      ${this.yes} ${this.no}
      -
      - - - `; - } -} - -customElements.get("nwb-optional-section") || customElements.define("nwb-optional-section", OptionalSection); +import { LitElement, css, html } from "lit"; +import "./Button"; +import { Button } from "./Button"; + +export class OptionalSection extends LitElement { + static get styles() { + return css` + :host { + display: block; + } + + h2 { + margin: 0; + margin-bottom: 10px; + } + + .optional-section__toggle { + margin-bottom: 5px; + } + + .optional-section__content { + text-align: left; + } + `; + } + + get hidden() { + return this.shadowRoot.querySelector(".optional-section__content").hidden; + } + + attributeChangedCallback(...args) { + super.attributeChangedCallback(...args); + if (args[0] === "value") this.requestUpdate(); + } + + changed; + + constructor(props = {}) { + super(); + this.header = props.header ?? ""; + this.description = props.description ?? ""; + this.content = props.content ?? ""; + this.altContent = props.altContent ?? ""; + this.value = props.value; + this.size = props.size; + this.color = props.color; + + if (props.onChange) this.onChange = props.onChange; + if (props.onSelect) this.onSelect = props.onSelect; + + this.addEventListener("change", () => this.onChange(this.value)); + } + + onChange = () => {}; // User-defined function + onSelect = () => {}; // User-defined function + + #show = (state) => { + const content = this.shadowRoot.querySelector(".optional-section__content"); + const altContent = this.shadowRoot.querySelector("#altContent"); + + this.yes.primary = !!state; + this.no.primary = !state; + + if (state === undefined) state = !content.classList.contains("hidden"); + if (state) { + content.removeAttribute("hidden"); + altContent.setAttribute("hidden", true); + } else { + content.setAttribute("hidden", true); + altContent.removeAttribute("hidden"); + } + }; + + show(state) { + this.toggled = true; + this.#show(state); + this.value = state; + this.onSelect(state); + const event = new Event("change"); // Create a new change event + this.dispatchEvent(event); + } + + yes = new Button({ + label: "Yes", + color: "green", + onClick: () => this.show(true), + }); + + no = new Button({ + label: "No", + color: "red", + onClick: () => this.show(false), + }); + + updated() { + if (this.value === undefined) this.shadowRoot.querySelector(".optional-section__content").hidden = true; + else this.#show(this.value); + } + + render() { + this.yes.size = this.size; + this.no.size = this.size; + + if (this.color) { + this.yes.color = this.color; + this.no.color = this.color; + } + + return html` +
      + ${this.header ? html`

      ${this.header}

      ` : ""} +
      ${this.description}
      +
      ${this.yes} ${this.no}
      +
      + + + `; + } +} + +customElements.get("nwb-optional-section") || customElements.define("nwb-optional-section", OptionalSection); diff --git a/src/electron/renderer/src/stories/OptionalSection.stories.js b/src/electron/renderer/src/stories/OptionalSection.stories.js index 7cea5356b..3e2f85f0b 100644 --- a/src/electron/renderer/src/stories/OptionalSection.stories.js +++ b/src/electron/renderer/src/stories/OptionalSection.stories.js @@ -1,15 +1,15 @@ -import { OptionalSection } from "./OptionalSection"; - -export default { - title: "Components/Optional Section", - parameters: { - chromatic: { disableSnapshot: false }, - }, -}; - -const Template = (args) => new OptionalSection(args); - -export const Default = Template.bind({}); -Default.args = { - content: "This is the content of the optional section.", -}; +import { OptionalSection } from "./OptionalSection"; + +export default { + title: "Components/Optional Section", + parameters: { + chromatic: { disableSnapshot: false }, + }, +}; + +const Template = (args) => new OptionalSection(args); + +export const Default = Template.bind({}); +Default.args = { + content: "This is the content of the optional section.", +}; diff --git a/src/electron/renderer/src/stories/ProgressBar.stories.js b/src/electron/renderer/src/stories/ProgressBar.stories.js index 78da06910..cda328b61 100644 --- a/src/electron/renderer/src/stories/ProgressBar.stories.js +++ b/src/electron/renderer/src/stories/ProgressBar.stories.js @@ -1,30 +1,30 @@ -import { ProgressBar } from "./ProgressBar"; - -export default { - title: "Components/Progress Bar", -}; - -const Template = (args) => new ProgressBar(args); - -const n = 0; -const total = 50; - -export const Default = Template.bind({}); -Default.args = { - format: { - n, - total, - }, -}; - -function sleep(ms) { - return new Promise((resolve) => setTimeout(resolve, ms)); -} - -Default.play = async ({ canvasElement }) => { - const progressBar = canvasElement.querySelector("nwb-progress"); - for (let i = 1; i <= total; i++) { - await sleep(1000); - progressBar.format = { n: i, total }; - } -}; +import { ProgressBar } from "./ProgressBar"; + +export default { + title: "Components/Progress Bar", +}; + +const Template = (args) => new ProgressBar(args); + +const n = 0; +const total = 50; + +export const Default = Template.bind({}); +Default.args = { + format: { + n, + total, + }, +}; + +function sleep(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + +Default.play = async ({ canvasElement }) => { + const progressBar = canvasElement.querySelector("nwb-progress"); + for (let i = 1; i <= total; i++) { + await sleep(1000); + progressBar.format = { n: i, total }; + } +}; diff --git a/src/electron/renderer/src/stories/Search.js b/src/electron/renderer/src/stories/Search.js index ddf87e403..5cefbe4dd 100644 --- a/src/electron/renderer/src/stories/Search.js +++ b/src/electron/renderer/src/stories/Search.js @@ -1,524 +1,524 @@ -import { LitElement, html, css } from "lit"; -import { styleMap } from "lit/directives/style-map.js"; - -import searchSVG from "./assets/search.svg?raw"; - -import tippy from "tippy.js"; -import { unsafeHTML } from "lit/directives/unsafe-html.js"; - -const ALTERNATIVE_MODES = ["input", "append"]; - -export class Search extends LitElement { - constructor({ - value, - options, - showAllWhenEmpty = true, - listMode = "list", - headerStyles = {}, - disabledLabel, - onSelect, - strict = false, - } = {}) { - super(); - this.#value = value; - this.options = options; - this.showAllWhenEmpty = showAllWhenEmpty; - this.disabledLabel = disabledLabel; - this.listMode = listMode; - this.headerStyles = headerStyles; - this.strict = strict; - if (onSelect) this.onSelect = onSelect; - - // document.addEventListener("click", () => this.#close()); - } - - #close = () => { - if (this.listMode === "input" && this.getAttribute("interacted") === "true") { - this.setAttribute("interacted", false); - this.#onSelect(this.getSelectedOption()); - } else if (this.listMode !== "list") { - this.setAttribute("active", false); - } - }; - - #value; - - #isObject(value = this.#value) { - return value && typeof value === "object"; - } - - #getOption = ({ label, value } = {}) => { - return this.options.find((item) => { - if (label && item.label === label) return true; - if (value && value === item.value) return true; - }); - }; - - getSelectedOption = () => { - const inputValue = (this.shadowRoot.querySelector("input") ?? this).value; - const matched = this.#getOption({ label: inputValue }); - return matched ?? { value: inputValue }; - }; - - get value() { - return this.#isObject() ? this.#value.value : this.#value; - } - - set value(val) { - this.#value = val; - this.requestUpdate(); - } - - static get styles() { - return css` - * { - box-sizing: border-box; - } - - :host { - position: relative; - display: flex; - flex-direction: column; - background: white; - border-radius: 5px; - width: 100%; - height: 100%; - } - - .header { - background: white; - position: relative; - } - - input { - width: 100%; - border-radius: 4px; - padding: 10px 12px; - font-size: 100%; - font-weight: normal; - border: 1px solid var(--color-border); - transition: border-color 150ms ease-in-out 0s; - outline: none; - color: rgb(33, 49, 60); - background-color: rgb(255, 255, 255); - } - - input::placeholder { - opacity: 0.5; - } - - ul { - list-style: none; - padding: 0; - margin: 0; - position: relative; - background: white; - border: 1px solid var(--color-border); - overflow: auto; - } - - :host([listmode="input"]) ul, - :host([listmode="append"]) ul { - position: absolute; - top: 38px; - left: 0; - right: 0; - max-height: 50vh; - z-index: 2; - } - - svg { - position: absolute; - top: 50%; - right: 10px; - padding: 0px 15px; - transform: translateY(-50%); - fill: gray; - box-sizing: unset; - width: 20px; - height: 20px; - } - - a { - text-decoration: none; - } - - a:after { - content: "🔗"; - padding-left: 2px; - font-size: 60%; - } - - :host([listmode="input"]) svg, - :host([listmode="append"]) svg { - position: absolute; - top: 50%; - padding: 0px; - right: 10px; - transform: translateY(-50%); - fill: gray; - box-sizing: unset; - width: 20px; - height: 20px; - } - - :host([active="false"]) ul { - visibility: hidden; - } - - .option { - padding: 10px 18px; - border-top: 1px solid #f2f2f2; - } - - .category { - padding: 10px 18px; - background: gainsboro; - border-top: 1px solid gray; - border-bottom: 1px solid gray; - font-size: 90%; - font-weight: bold; - position: sticky; - top: 0; - z-index: 1; - } - - .structured-keywords { - font-size: 90%; - color: dimgrey; - } - - .option:hover { - background: #f2f2f2; - cursor: pointer; - } - - .label { - margin: 0; - } - - .label { - display: flex; - gap: 10px; - } - - [disabled]:not([hidden]) { - display: flex; - justify-content: space-between; - align-items: center; - pointer-events: none; - opacity: 0.4; - } - - [disabled]::after { - content: var(--disabled-label, "Not available"); - text-align: left; - padding-left: 25px; - opacity: 70%; - font-size: 90%; - white-space: nowrap; - min-width: min-content; - } - `; - } - - static get properties() { - return { - options: { type: Object }, - showAllWhenEmpty: { type: Boolean }, - listMode: { type: String, reflect: true }, - strict: { type: Boolean, reflect: true }, - }; - } - - updated() { - const options = this.shadowRoot.querySelectorAll(".option"); - this.#options = Array.from(options).map((option) => { - const keywordString = option.getAttribute("data-keywords"); - const structuredKeywordString = option.getAttribute("data-structured-keywords"); - - const keywords = keywordString ? JSON.parse(option.getAttribute("data-keywords")) : []; - const structuredKeywords = structuredKeywordString ? JSON.parse(structuredKeywordString) : {}; - - return { option, keywords, structuredKeywords, label: option.querySelector(".label").innerText }; - }); - - this.#initialize(); - - if (!ALTERNATIVE_MODES.includes(this.listMode)) this.#populate(); - } - - onSelect = (id, value) => {}; - - #displayValue = (option) => { - return option?.label ?? option?.value ?? option?.key ?? (this.#isObject(option) ? undefined : option); - }; - - #onSelect = (option) => { - const inputMode = this.listMode === "input"; - const input = this.shadowRoot.querySelector("input"); - - const selectedOption = this.#getOption({ value: option.value }); - - if (inputMode) this.setAttribute("active", false); - - if (this.strict && !selectedOption) { - input.value = this.#value.label; - return; - } - - if (inputMode) { - this.value = selectedOption ?? option; - input.value = this.#displayValue(option); - return this.onSelect(option); - } - - input.value = ""; - this.#initialize(); - this.onSelect(option); - }; - - #options = []; - #initialize = () => { - this.#options.forEach(({ option }) => - option[this.showAllWhenEmpty ? "removeAttribute" : "setAttribute"]("hidden", "") - ); - - if (!this.showAllWhenEmpty) this.setAttribute("active", false); - }; - - list = document.createElement("ul"); - - categories = {}; - - #sortedCategories = []; - - getTokens = (input) => - input - .replaceAll(/[^\w\s]/g, "") - .split(" ") - .map((token) => token.trim().toLowerCase()) - .filter((token) => token); - - #populate = (input = this.value ?? "") => { - const toShow = []; - - const inputTokens = this.getTokens(input); - - // Check if the input value matches the label or any of the keywords - this.#options.forEach(({ label, keywords, structuredKeywords }, i) => { - const labelTokens = this.getTokens(label); - const allKeywords = [...keywords, ...Object.values(structuredKeywords).flat()]; - const allKeywordTokens = allKeywords.map((keyword) => this.getTokens(keyword)).flat(); - const allTokens = [...labelTokens, ...allKeywordTokens]; - - const result = inputTokens.reduce((acc, token) => { - for (let subtoken of allTokens) { - if (subtoken.startsWith(token) && !toShow.includes(i)) return (acc += 1); - } - return acc; - }, 0); - - if (result === inputTokens.length) toShow.push(i); - }); - - this.#options.forEach(({ option }, i) => { - if (toShow.includes(i) || !inputTokens.length) { - option.removeAttribute("hidden"); - } else { - option.setAttribute("hidden", ""); - } - }); - - this.#sortedCategories.forEach(({ entries, element }) => { - if (entries.reduce((acc, entryElement) => acc + entryElement.hasAttribute("hidden"), 0) === entries.length) - element.setAttribute("hidden", ""); - else element.removeAttribute("hidden"); - }); - - this.setAttribute("active", !!toShow.length || !inputTokens.length); - this.setAttribute("interacted", true); - }; - - #ignore = false; - - render() { - this.categories = {}; - - // Update list - this.list.remove(); - this.list = document.createElement("ul"); - - if (this.disabledLabel) this.style.setProperty("--disabled-label", `"${this.disabledLabel}"`); - else this.style.removeProperty("--disabled-label"); - - const slot = document.createElement("slot"); - this.list.appendChild(slot); - - if (this.options) { - const options = this.options.map((item) => { - return { - label: item.key, - ...item, - }; - }); - - const itemEls = options - .sort((a, b) => { - if (a.label < b.label) return -1; - if (a.label > b.label) return 1; - return 0; - }) // Sort alphabetically - .sort((a, b) => { - if (a.disabled && b.disabled) return 0; - else if (a.disabled) return 1; - else if (b.disabled) return -1; - }) // Sort with the disabled options at the bottom - .map((option) => { - const listItemElement = document.createElement("li"); - listItemElement.classList.add("option"); - listItemElement.setAttribute("hidden", ""); - listItemElement.setAttribute("tabindex", -1); - - const { disabled, structuredKeywords, keywords } = option; - - if (structuredKeywords) - listItemElement.setAttribute( - "data-structured-keywords", - JSON.stringify(option.structuredKeywords) - ); - if (keywords) listItemElement.setAttribute("data-keywords", JSON.stringify(option.keywords)); - - listItemElement.addEventListener("click", (clickEvent) => { - clickEvent.stopPropagation(); - if (this.#ignore) return (this.#ignore = false); - this.#onSelect(option); - }); - - if (disabled) listItemElement.setAttribute("disabled", ""); - - const container = document.createElement("div"); - - const label = document.createElement("h4"); - label.classList.add("label"); - label.innerText = option.label; - - if (option.description || option.link) { - const info = option.link ? document.createElement("a") : document.createElement("span"); - if (option.link) { - info.setAttribute("data-link", true); - info.href = option.link; - info.target = "_blank"; - } - - info.innerText = "ℹ️"; - label.append(info); - - if (option.description) - tippy(info, { - content: `

      ${option.description}

      `, - allowHTML: true, - placement: "right", - }); - } - - container.appendChild(label); - - if (keywords) { - const keywordsElement = document.createElement("small"); - keywordsElement.classList.add("keywords"); - keywordsElement.innerText = option.keywords.join(", "); - container.appendChild(keywordsElement); - } - - if (structuredKeywords) { - const div = document.createElement("div"); - div.classList.add("structured-keywords"); - - Object.entries(structuredKeywords).forEach(([key, value]) => { - const keywordsElement = document.createElement("small"); - const capitalizedKey = key[0].toUpperCase() + key.slice(1); - keywordsElement.innerHTML = `${capitalizedKey}: ${value.join(", ")}`; - div.appendChild(keywordsElement); - }); - - container.appendChild(div); - } - - listItemElement.append(container); - - if (option.category) { - let category = this.categories[option.category]; - if (!category) { - category = document.createElement("div"); - category.innerText = option.category; - category.classList.add("category"); - this.categories[option.category] = { - entries: [], - element: category, - }; - } - - this.categories[option.category].entries.push(listItemElement); - return; - } - - return listItemElement; - }) - .filter((listItemElement) => listItemElement); - - this.list.append(...itemEls); - } - - // Categories sorted alphabetically - const categories = (this.#sortedCategories = Object.values(this.categories).sort((a, b) => { - if (a.element.innerText < b.element.innerText) return -1; - if (a.element.innerText > b.element.innerText) return 1; - return 0; - })); - - categories.forEach(({ entries, element }) => { - this.list.append(element, ...entries); - }); - - const valueToDisplay = this.#displayValue(this.#value); - - return html` -
      - { - clickEvent.stopPropagation(); - if (ALTERNATIVE_MODES.includes(this.listMode)) { - const input = clickEvent.target.value; - this.#populate(input); - } - }} - - @input=${(inputEvent) => { - const input = inputEvent.target.value; - this.#populate(input); - }} - - @blur=${(blurEvent) => { - const relatedTarget = blurEvent.relatedTarget; - if (relatedTarget) { - if (relatedTarget.classList.contains("option")) return; - if (relatedTarget.hasAttribute("data-link")) { - this.#ignore = true; - return; - } - } - - this.#close(); - }} - - > - ${unsafeHTML(searchSVG)} -
      - ${this.list} - `; - } -} - -customElements.get("nwb-search") || customElements.define("nwb-search", Search); +import { LitElement, html, css } from "lit"; +import { styleMap } from "lit/directives/style-map.js"; + +import searchSVG from "./assets/search.svg?raw"; + +import tippy from "tippy.js"; +import { unsafeHTML } from "lit/directives/unsafe-html.js"; + +const ALTERNATIVE_MODES = ["input", "append"]; + +export class Search extends LitElement { + constructor({ + value, + options, + showAllWhenEmpty = true, + listMode = "list", + headerStyles = {}, + disabledLabel, + onSelect, + strict = false, + } = {}) { + super(); + this.#value = value; + this.options = options; + this.showAllWhenEmpty = showAllWhenEmpty; + this.disabledLabel = disabledLabel; + this.listMode = listMode; + this.headerStyles = headerStyles; + this.strict = strict; + if (onSelect) this.onSelect = onSelect; + + // document.addEventListener("click", () => this.#close()); + } + + #close = () => { + if (this.listMode === "input" && this.getAttribute("interacted") === "true") { + this.setAttribute("interacted", false); + this.#onSelect(this.getSelectedOption()); + } else if (this.listMode !== "list") { + this.setAttribute("active", false); + } + }; + + #value; + + #isObject(value = this.#value) { + return value && typeof value === "object"; + } + + #getOption = ({ label, value } = {}) => { + return this.options.find((item) => { + if (label && item.label === label) return true; + if (value && value === item.value) return true; + }); + }; + + getSelectedOption = () => { + const inputValue = (this.shadowRoot.querySelector("input") ?? this).value; + const matched = this.#getOption({ label: inputValue }); + return matched ?? { value: inputValue }; + }; + + get value() { + return this.#isObject() ? this.#value.value : this.#value; + } + + set value(val) { + this.#value = val; + this.requestUpdate(); + } + + static get styles() { + return css` + * { + box-sizing: border-box; + } + + :host { + position: relative; + display: flex; + flex-direction: column; + background: white; + border-radius: 5px; + width: 100%; + height: 100%; + } + + .header { + background: white; + position: relative; + } + + input { + width: 100%; + border-radius: 4px; + padding: 10px 12px; + font-size: 100%; + font-weight: normal; + border: 1px solid var(--color-border); + transition: border-color 150ms ease-in-out 0s; + outline: none; + color: rgb(33, 49, 60); + background-color: rgb(255, 255, 255); + } + + input::placeholder { + opacity: 0.5; + } + + ul { + list-style: none; + padding: 0; + margin: 0; + position: relative; + background: white; + border: 1px solid var(--color-border); + overflow: auto; + } + + :host([listmode="input"]) ul, + :host([listmode="append"]) ul { + position: absolute; + top: 38px; + left: 0; + right: 0; + max-height: 50vh; + z-index: 2; + } + + svg { + position: absolute; + top: 50%; + right: 10px; + padding: 0px 15px; + transform: translateY(-50%); + fill: gray; + box-sizing: unset; + width: 20px; + height: 20px; + } + + a { + text-decoration: none; + } + + a:after { + content: "🔗"; + padding-left: 2px; + font-size: 60%; + } + + :host([listmode="input"]) svg, + :host([listmode="append"]) svg { + position: absolute; + top: 50%; + padding: 0px; + right: 10px; + transform: translateY(-50%); + fill: gray; + box-sizing: unset; + width: 20px; + height: 20px; + } + + :host([active="false"]) ul { + visibility: hidden; + } + + .option { + padding: 10px 18px; + border-top: 1px solid #f2f2f2; + } + + .category { + padding: 10px 18px; + background: gainsboro; + border-top: 1px solid gray; + border-bottom: 1px solid gray; + font-size: 90%; + font-weight: bold; + position: sticky; + top: 0; + z-index: 1; + } + + .structured-keywords { + font-size: 90%; + color: dimgrey; + } + + .option:hover { + background: #f2f2f2; + cursor: pointer; + } + + .label { + margin: 0; + } + + .label { + display: flex; + gap: 10px; + } + + [disabled]:not([hidden]) { + display: flex; + justify-content: space-between; + align-items: center; + pointer-events: none; + opacity: 0.4; + } + + [disabled]::after { + content: var(--disabled-label, "Not available"); + text-align: left; + padding-left: 25px; + opacity: 70%; + font-size: 90%; + white-space: nowrap; + min-width: min-content; + } + `; + } + + static get properties() { + return { + options: { type: Object }, + showAllWhenEmpty: { type: Boolean }, + listMode: { type: String, reflect: true }, + strict: { type: Boolean, reflect: true }, + }; + } + + updated() { + const options = this.shadowRoot.querySelectorAll(".option"); + this.#options = Array.from(options).map((option) => { + const keywordString = option.getAttribute("data-keywords"); + const structuredKeywordString = option.getAttribute("data-structured-keywords"); + + const keywords = keywordString ? JSON.parse(option.getAttribute("data-keywords")) : []; + const structuredKeywords = structuredKeywordString ? JSON.parse(structuredKeywordString) : {}; + + return { option, keywords, structuredKeywords, label: option.querySelector(".label").innerText }; + }); + + this.#initialize(); + + if (!ALTERNATIVE_MODES.includes(this.listMode)) this.#populate(); + } + + onSelect = (id, value) => {}; + + #displayValue = (option) => { + return option?.label ?? option?.value ?? option?.key ?? (this.#isObject(option) ? undefined : option); + }; + + #onSelect = (option) => { + const inputMode = this.listMode === "input"; + const input = this.shadowRoot.querySelector("input"); + + const selectedOption = this.#getOption({ value: option.value }); + + if (inputMode) this.setAttribute("active", false); + + if (this.strict && !selectedOption) { + input.value = this.#value.label; + return; + } + + if (inputMode) { + this.value = selectedOption ?? option; + input.value = this.#displayValue(option); + return this.onSelect(option); + } + + input.value = ""; + this.#initialize(); + this.onSelect(option); + }; + + #options = []; + #initialize = () => { + this.#options.forEach(({ option }) => + option[this.showAllWhenEmpty ? "removeAttribute" : "setAttribute"]("hidden", "") + ); + + if (!this.showAllWhenEmpty) this.setAttribute("active", false); + }; + + list = document.createElement("ul"); + + categories = {}; + + #sortedCategories = []; + + getTokens = (input) => + input + .replaceAll(/[^\w\s]/g, "") + .split(" ") + .map((token) => token.trim().toLowerCase()) + .filter((token) => token); + + #populate = (input = this.value ?? "") => { + const toShow = []; + + const inputTokens = this.getTokens(input); + + // Check if the input value matches the label or any of the keywords + this.#options.forEach(({ label, keywords, structuredKeywords }, i) => { + const labelTokens = this.getTokens(label); + const allKeywords = [...keywords, ...Object.values(structuredKeywords).flat()]; + const allKeywordTokens = allKeywords.map((keyword) => this.getTokens(keyword)).flat(); + const allTokens = [...labelTokens, ...allKeywordTokens]; + + const result = inputTokens.reduce((acc, token) => { + for (let subtoken of allTokens) { + if (subtoken.startsWith(token) && !toShow.includes(i)) return (acc += 1); + } + return acc; + }, 0); + + if (result === inputTokens.length) toShow.push(i); + }); + + this.#options.forEach(({ option }, i) => { + if (toShow.includes(i) || !inputTokens.length) { + option.removeAttribute("hidden"); + } else { + option.setAttribute("hidden", ""); + } + }); + + this.#sortedCategories.forEach(({ entries, element }) => { + if (entries.reduce((acc, entryElement) => acc + entryElement.hasAttribute("hidden"), 0) === entries.length) + element.setAttribute("hidden", ""); + else element.removeAttribute("hidden"); + }); + + this.setAttribute("active", !!toShow.length || !inputTokens.length); + this.setAttribute("interacted", true); + }; + + #ignore = false; + + render() { + this.categories = {}; + + // Update list + this.list.remove(); + this.list = document.createElement("ul"); + + if (this.disabledLabel) this.style.setProperty("--disabled-label", `"${this.disabledLabel}"`); + else this.style.removeProperty("--disabled-label"); + + const slot = document.createElement("slot"); + this.list.appendChild(slot); + + if (this.options) { + const options = this.options.map((item) => { + return { + label: item.key, + ...item, + }; + }); + + const itemEls = options + .sort((a, b) => { + if (a.label < b.label) return -1; + if (a.label > b.label) return 1; + return 0; + }) // Sort alphabetically + .sort((a, b) => { + if (a.disabled && b.disabled) return 0; + else if (a.disabled) return 1; + else if (b.disabled) return -1; + }) // Sort with the disabled options at the bottom + .map((option) => { + const listItemElement = document.createElement("li"); + listItemElement.classList.add("option"); + listItemElement.setAttribute("hidden", ""); + listItemElement.setAttribute("tabindex", -1); + + const { disabled, structuredKeywords, keywords } = option; + + if (structuredKeywords) + listItemElement.setAttribute( + "data-structured-keywords", + JSON.stringify(option.structuredKeywords) + ); + if (keywords) listItemElement.setAttribute("data-keywords", JSON.stringify(option.keywords)); + + listItemElement.addEventListener("click", (clickEvent) => { + clickEvent.stopPropagation(); + if (this.#ignore) return (this.#ignore = false); + this.#onSelect(option); + }); + + if (disabled) listItemElement.setAttribute("disabled", ""); + + const container = document.createElement("div"); + + const label = document.createElement("h4"); + label.classList.add("label"); + label.innerText = option.label; + + if (option.description || option.link) { + const info = option.link ? document.createElement("a") : document.createElement("span"); + if (option.link) { + info.setAttribute("data-link", true); + info.href = option.link; + info.target = "_blank"; + } + + info.innerText = "ℹ️"; + label.append(info); + + if (option.description) + tippy(info, { + content: `

      ${option.description}

      `, + allowHTML: true, + placement: "right", + }); + } + + container.appendChild(label); + + if (keywords) { + const keywordsElement = document.createElement("small"); + keywordsElement.classList.add("keywords"); + keywordsElement.innerText = option.keywords.join(", "); + container.appendChild(keywordsElement); + } + + if (structuredKeywords) { + const div = document.createElement("div"); + div.classList.add("structured-keywords"); + + Object.entries(structuredKeywords).forEach(([key, value]) => { + const keywordsElement = document.createElement("small"); + const capitalizedKey = key[0].toUpperCase() + key.slice(1); + keywordsElement.innerHTML = `${capitalizedKey}: ${value.join(", ")}`; + div.appendChild(keywordsElement); + }); + + container.appendChild(div); + } + + listItemElement.append(container); + + if (option.category) { + let category = this.categories[option.category]; + if (!category) { + category = document.createElement("div"); + category.innerText = option.category; + category.classList.add("category"); + this.categories[option.category] = { + entries: [], + element: category, + }; + } + + this.categories[option.category].entries.push(listItemElement); + return; + } + + return listItemElement; + }) + .filter((listItemElement) => listItemElement); + + this.list.append(...itemEls); + } + + // Categories sorted alphabetically + const categories = (this.#sortedCategories = Object.values(this.categories).sort((a, b) => { + if (a.element.innerText < b.element.innerText) return -1; + if (a.element.innerText > b.element.innerText) return 1; + return 0; + })); + + categories.forEach(({ entries, element }) => { + this.list.append(element, ...entries); + }); + + const valueToDisplay = this.#displayValue(this.#value); + + return html` +
      + { + clickEvent.stopPropagation(); + if (ALTERNATIVE_MODES.includes(this.listMode)) { + const input = clickEvent.target.value; + this.#populate(input); + } + }} + + @input=${(inputEvent) => { + const input = inputEvent.target.value; + this.#populate(input); + }} + + @blur=${(blurEvent) => { + const relatedTarget = blurEvent.relatedTarget; + if (relatedTarget) { + if (relatedTarget.classList.contains("option")) return; + if (relatedTarget.hasAttribute("data-link")) { + this.#ignore = true; + return; + } + } + + this.#close(); + }} + + > + ${unsafeHTML(searchSVG)} +
      + ${this.list} + `; + } +} + +customElements.get("nwb-search") || customElements.define("nwb-search", Search); diff --git a/src/electron/renderer/src/stories/Search.stories.js b/src/electron/renderer/src/stories/Search.stories.js index b78b16f37..ae2dab9c8 100644 --- a/src/electron/renderer/src/stories/Search.stories.js +++ b/src/electron/renderer/src/stories/Search.stories.js @@ -1,46 +1,46 @@ -import { Search } from "./Search"; - -// More on how to set up stories at: https://storybook.js.org/docs/7.0/web-components/writing-stories/introduction -export default { - title: "Components/Search", - // tags: ['autodocs'], -}; - -const Template = (args) => new Search(args); - -export const Default = Template.bind({}); -Default.args = { - disabledLabel: "Interface not supported", - options: [ - { - label: "SpikeGLXRecording", - keywords: ["extracellular electrophysiology", "voltage", "recording", "neuropixels"], - }, - { - label: "DeepLabCut", - keywords: ["DLC", "tracking", "pose estimation"], - }, - ], -}; - -export const Categories = Template.bind({}); -Categories.args = { - disabledLabel: "Interface not supported", - options: [ - { - label: "SpikeGLXConverter", - category: "Converter", - keywords: ["extracellular electrophysiology", "voltage", "recording", "neuropixels"], - }, - { - label: "SpikeGLXRecording", - category: "Interface", - keywords: ["extracellular electrophysiology", "voltage", "recording", "neuropixels"], - }, - { - label: "DeepLabCut", - category: "Interface", - keywords: ["DLC", "tracking", "pose estimation"], - }, - ], -}; +import { Search } from "./Search"; + +// More on how to set up stories at: https://storybook.js.org/docs/7.0/web-components/writing-stories/introduction +export default { + title: "Components/Search", + // tags: ['autodocs'], +}; + +const Template = (args) => new Search(args); + +export const Default = Template.bind({}); +Default.args = { + disabledLabel: "Interface not supported", + options: [ + { + label: "SpikeGLXRecording", + keywords: ["extracellular electrophysiology", "voltage", "recording", "neuropixels"], + }, + { + label: "DeepLabCut", + keywords: ["DLC", "tracking", "pose estimation"], + }, + ], +}; + +export const Categories = Template.bind({}); +Categories.args = { + disabledLabel: "Interface not supported", + options: [ + { + label: "SpikeGLXConverter", + category: "Converter", + keywords: ["extracellular electrophysiology", "voltage", "recording", "neuropixels"], + }, + { + label: "SpikeGLXRecording", + category: "Interface", + keywords: ["extracellular electrophysiology", "voltage", "recording", "neuropixels"], + }, + { + label: "DeepLabCut", + category: "Interface", + keywords: ["DLC", "tracking", "pose estimation"], + }, + ], +}; diff --git a/src/electron/renderer/src/stories/SimpleTable.js b/src/electron/renderer/src/stories/SimpleTable.js index bd89de2d7..679dee38d 100644 --- a/src/electron/renderer/src/stories/SimpleTable.js +++ b/src/electron/renderer/src/stories/SimpleTable.js @@ -1,1032 +1,1032 @@ -import { LitElement, css, html, unsafeCSS } from "lit"; -import { header, tempPropertyValueKey } from "./forms/utils"; -import { checkStatus } from "../validation"; - -import { TableCell } from "./table/Cell"; -import { ContextMenu } from "./table/ContextMenu"; -import { emojiFontFamily, errorHue, warningHue } from "./globals"; - -import { Loader } from "./Loader"; -import { styleMap } from "lit/directives/style-map.js"; - -import "./Button"; -import tippy from "tippy.js"; -import { sortTable, getEditable } from "./Table"; -import { NestedInputCell } from "./table/cells/input"; -import { getIgnore } from "./JSONSchemaForm"; -import { merge } from "./pages/utils"; - -var isMac = navigator.platform.toUpperCase().indexOf("MAC") >= 0; - -const isVisible = function (ele, container) { - const { bottom, height, top } = ele.getBoundingClientRect(); - const containerRect = container.getBoundingClientRect(); - - return top <= containerRect.top ? containerRect.top - top <= height : bottom - containerRect.bottom <= height; -}; - -export class SimpleTable extends LitElement { - validateOnChange; - onUpdate = () => {}; - - static get styles() { - return css` - :host { - width: 100%; - display: inline-block; - font-family: sans-serif; - font-size: 13px; - box-sizing: border-box; - --loader-color: hsl(200, 80%, 50%); - } - - tfoot { - display: none; - } - - tfoot tr, - tfoot td { - background: transparent; - display: block; - } - - :host([loading]) table { - background: whitesmoke; - height: 250px; - } - - :host([loading]) tfoot { - display: block; - position: relative; - } - - :host([loading]) tfoot td { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, calc(-50% + 10px)); - text-align: center; - border: none; - } - - td[editable="false"] { - background: whitesmoke; - } - - :host([loading]:not([waiting])) table { - height: 250px; - } - - :host([loading]:not([waiting])) .loadTrigger { - display: none; - } - - :host([loading]:not([waiting])) thead { - filter: blur(1.5px); - } - - :host([loading][waiting]) .loader { - display: none; - } - - :host([measure]) td { - height: 50px; - } - - [error] { - background: hsl(${errorHue}, 100%, 90%) !important; - } - - [warning] { - background: hsl(${warningHue}, 100%, 90%) !important; - } - - [selected] { - border: 1px solid hsl(240, 100%, 50%); - background: hsl(240, 100%, 98%); - } - - .table-container { - overflow: auto; - max-height: 400px; - border: 1px solid gray; - } - - table { - background: white; - width: 100%; - } - - thead { - position: sticky; - top: 0; - left: 0; - z-index: 1; - } - - table tr:first-child td { - border-top: 0px; - } - - th { - border-right: 1px solid gray; - border-bottom: 1px solid gray; - color: #222; - font-weight: 400; - text-align: center; - white-space: nowrap; - } - - th .relative { - position: relative; - padding: 2px 8px; - user-select: none; - } - - th span { - display: inline-block; - } - - thead { - background: whitesmoke; - } - - td { - border: 1px solid gray; - border-left: none; - border-bottom: none; - background: white; - user-select: none; - } - - table *:last-child { - border-right: none; - } - - .relative .info { - margin: 0px 5px; - font-size: 80%; - font-family: ${unsafeCSS(emojiFontFamily)}; - } - - h3 { - margin: 0; - padding: 10px; - background: black; - color: white; - border-radius-top: 5px; - } - `; - } - - #rendered; - #updateRendered = (force) => - force || this.rendered === true - ? (this.rendered = new Promise((resolve) => (this.#rendered = () => resolve((this.rendered = true))))) - : this.rendered; - rendered = this.#updateRendered(true); - - #onUpdate = (...args) => { - this.onUpdate(...args); - if (this.#context) this.#updateContextMenuRendering(); - }; - - constructor({ - schema, - data, - globals, - keyColumn, - validateOnChange, - validateEmptyCells, - onStatusChange, - onLoaded, - onUpdate, - onThrow, - deferLoading, - maxHeight, - contextOptions = {}, - ignore = {}, - editable = {}, - } = {}) { - super(); - this.schema = schema ?? {}; - this.#keyColumn = keyColumn; - this.data = data ?? []; - - this.globals = globals ?? {}; - this.validateEmptyCells = validateEmptyCells ?? true; - this.deferLoading = deferLoading ?? false; - this.maxHeight = maxHeight ?? ""; - - this.ignore = ignore; - this.editable = editable; - - this.contextOptions = contextOptions; - - if (validateOnChange) this.validateOnChange = validateOnChange; - if (onStatusChange) this.onStatusChange = onStatusChange; - if (onLoaded) this.onLoaded = onLoaded; - if (onThrow) this.onThrow = onThrow; - if (onUpdate) this.onUpdate = onUpdate; - - this.onmousedown = (pointerDownEvent) => { - pointerDownEvent.stopPropagation(); - this.#clearSelected(); - this.#selecting = true; - const cell = this.#getCellFromEvent(pointerDownEvent); - if (cell) this.#selectCells(cell); - }; - - this.onmouseup = () => (this.#selecting = false); - - document.addEventListener("onmouseup", this.onmouseup); - - document.addEventListener("mousedown", (pointerDownEvent) => { - const path = this.#getPath(pointerDownEvent); - if (!path.includes(this)) this.#clearSelected(); - }); - - // Handle Copy-Paste Commands - this.addEventListener("copy", (copyEvent) => { - copyEvent.stopPropagation(); - copyEvent.preventDefault(); - - const tsv = Object.values(this.#selected) - .map((arr) => arr.map((inputElement) => inputElement.value).join("\t")) - .join("\n"); - - copyEvent.clipboardData.setData("text/plain", tsv); - }); - - document.addEventListener("keydown", (keyDownEvent) => { - var key = keyDownEvent.keyCode || keyDownEvent.charCode; - if (key == 8 || key == 46) { - const path = this.#getPath(keyDownEvent); - if (path[0] === document.body) - Object.values(this.#selected).forEach((row) => { - row.forEach((cell) => { - if (cell.type !== "table") cell.setInput(""); - }); - }); - return; - } - - // Avoid special key clicks - if ((keyDownEvent.metaKey || keyDownEvent.ctrlKey || keyDownEvent.shiftKey) && !keyDownEvent.key) return; - - // Undo / Redo - if ((isMac ? keyDownEvent.metaKey : keyDownEvent.ctrlKey) && keyDownEvent.key === "z") - return this.#clearSelected(); - - if (this.#firstSelected) { - const path = this.#getPath(keyDownEvent); - if (path[0] === document.body) { - this.#firstSelected.input.toggle(true); // Open editor - this.#firstSelected.input.execute("selectAll"); // redirect keydown to the hidden input - } - } - }); - - this.addEventListener("paste", (pasteEvent) => { - pasteEvent.stopPropagation(); - pasteEvent.preventDefault(); - - const topLeftCell = Object.values(this.#selected)[0]?.[0]; - if (!topLeftCell) return; - const { i: firstI, j: firstJ } = topLeftCell.simpleTableInfo; - const tsv = pasteEvent.clipboardData.getData("text/plain"); - let lastCell; - - tsv.split("\n").map((str, i) => - str.split("\t").forEach((v, j) => { - const cell = this.#cells[firstI + i]?.[firstJ + j]; - if (cell) { - cell.value = v; - // cell.input.innerText = v; // Not undoable - lastCell = cell; - } - }) - ); - - this.#selectCells(lastCell, topLeftCell); - }); - } - - #keyColumn; - #data = []; - get data() { - // Remove empty array entries - if (Array.isArray(this.#data)) return this.#data.filter((o) => Object.keys(o).length); - else return this.#data; - } - - set data(val) { - this.#data = val; - this.keyColumn = Array.isArray(this.#data) ? undefined : this.#keyColumn ?? "Property Key"; - } - - #selected = {}; - #selecting = false; - #firstSelected; // TableCell - - #clearSelected = (clearFirst = true) => { - if (clearFirst && this.#firstSelected) { - // this.#firstSelected.parentNode.removeAttribute("first"); - this.#firstSelected = null; - } - - Object.values(this.#selected).forEach((arr) => - arr.forEach((cellElement) => cellElement.parentNode.removeAttribute("selected")) - ); - this.#selected = {}; - }; - - #getPath = (ev) => ev.path || ev.composedPath(); - #getCellFromEvent = (ev) => this.#getCellFromPath(this.#getPath(ev)); - #getCellFromPath = (path) => { - let inInputCell; - - const found = path.find((element) => { - if (element instanceof NestedInputCell) inInputCell = true; - return !inInputCell && (element instanceof TableCell || element.children?.[0] instanceof TableCell); - }); - if (found instanceof HTMLTableCellElement) return found.children[0]; - else return found; - }; - - #selectCells = (cell, firstSelected = this.#firstSelected) => { - if (!firstSelected) { - firstSelected = this.#firstSelected = cell; - // cell.parentNode.setAttribute("first", ""); - } - - const { i, j } = firstSelected.simpleTableInfo; - const { i: lastI, j: lastJ } = cell.simpleTableInfo; - - this.#clearSelected(false); - - // if (i === lastI && j === lastJ) this.#selectCell(i, j) - // else { - const firstRow = Math.min(i, lastI); - const lastRow = firstRow == i ? lastI : i; - const firstCol = Math.min(j, lastJ); - const lastCol = firstCol == j ? lastJ : j; - for (let row = firstRow; row <= lastRow; row++) { - for (let col = firstCol; col <= lastCol; col++) this.#selectCell(row, col); - } - // } - - return this.#selected; - }; - - #selectCell = (row, col) => { - const cell = this.#cells[row][col]; - if (!this.#selected[row]) this.#selected[row] = []; - this.#selected[row].push(cell); - const parent = cell.parentNode; - parent.setAttribute("selected", ""); - return cell; - }; - - static get properties() { - return { - data: { type: Object, reflect: true }, - }; - } - - #isUndefined(val) { - return val === undefined || val === ""; - } - - #getRowData(row, cols = this.colHeaders) { - const hasRow = row in this.#data; - return cols.map((col, j) => { - let value; - if (col === this.keyColumn) { - if (hasRow) value = row; - else return ""; - } else { - value = hasRow ? this.#data[row][col] : undefined; - if (this.#isUndefined(value)) value = this.globals[col]; - if (this.#isUndefined(value)) value = this.#itemSchema.properties?.[col]?.default; - if (this.#isUndefined(value)) value = ""; - } - return value; - }); - } - - #getData(rows = Object.keys(this.#data), cols = this.colHeaders) { - return rows.map((row, i) => this.#getRowData(row, cols)); - } - - #checkStatus = () => { - const hasWarning = this.shadowRoot.querySelector("[warning]"); - const hasError = this.shadowRoot.querySelector("[error]"); - checkStatus.call(this, hasWarning, hasError); - }; - - validate = () => { - let message; - - if (!message) { - const errors = Array.from(this.shadowRoot.querySelectorAll("[error]")); - const len = errors.length; - console.log(errors); - if (len === 1) message = errors[0].title || "An error exists on this table."; - else if (len) { - message = `${len} errors exist on this table.`; - } - } - - const nUnresolved = Object.keys(this.#unresolved).length; - if (nUnresolved) - message = `${nUnresolved} subject${nUnresolved > 1 ? "s are" : " is"} missing a ${ - this.keyColumn ? `${this.keyColumn} ` : "" - }value`; - - if (message) throw new Error(message); - }; - - status; - onStatusChange = () => {}; - onLoaded = () => {}; - onThrow = () => {}; - - #context; - - mapCells(callback) { - return this.#cells.map((row) => Object.values(row).map((c) => callback(c))); - } - - #switchDisplay = (cell, container, on = true) => { - const parent = cell.parentNode; - let visible = isVisible(parent, container); - if (on && visible) { - cell.style.display = ""; - cell.input.firstUpdated(); // Trigger initialization of contents - } else if (!visible) { - cell.style.display = "none"; // Ensure cells are not immediately rendered - return cell; - } - }; - - addRow = async (anchorRow = this.#cells.length - 1, n) => (await this.#updateRows(anchorRow, 1))[0]; - getRow = (i) => Object.values(this.#cells[i]); - - #updateContextMenuRendering = () => { - const { minItems, maxItems } = this.schema; - - const nRows = this.data.length; - const addRowButton = this.#context.shadowRoot.querySelector("#add-row"); - const removeRowButton = this.#context.shadowRoot.querySelector("#remove-row"); - - removeRowButton.removeAttribute("disabled"); - addRowButton.removeAttribute("disabled"); - - if (minItems !== undefined) { - if (minItems === null) removeRowButton.setAttribute("disabled", ""); - else if (nRows <= minItems) removeRowButton.setAttribute("disabled", ""); - } - - if (maxItems !== undefined) { - if (maxItems === null) addRowButton.setAttribute("disabled", ""); - else if (nRows >= maxItems) addRowButton.setAttribute("disabled", ""); - } - }; - - #menuOptions = { - row: { - add: { - id: "add-row", - label: "Add Row", - onclick: (path) => { - // const cell = this.#getCellFromPath(path); - // if (!cell) return this.addRow(); // No cell selected - // const { i } = cell.simpleTableInfo; - const lastRow = this.#cells.length - 1; - this.addRow(lastRow); // Just insert row at the end - }, - }, - remove: { - id: "remove-row", - label: "Remove Row", - onclick: (path) => { - const cell = this.#getCellFromPath(path); - if (!cell) return; // No cell selected - - const { i, row } = cell.simpleTableInfo; // TODO: Support detecting when the user would like to remove more than one row - - // Validate with empty values before removing (to trigger any dependent validations) - const cols = this.#data[row]; - Object.keys(cols).map((k) => (cols[k] = "")); - if (this.validateOnChange) - Object.keys(cols).map((k) => { - const res = this.validateOnChange([k], { ...cols }, cols[k]); // NOTE: This is likely incorrect - if (typeof res === "function") res(); - }); - - // Actually update the rows - this.#updateRows(i, -1); - }, - }, - }, - - column: { - add: { - id: "add-column", - label: "Add Column", - onclick: (path) => { - console.log("add column"); - this.#getCellFromPath(path); - }, - }, - remove: { - id: "remove-column", - label: "Remove Column", - onclick: (path) => { - console.log("remove column"); - this.#getCellFromPath(path); - }, - }, - }, - }; - - getEditOptions() { - const options = merge(this.contextOptions, { row: { add: true, remove: true } }, { clone: true }); - - const { minItems, maxItems } = this.schema; - const nRows = this.data.length; - - const noRowEdits = minItems && maxItems && minItems === maxItems && nRows === minItems && nRows === maxItems; - - if (noRowEdits) options.row.add = options.row.remove = false; - else { - if (maxItems === null) options.row.add = false; - if (minItems === null) options.row.remove = false; - } - - return options; - } - - generateContextMenu() { - const items = []; - const editOptions = this.getEditOptions(); - - if (editOptions.row?.add) items.push(this.#menuOptions.row.add); - if (editOptions.row?.remove) items.push(this.#menuOptions.row.remove); - if (editOptions.column?.add) items.push(this.#menuOptions.column.add); - if (editOptions.column?.remove) items.push(this.#menuOptions.column.remove); - - if (items.length) { - this.#context = new ContextMenu({ - target: this.shadowRoot.querySelector("table"), - items, - onOpen: (path) => { - const checks = { - row_remove: { - check: this.editable.__row_remove, - element: this.#context.shadowRoot.querySelector("#remove-row"), - }, - - row_add: { - check: this.editable.__row_add, - element: this.#context.shadowRoot.querySelector("#add-row"), - }, - }; - - const hasChecks = Object.values(checks).some(({ check }) => check); - - if (hasChecks) { - const cell = this.#getCellFromPath(path); - const info = cell.simpleTableInfo; - const rowNames = Object.keys(this.#data); - const row = Array.isArray(this.#data) ? info.i : rowNames[info.i]; - - const results = Object.values(checks).map(({ check, element }) => { - if (check) { - const canRemove = check(cell.value, this.#data[row]); - if (canRemove) element.removeAttribute("disabled"); - else element.setAttribute("disabled", ""); - return canRemove; - } else return true; - }); - - return !results.every((r) => r === false); // If all are hidden, don't show the context menu - } - - return true; - }, - }); - - this.#context.updated = () => this.#updateContextMenuRendering(); // Run when done rendering - - document.body.append(this.#context); // Insert context menu - } - } - - #loaded = false; - #resetLoadState() { - this.setAttribute("waiting", ""); - this.#loaded = false; - } - - load = () => { - this.removeAttribute("waiting"); - - const scrollRoot = this.shadowRoot.querySelector("table"); - - // Add cells to body after the initial table render - const body = this.shadowRoot.querySelector("tbody"); - body.innerHTML = ""; // Clear existing render - - if (!this.#loaded) { - const tStart = performance.now(); - body.append( - ...Object.values(this.#cells).map((row) => { - const tr = document.createElement("tr"); - tr.append(...Object.values(row).map((cell, j) => this.#renderCell(cell))); - return tr; - }) - ); - - this.setAttribute("measure", ""); - const mapped = this.mapCells((c) => this.#switchDisplay(c, scrollRoot, false)).flat(); - - let filtered = mapped.filter((c) => c); - scrollRoot.onscroll = () => { - filtered = filtered.map((c) => this.#switchDisplay(c, scrollRoot)).filter((c) => c); - if (!filtered.length) scrollRoot.onscroll = null; - }; - this.removeAttribute("measure"); - - console.warn(`Visible Cell Load Time: ${(performance.now() - tStart).toFixed(2)}ms`); - - this.removeAttribute("loading"); - this.#loaded = true; - this.onLoaded(); - - this.generateContextMenu(); - } - }; - - updated() { - this.setAttribute("loading", ""); - - const data = this.#getData(); // Always render at least one row - const cells = data.map((row, i) => row.map((v, j) => this.#createCell(v, { i, j }))).flat(); - - // Trigger load after a short delay if not deferred - if (!this.deferLoading) { - this.removeAttribute("waiting"); - setTimeout(() => { - this.load(); - this.#rendered(true); - }, 100); - // Otherwise validate the data itself without rendering - } else { - cells.forEach((c) => c.validate()); - this.#rendered(true); - } - } - - #updateRows(row, nRows) { - if (!nRows) return; - - const count = Math.abs(nRows); - const range = Array.from({ length: count }, (_, i) => row + i); - - const bodyEl = this.shadowRoot.querySelector("tbody"); - const children = Array.from(bodyEl.children); - - const isPositive = Math.sign(nRows) === 1; - - // Remove elements and cell entries that correspond to the removed elements - if (!isPositive) { - const rowHeaders = Object.keys(this.#data); - range.map((idx) => { - if (Array.isArray(this.#data)) this.#data.splice(idx, 1); - else delete this.#data[rowHeaders[idx]]; - - Array.from(children).forEach((el) => { - if (el.getAttribute("data-row") === idx.toString()) el.remove(); - }); - - delete this.#unresolved[row]; - delete this.#cells[idx]; - }); - } - - // Shift all cells in a row - let ogCells = { ...this.#cells }; - - const afterIdx = row + count; - const after = children.slice(afterIdx); - after.forEach((element, i) => { - const pos = afterIdx + i + nRows; - this.#cells[pos] = ogCells[afterIdx + i]; - Array.from(element.children).forEach((element) => (element.children[0].simpleTableInfo.i = pos)); // Increment position - }); - - if (isPositive) { - const current = children[row]; - - // Replace deleted base row(s) with new one - let latest = current; - range.forEach((idx) => { - const i = idx + 1; - delete this.#cells[i]; - const data = this.#getRowData(); // Get information for an undefined row - const newRow = document.createElement("tr"); - newRow.setAttribute("data-row", i); - newRow.append(...data.map((v, j) => this.#renderCell(v, { i, j }))); - - if (latest) latest.insertAdjacentElement("afterend", newRow); - else bodyEl.append(newRow); - }); - } - - return new Promise((resolve) => { - setTimeout(() => { - this.#onUpdate([], this.data); - resolve(range.map((i) => i + 1)); - }, 50); // Wait for table to update asynchronously - }); - } - - #renderHeader = (str, { title, description }) => { - const header = document.createElement("th"); - - // Inner Content - const div = document.createElement("div"); - div.classList.add("relative"); - const span = document.createElement("span"); - span.innerHTML = title ?? str; - div.append(span); - header.append(div); - - // Add Description Tooltip - if (description) { - const span = document.createElement("span"); - span.classList.add("info"); - span.innerText = "ℹ️"; - div.append(span); - tippy(span, { content: `${description[0].toUpperCase() + description.slice(1)}`, allowHTML: true }); - } - - return header; - }; - - #cells = []; - - #unresolved = {}; - #onCellChange = (cell) => { - const value = cell.value; - - const { i: row, col: header, row: possibleRowName, j: prop } = cell.simpleTableInfo; - // const header = typeof prop === "number" ? col : prop; - - let rowName = this.keyColumn ? possibleRowName : row; - - // NOTE: We would like to allow invalid values to mutate the results - // if (isValid) { - - const isResolved = rowName in this.#data; - let target = this.#data; - - if (!isResolved) { - if (!this.keyColumn) - this.#data[rowName] = {}; // Add new row to array - else { - rowName = row; - if (!this.#unresolved[rowName]) this.#unresolved[rowName] = {}; // Ensure row exists - target = this.#unresolved; - } - } - - // Transfer data to object - if (header === this.keyColumn) { - if (value !== rowName) { - const old = target[rowName] ?? {}; - if (value) { - this.#data[value] = old; // Allow renaming when different - delete this.#unresolved[row]; - } else this.#unresolved[row] = old; // Allow tracking when keyColumn is deleted - - delete target[rowName]; // Delete the old name from source - } - } - // Update data on passed object - else { - if (this.#isUndefined(value)) target[rowName][header] = undefined; - else target[rowName][header] = value; - } - - if (cell.interacted) this.#onUpdate([rowName, header], value); - }; - - #createCell = (value, info) => { - const rowNames = Object.keys(this.#data); - - const row = Array.isArray(this.#data) ? info.i : rowNames[info.i]; - - const fullInfo = { - ...info, - col: this.colHeaders[info.j], - row: `${row}`, - }; - - const schema = this.#itemProps[fullInfo.col]; - - const ignore = getIgnore(this.ignore, [fullInfo.col]); - const rowData = this.#data[row]; - const isEditable = getEditable(value, rowData, this.editable, fullInfo.col); - - // Track the cell renderer - const cell = new TableCell({ - info: { - title: header( - fullInfo.col === tempPropertyValueKey - ? "Property" // outerParent[tempPropertyKey] // NOTE: For new rows, this will be unresolved at instantiation - : fullInfo.col - ), - col: this.colHeaders[info.j], - }, - editable: isEditable, - value, - schema, - ignore, - validateOnChange: async ( - value, - path = [], - parent = { ...this.#data[fullInfo.row] }, // A copy of the parent - innerSchema = schema - ) => { - if (!value && !this.validateEmptyCells) return true; // Empty cells are valid - - const res = this.validateOnChange - ? await this.validateOnChange([row, fullInfo.col, ...path], parent, value, innerSchema) - : true; - - return res; - }, - - onValidate: (info) => { - const td = cell.simpleTableInfo.td; - if (td) { - const message = info.title; - delete info.title; - - if (td._tippy) { - td._tippy.destroy(); - td.removeAttribute("data-message"); - } - - if (message !== undefined) { - tippy(td, { content: message, allowHTML: true }); - td.setAttribute("data-message", message); - } - - for (let key in info) { - const value = info[key]; - if (value === undefined) td.removeAttribute(key); - else td.setAttribute(key, info[key]); - } - } - - this.#onCellChange(cell); // Only update data if the value has changed - - this.#checkStatus(); // Check status after every validation update - }, - }); - - cell.simpleTableInfo = fullInfo; - - if (!this.#cells[fullInfo.i]) this.#cells[fullInfo.i] = {}; - this.#cells[fullInfo.i][fullInfo.j] = cell; - return cell; - }; - - #renderCell = (value, info) => { - const td = document.createElement("td"); - - const cell = value instanceof TableCell ? value : this.#createCell(value, info); - - cell.simpleTableInfo.td = td; - - td.setAttribute("editable", cell.editable); - - td.onmouseover = () => { - if (this.#selecting) this.#selectCells(cell); - }; - - td.ondblclick = () => cell.toggle(true); - - cell.addEventListener("blur", () => { - this.#clearSelected(); // NOTE: May now make other clearSelected calls redundant - }); - - td.appendChild(cell); - return td; - }; - - #schema = {}; - - #itemSchema = {}; - #itemProps = {}; - - get schema() { - return this.#schema; - } - - set schema(schema = {}) { - this.#schema = schema; - this.#itemSchema = this.#schema.items ?? {}; - this.#itemProps = { ...(this.#itemSchema.properties ?? {}) }; - } - - render() { - this.#updateRendered(); - this.#resetLoadState(); - - const entries = this.#itemProps; - - // Add existing additional / pattern properties to the entries variable if necessary - if (this.#itemSchema.additionalProperties !== false || this.#itemSchema.patternProperties) { - Object.values(this.#data).reduce((acc, v) => { - Object.keys(v).forEach((k) => - !(k in entries) - ? (entries[k] = { - type: typeof v[k], - }) - : "" - ); - return acc; - }, entries); - } - - // Ignore any additions in the ignore configuration - for (let key in this.ignore) delete entries[key]; - for (let key in this.ignore["*"] ?? {}) delete entries[key]; - - // Sort Columns by Key Column and Requirement - this.colHeaders = sortTable( - { - ...this.#itemSchema, - properties: entries, - }, - this.keyColumn, - this.#itemSchema.order ?? ["name"] // Specify the order of the columns - ); - - // Try to guess the key column if unspecified - if (!Array.isArray(this.#data) && !this.keyColumn) { - const [key, value] = Object.entries(this.#data)[0]; - const foundKey = Object.keys(value).find((k) => value[k] === key); - if (foundKey) this.keyColumn = foundKey; - } - - const editOptions = this.getEditOptions(); - - const rowEditOptions = []; - if (editOptions.row?.add) rowEditOptions.push("add"); - if (editOptions.row?.remove) rowEditOptions.push("remove"); - - const genericDescription = rowEditOptions.length ? `Right click to ${rowEditOptions.join(" or ")} rows.` : ""; - - return html` - ${this.#context} -

      - ${genericDescription} -

      -
      - - - - ${[...this.colHeaders] - .map(header) - .map((str, i) => this.#renderHeader(str, entries[this.colHeaders[i]]))} - - - - - - - - -
      -
      ${new Loader()} Rendering table data...
      - { - this.removeAttribute("waiting"); - setTimeout(() => this.load(), 100); - }} - >Load Data -
      -
      - `; - } -} - -customElements.get("nwb-simple-table") || customElements.define("nwb-simple-table", SimpleTable); +import { LitElement, css, html, unsafeCSS } from "lit"; +import { header, tempPropertyValueKey } from "./forms/utils"; +import { checkStatus } from "../validation"; + +import { TableCell } from "./table/Cell"; +import { ContextMenu } from "./table/ContextMenu"; +import { emojiFontFamily, errorHue, warningHue } from "./globals"; + +import { Loader } from "./Loader"; +import { styleMap } from "lit/directives/style-map.js"; + +import "./Button"; +import tippy from "tippy.js"; +import { sortTable, getEditable } from "./Table"; +import { NestedInputCell } from "./table/cells/input"; +import { getIgnore } from "./JSONSchemaForm"; +import { merge } from "./pages/utils"; + +var isMac = navigator.platform.toUpperCase().indexOf("MAC") >= 0; + +const isVisible = function (ele, container) { + const { bottom, height, top } = ele.getBoundingClientRect(); + const containerRect = container.getBoundingClientRect(); + + return top <= containerRect.top ? containerRect.top - top <= height : bottom - containerRect.bottom <= height; +}; + +export class SimpleTable extends LitElement { + validateOnChange; + onUpdate = () => {}; + + static get styles() { + return css` + :host { + width: 100%; + display: inline-block; + font-family: sans-serif; + font-size: 13px; + box-sizing: border-box; + --loader-color: hsl(200, 80%, 50%); + } + + tfoot { + display: none; + } + + tfoot tr, + tfoot td { + background: transparent; + display: block; + } + + :host([loading]) table { + background: whitesmoke; + height: 250px; + } + + :host([loading]) tfoot { + display: block; + position: relative; + } + + :host([loading]) tfoot td { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, calc(-50% + 10px)); + text-align: center; + border: none; + } + + td[editable="false"] { + background: whitesmoke; + } + + :host([loading]:not([waiting])) table { + height: 250px; + } + + :host([loading]:not([waiting])) .loadTrigger { + display: none; + } + + :host([loading]:not([waiting])) thead { + filter: blur(1.5px); + } + + :host([loading][waiting]) .loader { + display: none; + } + + :host([measure]) td { + height: 50px; + } + + [error] { + background: hsl(${errorHue}, 100%, 90%) !important; + } + + [warning] { + background: hsl(${warningHue}, 100%, 90%) !important; + } + + [selected] { + border: 1px solid hsl(240, 100%, 50%); + background: hsl(240, 100%, 98%); + } + + .table-container { + overflow: auto; + max-height: 400px; + border: 1px solid gray; + } + + table { + background: white; + width: 100%; + } + + thead { + position: sticky; + top: 0; + left: 0; + z-index: 1; + } + + table tr:first-child td { + border-top: 0px; + } + + th { + border-right: 1px solid gray; + border-bottom: 1px solid gray; + color: #222; + font-weight: 400; + text-align: center; + white-space: nowrap; + } + + th .relative { + position: relative; + padding: 2px 8px; + user-select: none; + } + + th span { + display: inline-block; + } + + thead { + background: whitesmoke; + } + + td { + border: 1px solid gray; + border-left: none; + border-bottom: none; + background: white; + user-select: none; + } + + table *:last-child { + border-right: none; + } + + .relative .info { + margin: 0px 5px; + font-size: 80%; + font-family: ${unsafeCSS(emojiFontFamily)}; + } + + h3 { + margin: 0; + padding: 10px; + background: black; + color: white; + border-radius-top: 5px; + } + `; + } + + #rendered; + #updateRendered = (force) => + force || this.rendered === true + ? (this.rendered = new Promise((resolve) => (this.#rendered = () => resolve((this.rendered = true))))) + : this.rendered; + rendered = this.#updateRendered(true); + + #onUpdate = (...args) => { + this.onUpdate(...args); + if (this.#context) this.#updateContextMenuRendering(); + }; + + constructor({ + schema, + data, + globals, + keyColumn, + validateOnChange, + validateEmptyCells, + onStatusChange, + onLoaded, + onUpdate, + onThrow, + deferLoading, + maxHeight, + contextOptions = {}, + ignore = {}, + editable = {}, + } = {}) { + super(); + this.schema = schema ?? {}; + this.#keyColumn = keyColumn; + this.data = data ?? []; + + this.globals = globals ?? {}; + this.validateEmptyCells = validateEmptyCells ?? true; + this.deferLoading = deferLoading ?? false; + this.maxHeight = maxHeight ?? ""; + + this.ignore = ignore; + this.editable = editable; + + this.contextOptions = contextOptions; + + if (validateOnChange) this.validateOnChange = validateOnChange; + if (onStatusChange) this.onStatusChange = onStatusChange; + if (onLoaded) this.onLoaded = onLoaded; + if (onThrow) this.onThrow = onThrow; + if (onUpdate) this.onUpdate = onUpdate; + + this.onmousedown = (pointerDownEvent) => { + pointerDownEvent.stopPropagation(); + this.#clearSelected(); + this.#selecting = true; + const cell = this.#getCellFromEvent(pointerDownEvent); + if (cell) this.#selectCells(cell); + }; + + this.onmouseup = () => (this.#selecting = false); + + document.addEventListener("onmouseup", this.onmouseup); + + document.addEventListener("mousedown", (pointerDownEvent) => { + const path = this.#getPath(pointerDownEvent); + if (!path.includes(this)) this.#clearSelected(); + }); + + // Handle Copy-Paste Commands + this.addEventListener("copy", (copyEvent) => { + copyEvent.stopPropagation(); + copyEvent.preventDefault(); + + const tsv = Object.values(this.#selected) + .map((arr) => arr.map((inputElement) => inputElement.value).join("\t")) + .join("\n"); + + copyEvent.clipboardData.setData("text/plain", tsv); + }); + + document.addEventListener("keydown", (keyDownEvent) => { + var key = keyDownEvent.keyCode || keyDownEvent.charCode; + if (key == 8 || key == 46) { + const path = this.#getPath(keyDownEvent); + if (path[0] === document.body) + Object.values(this.#selected).forEach((row) => { + row.forEach((cell) => { + if (cell.type !== "table") cell.setInput(""); + }); + }); + return; + } + + // Avoid special key clicks + if ((keyDownEvent.metaKey || keyDownEvent.ctrlKey || keyDownEvent.shiftKey) && !keyDownEvent.key) return; + + // Undo / Redo + if ((isMac ? keyDownEvent.metaKey : keyDownEvent.ctrlKey) && keyDownEvent.key === "z") + return this.#clearSelected(); + + if (this.#firstSelected) { + const path = this.#getPath(keyDownEvent); + if (path[0] === document.body) { + this.#firstSelected.input.toggle(true); // Open editor + this.#firstSelected.input.execute("selectAll"); // redirect keydown to the hidden input + } + } + }); + + this.addEventListener("paste", (pasteEvent) => { + pasteEvent.stopPropagation(); + pasteEvent.preventDefault(); + + const topLeftCell = Object.values(this.#selected)[0]?.[0]; + if (!topLeftCell) return; + const { i: firstI, j: firstJ } = topLeftCell.simpleTableInfo; + const tsv = pasteEvent.clipboardData.getData("text/plain"); + let lastCell; + + tsv.split("\n").map((str, i) => + str.split("\t").forEach((v, j) => { + const cell = this.#cells[firstI + i]?.[firstJ + j]; + if (cell) { + cell.value = v; + // cell.input.innerText = v; // Not undoable + lastCell = cell; + } + }) + ); + + this.#selectCells(lastCell, topLeftCell); + }); + } + + #keyColumn; + #data = []; + get data() { + // Remove empty array entries + if (Array.isArray(this.#data)) return this.#data.filter((o) => Object.keys(o).length); + else return this.#data; + } + + set data(val) { + this.#data = val; + this.keyColumn = Array.isArray(this.#data) ? undefined : this.#keyColumn ?? "Property Key"; + } + + #selected = {}; + #selecting = false; + #firstSelected; // TableCell + + #clearSelected = (clearFirst = true) => { + if (clearFirst && this.#firstSelected) { + // this.#firstSelected.parentNode.removeAttribute("first"); + this.#firstSelected = null; + } + + Object.values(this.#selected).forEach((arr) => + arr.forEach((cellElement) => cellElement.parentNode.removeAttribute("selected")) + ); + this.#selected = {}; + }; + + #getPath = (ev) => ev.path || ev.composedPath(); + #getCellFromEvent = (ev) => this.#getCellFromPath(this.#getPath(ev)); + #getCellFromPath = (path) => { + let inInputCell; + + const found = path.find((element) => { + if (element instanceof NestedInputCell) inInputCell = true; + return !inInputCell && (element instanceof TableCell || element.children?.[0] instanceof TableCell); + }); + if (found instanceof HTMLTableCellElement) return found.children[0]; + else return found; + }; + + #selectCells = (cell, firstSelected = this.#firstSelected) => { + if (!firstSelected) { + firstSelected = this.#firstSelected = cell; + // cell.parentNode.setAttribute("first", ""); + } + + const { i, j } = firstSelected.simpleTableInfo; + const { i: lastI, j: lastJ } = cell.simpleTableInfo; + + this.#clearSelected(false); + + // if (i === lastI && j === lastJ) this.#selectCell(i, j) + // else { + const firstRow = Math.min(i, lastI); + const lastRow = firstRow == i ? lastI : i; + const firstCol = Math.min(j, lastJ); + const lastCol = firstCol == j ? lastJ : j; + for (let row = firstRow; row <= lastRow; row++) { + for (let col = firstCol; col <= lastCol; col++) this.#selectCell(row, col); + } + // } + + return this.#selected; + }; + + #selectCell = (row, col) => { + const cell = this.#cells[row][col]; + if (!this.#selected[row]) this.#selected[row] = []; + this.#selected[row].push(cell); + const parent = cell.parentNode; + parent.setAttribute("selected", ""); + return cell; + }; + + static get properties() { + return { + data: { type: Object, reflect: true }, + }; + } + + #isUndefined(val) { + return val === undefined || val === ""; + } + + #getRowData(row, cols = this.colHeaders) { + const hasRow = row in this.#data; + return cols.map((col, j) => { + let value; + if (col === this.keyColumn) { + if (hasRow) value = row; + else return ""; + } else { + value = hasRow ? this.#data[row][col] : undefined; + if (this.#isUndefined(value)) value = this.globals[col]; + if (this.#isUndefined(value)) value = this.#itemSchema.properties?.[col]?.default; + if (this.#isUndefined(value)) value = ""; + } + return value; + }); + } + + #getData(rows = Object.keys(this.#data), cols = this.colHeaders) { + return rows.map((row, i) => this.#getRowData(row, cols)); + } + + #checkStatus = () => { + const hasWarning = this.shadowRoot.querySelector("[warning]"); + const hasError = this.shadowRoot.querySelector("[error]"); + checkStatus.call(this, hasWarning, hasError); + }; + + validate = () => { + let message; + + if (!message) { + const errors = Array.from(this.shadowRoot.querySelectorAll("[error]")); + const len = errors.length; + console.log(errors); + if (len === 1) message = errors[0].title || "An error exists on this table."; + else if (len) { + message = `${len} errors exist on this table.`; + } + } + + const nUnresolved = Object.keys(this.#unresolved).length; + if (nUnresolved) + message = `${nUnresolved} subject${nUnresolved > 1 ? "s are" : " is"} missing a ${ + this.keyColumn ? `${this.keyColumn} ` : "" + }value`; + + if (message) throw new Error(message); + }; + + status; + onStatusChange = () => {}; + onLoaded = () => {}; + onThrow = () => {}; + + #context; + + mapCells(callback) { + return this.#cells.map((row) => Object.values(row).map((c) => callback(c))); + } + + #switchDisplay = (cell, container, on = true) => { + const parent = cell.parentNode; + let visible = isVisible(parent, container); + if (on && visible) { + cell.style.display = ""; + cell.input.firstUpdated(); // Trigger initialization of contents + } else if (!visible) { + cell.style.display = "none"; // Ensure cells are not immediately rendered + return cell; + } + }; + + addRow = async (anchorRow = this.#cells.length - 1, n) => (await this.#updateRows(anchorRow, 1))[0]; + getRow = (i) => Object.values(this.#cells[i]); + + #updateContextMenuRendering = () => { + const { minItems, maxItems } = this.schema; + + const nRows = this.data.length; + const addRowButton = this.#context.shadowRoot.querySelector("#add-row"); + const removeRowButton = this.#context.shadowRoot.querySelector("#remove-row"); + + removeRowButton.removeAttribute("disabled"); + addRowButton.removeAttribute("disabled"); + + if (minItems !== undefined) { + if (minItems === null) removeRowButton.setAttribute("disabled", ""); + else if (nRows <= minItems) removeRowButton.setAttribute("disabled", ""); + } + + if (maxItems !== undefined) { + if (maxItems === null) addRowButton.setAttribute("disabled", ""); + else if (nRows >= maxItems) addRowButton.setAttribute("disabled", ""); + } + }; + + #menuOptions = { + row: { + add: { + id: "add-row", + label: "Add Row", + onclick: (path) => { + // const cell = this.#getCellFromPath(path); + // if (!cell) return this.addRow(); // No cell selected + // const { i } = cell.simpleTableInfo; + const lastRow = this.#cells.length - 1; + this.addRow(lastRow); // Just insert row at the end + }, + }, + remove: { + id: "remove-row", + label: "Remove Row", + onclick: (path) => { + const cell = this.#getCellFromPath(path); + if (!cell) return; // No cell selected + + const { i, row } = cell.simpleTableInfo; // TODO: Support detecting when the user would like to remove more than one row + + // Validate with empty values before removing (to trigger any dependent validations) + const cols = this.#data[row]; + Object.keys(cols).map((k) => (cols[k] = "")); + if (this.validateOnChange) + Object.keys(cols).map((k) => { + const res = this.validateOnChange([k], { ...cols }, cols[k]); // NOTE: This is likely incorrect + if (typeof res === "function") res(); + }); + + // Actually update the rows + this.#updateRows(i, -1); + }, + }, + }, + + column: { + add: { + id: "add-column", + label: "Add Column", + onclick: (path) => { + console.log("add column"); + this.#getCellFromPath(path); + }, + }, + remove: { + id: "remove-column", + label: "Remove Column", + onclick: (path) => { + console.log("remove column"); + this.#getCellFromPath(path); + }, + }, + }, + }; + + getEditOptions() { + const options = merge(this.contextOptions, { row: { add: true, remove: true } }, { clone: true }); + + const { minItems, maxItems } = this.schema; + const nRows = this.data.length; + + const noRowEdits = minItems && maxItems && minItems === maxItems && nRows === minItems && nRows === maxItems; + + if (noRowEdits) options.row.add = options.row.remove = false; + else { + if (maxItems === null) options.row.add = false; + if (minItems === null) options.row.remove = false; + } + + return options; + } + + generateContextMenu() { + const items = []; + const editOptions = this.getEditOptions(); + + if (editOptions.row?.add) items.push(this.#menuOptions.row.add); + if (editOptions.row?.remove) items.push(this.#menuOptions.row.remove); + if (editOptions.column?.add) items.push(this.#menuOptions.column.add); + if (editOptions.column?.remove) items.push(this.#menuOptions.column.remove); + + if (items.length) { + this.#context = new ContextMenu({ + target: this.shadowRoot.querySelector("table"), + items, + onOpen: (path) => { + const checks = { + row_remove: { + check: this.editable.__row_remove, + element: this.#context.shadowRoot.querySelector("#remove-row"), + }, + + row_add: { + check: this.editable.__row_add, + element: this.#context.shadowRoot.querySelector("#add-row"), + }, + }; + + const hasChecks = Object.values(checks).some(({ check }) => check); + + if (hasChecks) { + const cell = this.#getCellFromPath(path); + const info = cell.simpleTableInfo; + const rowNames = Object.keys(this.#data); + const row = Array.isArray(this.#data) ? info.i : rowNames[info.i]; + + const results = Object.values(checks).map(({ check, element }) => { + if (check) { + const canRemove = check(cell.value, this.#data[row]); + if (canRemove) element.removeAttribute("disabled"); + else element.setAttribute("disabled", ""); + return canRemove; + } else return true; + }); + + return !results.every((r) => r === false); // If all are hidden, don't show the context menu + } + + return true; + }, + }); + + this.#context.updated = () => this.#updateContextMenuRendering(); // Run when done rendering + + document.body.append(this.#context); // Insert context menu + } + } + + #loaded = false; + #resetLoadState() { + this.setAttribute("waiting", ""); + this.#loaded = false; + } + + load = () => { + this.removeAttribute("waiting"); + + const scrollRoot = this.shadowRoot.querySelector("table"); + + // Add cells to body after the initial table render + const body = this.shadowRoot.querySelector("tbody"); + body.innerHTML = ""; // Clear existing render + + if (!this.#loaded) { + const tStart = performance.now(); + body.append( + ...Object.values(this.#cells).map((row) => { + const tr = document.createElement("tr"); + tr.append(...Object.values(row).map((cell, j) => this.#renderCell(cell))); + return tr; + }) + ); + + this.setAttribute("measure", ""); + const mapped = this.mapCells((c) => this.#switchDisplay(c, scrollRoot, false)).flat(); + + let filtered = mapped.filter((c) => c); + scrollRoot.onscroll = () => { + filtered = filtered.map((c) => this.#switchDisplay(c, scrollRoot)).filter((c) => c); + if (!filtered.length) scrollRoot.onscroll = null; + }; + this.removeAttribute("measure"); + + console.warn(`Visible Cell Load Time: ${(performance.now() - tStart).toFixed(2)}ms`); + + this.removeAttribute("loading"); + this.#loaded = true; + this.onLoaded(); + + this.generateContextMenu(); + } + }; + + updated() { + this.setAttribute("loading", ""); + + const data = this.#getData(); // Always render at least one row + const cells = data.map((row, i) => row.map((v, j) => this.#createCell(v, { i, j }))).flat(); + + // Trigger load after a short delay if not deferred + if (!this.deferLoading) { + this.removeAttribute("waiting"); + setTimeout(() => { + this.load(); + this.#rendered(true); + }, 100); + // Otherwise validate the data itself without rendering + } else { + cells.forEach((c) => c.validate()); + this.#rendered(true); + } + } + + #updateRows(row, nRows) { + if (!nRows) return; + + const count = Math.abs(nRows); + const range = Array.from({ length: count }, (_, i) => row + i); + + const bodyEl = this.shadowRoot.querySelector("tbody"); + const children = Array.from(bodyEl.children); + + const isPositive = Math.sign(nRows) === 1; + + // Remove elements and cell entries that correspond to the removed elements + if (!isPositive) { + const rowHeaders = Object.keys(this.#data); + range.map((idx) => { + if (Array.isArray(this.#data)) this.#data.splice(idx, 1); + else delete this.#data[rowHeaders[idx]]; + + Array.from(children).forEach((el) => { + if (el.getAttribute("data-row") === idx.toString()) el.remove(); + }); + + delete this.#unresolved[row]; + delete this.#cells[idx]; + }); + } + + // Shift all cells in a row + let ogCells = { ...this.#cells }; + + const afterIdx = row + count; + const after = children.slice(afterIdx); + after.forEach((element, i) => { + const pos = afterIdx + i + nRows; + this.#cells[pos] = ogCells[afterIdx + i]; + Array.from(element.children).forEach((element) => (element.children[0].simpleTableInfo.i = pos)); // Increment position + }); + + if (isPositive) { + const current = children[row]; + + // Replace deleted base row(s) with new one + let latest = current; + range.forEach((idx) => { + const i = idx + 1; + delete this.#cells[i]; + const data = this.#getRowData(); // Get information for an undefined row + const newRow = document.createElement("tr"); + newRow.setAttribute("data-row", i); + newRow.append(...data.map((v, j) => this.#renderCell(v, { i, j }))); + + if (latest) latest.insertAdjacentElement("afterend", newRow); + else bodyEl.append(newRow); + }); + } + + return new Promise((resolve) => { + setTimeout(() => { + this.#onUpdate([], this.data); + resolve(range.map((i) => i + 1)); + }, 50); // Wait for table to update asynchronously + }); + } + + #renderHeader = (str, { title, description }) => { + const header = document.createElement("th"); + + // Inner Content + const div = document.createElement("div"); + div.classList.add("relative"); + const span = document.createElement("span"); + span.innerHTML = title ?? str; + div.append(span); + header.append(div); + + // Add Description Tooltip + if (description) { + const span = document.createElement("span"); + span.classList.add("info"); + span.innerText = "ℹ️"; + div.append(span); + tippy(span, { content: `${description[0].toUpperCase() + description.slice(1)}`, allowHTML: true }); + } + + return header; + }; + + #cells = []; + + #unresolved = {}; + #onCellChange = (cell) => { + const value = cell.value; + + const { i: row, col: header, row: possibleRowName, j: prop } = cell.simpleTableInfo; + // const header = typeof prop === "number" ? col : prop; + + let rowName = this.keyColumn ? possibleRowName : row; + + // NOTE: We would like to allow invalid values to mutate the results + // if (isValid) { + + const isResolved = rowName in this.#data; + let target = this.#data; + + if (!isResolved) { + if (!this.keyColumn) + this.#data[rowName] = {}; // Add new row to array + else { + rowName = row; + if (!this.#unresolved[rowName]) this.#unresolved[rowName] = {}; // Ensure row exists + target = this.#unresolved; + } + } + + // Transfer data to object + if (header === this.keyColumn) { + if (value !== rowName) { + const old = target[rowName] ?? {}; + if (value) { + this.#data[value] = old; // Allow renaming when different + delete this.#unresolved[row]; + } else this.#unresolved[row] = old; // Allow tracking when keyColumn is deleted + + delete target[rowName]; // Delete the old name from source + } + } + // Update data on passed object + else { + if (this.#isUndefined(value)) target[rowName][header] = undefined; + else target[rowName][header] = value; + } + + if (cell.interacted) this.#onUpdate([rowName, header], value); + }; + + #createCell = (value, info) => { + const rowNames = Object.keys(this.#data); + + const row = Array.isArray(this.#data) ? info.i : rowNames[info.i]; + + const fullInfo = { + ...info, + col: this.colHeaders[info.j], + row: `${row}`, + }; + + const schema = this.#itemProps[fullInfo.col]; + + const ignore = getIgnore(this.ignore, [fullInfo.col]); + const rowData = this.#data[row]; + const isEditable = getEditable(value, rowData, this.editable, fullInfo.col); + + // Track the cell renderer + const cell = new TableCell({ + info: { + title: header( + fullInfo.col === tempPropertyValueKey + ? "Property" // outerParent[tempPropertyKey] // NOTE: For new rows, this will be unresolved at instantiation + : fullInfo.col + ), + col: this.colHeaders[info.j], + }, + editable: isEditable, + value, + schema, + ignore, + validateOnChange: async ( + value, + path = [], + parent = { ...this.#data[fullInfo.row] }, // A copy of the parent + innerSchema = schema + ) => { + if (!value && !this.validateEmptyCells) return true; // Empty cells are valid + + const res = this.validateOnChange + ? await this.validateOnChange([row, fullInfo.col, ...path], parent, value, innerSchema) + : true; + + return res; + }, + + onValidate: (info) => { + const td = cell.simpleTableInfo.td; + if (td) { + const message = info.title; + delete info.title; + + if (td._tippy) { + td._tippy.destroy(); + td.removeAttribute("data-message"); + } + + if (message !== undefined) { + tippy(td, { content: message, allowHTML: true }); + td.setAttribute("data-message", message); + } + + for (let key in info) { + const value = info[key]; + if (value === undefined) td.removeAttribute(key); + else td.setAttribute(key, info[key]); + } + } + + this.#onCellChange(cell); // Only update data if the value has changed + + this.#checkStatus(); // Check status after every validation update + }, + }); + + cell.simpleTableInfo = fullInfo; + + if (!this.#cells[fullInfo.i]) this.#cells[fullInfo.i] = {}; + this.#cells[fullInfo.i][fullInfo.j] = cell; + return cell; + }; + + #renderCell = (value, info) => { + const td = document.createElement("td"); + + const cell = value instanceof TableCell ? value : this.#createCell(value, info); + + cell.simpleTableInfo.td = td; + + td.setAttribute("editable", cell.editable); + + td.onmouseover = () => { + if (this.#selecting) this.#selectCells(cell); + }; + + td.ondblclick = () => cell.toggle(true); + + cell.addEventListener("blur", () => { + this.#clearSelected(); // NOTE: May now make other clearSelected calls redundant + }); + + td.appendChild(cell); + return td; + }; + + #schema = {}; + + #itemSchema = {}; + #itemProps = {}; + + get schema() { + return this.#schema; + } + + set schema(schema = {}) { + this.#schema = schema; + this.#itemSchema = this.#schema.items ?? {}; + this.#itemProps = { ...(this.#itemSchema.properties ?? {}) }; + } + + render() { + this.#updateRendered(); + this.#resetLoadState(); + + const entries = this.#itemProps; + + // Add existing additional / pattern properties to the entries variable if necessary + if (this.#itemSchema.additionalProperties !== false || this.#itemSchema.patternProperties) { + Object.values(this.#data).reduce((acc, v) => { + Object.keys(v).forEach((k) => + !(k in entries) + ? (entries[k] = { + type: typeof v[k], + }) + : "" + ); + return acc; + }, entries); + } + + // Ignore any additions in the ignore configuration + for (let key in this.ignore) delete entries[key]; + for (let key in this.ignore["*"] ?? {}) delete entries[key]; + + // Sort Columns by Key Column and Requirement + this.colHeaders = sortTable( + { + ...this.#itemSchema, + properties: entries, + }, + this.keyColumn, + this.#itemSchema.order ?? ["name"] // Specify the order of the columns + ); + + // Try to guess the key column if unspecified + if (!Array.isArray(this.#data) && !this.keyColumn) { + const [key, value] = Object.entries(this.#data)[0]; + const foundKey = Object.keys(value).find((k) => value[k] === key); + if (foundKey) this.keyColumn = foundKey; + } + + const editOptions = this.getEditOptions(); + + const rowEditOptions = []; + if (editOptions.row?.add) rowEditOptions.push("add"); + if (editOptions.row?.remove) rowEditOptions.push("remove"); + + const genericDescription = rowEditOptions.length ? `Right click to ${rowEditOptions.join(" or ")} rows.` : ""; + + return html` + ${this.#context} +

      + ${genericDescription} +

      +
      + + + + ${[...this.colHeaders] + .map(header) + .map((str, i) => this.#renderHeader(str, entries[this.colHeaders[i]]))} + + + + + + + + +
      +
      ${new Loader()} Rendering table data...
      + { + this.removeAttribute("waiting"); + setTimeout(() => this.load(), 100); + }} + >Load Data +
      +
      + `; + } +} + +customElements.get("nwb-simple-table") || customElements.define("nwb-simple-table", SimpleTable); diff --git a/src/electron/renderer/src/stories/Table.js b/src/electron/renderer/src/stories/Table.js index f9271dbab..f4a7c7956 100644 --- a/src/electron/renderer/src/stories/Table.js +++ b/src/electron/renderer/src/stories/Table.js @@ -1,742 +1,742 @@ -import { LitElement, html } from "lit"; -import { Handsontable, css } from "./hot"; -import { header } from "./forms/utils"; -import { errorHue, warningHue } from "./globals"; -import { checkStatus } from "../validation"; -import { emojiFontFamily } from "./globals"; - -import tippy from "tippy.js"; -import "tippy.js/dist/tippy.css"; - -const rowSymbol = Symbol("row"); - -const maxRows = 20; - -const isRequired = (col, schema) => { - return schema.required?.includes(col); -}; - -export const getEditable = (value, rowData = {}, config, colName) => { - if (typeof config === "boolean") return config; - if (typeof config === "function") return config(value, rowData); - return getEditable(value, rowData, config?.[colName] ?? true); -}; - -export function sortTable(schema, keyColumn, order) { - const cols = Object.keys(schema.properties) - - //Sort alphabetically - .sort((a, b) => { - if (a < b) return -1; - if (a > b) return 1; - return 0; - }) - .sort((a, b) => { - const aRequired = isRequired(a, schema); - const bRequired = isRequired(b, schema); - if (aRequired && bRequired) return 0; - if (aRequired) return -1; - if (bRequired) return 1; - return 0; - }) - .sort((a, b) => { - if (a === keyColumn) return -1; - if (b === keyColumn) return 1; - return 0; - }); - - return order - ? cols.sort((a, b) => { - const idxA = order.indexOf(a); - const idxB = order.indexOf(b); - if (idxA === -1) return 1; - if (idxB === -1) return -1; - return idxA - idxB; - }) - : cols; -} - -// Inject scoped stylesheet -const styles = ` - - ${css} - - - .handsontable td[error] { - background: hsl(${errorHue}, 100%, 90%) !important; - } - - [warning] { - background: hsl(${warningHue}, 100%, 90%) !important; - } - - ul { - list-style-type: none; - padding: 0; - } - - - ul li:before { - content: '-'; - position: absolute; - margin-left: -10px; - } - - ul li { - padding-left: 20px - } - - .relative .info { - margin: 0px 5px; - font-size: 80%; - font-family: ${emojiFontFamily} - } - - .handsontable { - overflow: unset !important; - } - - th > [data-required] > *:first-child::after { - content: '*'; - margin-left: 2px; - color: gray; - } - - th > [data-required=true] > *:first-child::after { - color: red; - } -`; - -const styleSymbol = Symbol("table-styles"); - -export class Table extends LitElement { - validateOnChange; - - constructor({ - schema, - data, - globals, - keyColumn, - validateOnChange, - onUpdate, - onOverride, - validateEmptyCells, - onStatusChange, - onThrow, - contextMenu, - ignore, - groups, // NOTE: All groups must be non-overlapping - } = {}) { - super(); - this.schema = schema ?? {}; - this.data = data ?? []; - this.keyColumn = keyColumn; - this.globals = globals ?? {}; - this.validateEmptyCells = validateEmptyCells ?? true; - this.contextMenu = contextMenu ?? {}; - this.ignore = ignore ?? {}; - this.groups = groups ?? []; - - if (onThrow) this.onThrow = onThrow; - if (onUpdate) this.onUpdate = onUpdate; - if (onOverride) this.onOverride = onOverride; - if (validateOnChange) this.validateOnChange = validateOnChange; - if (onStatusChange) this.onStatusChange = onStatusChange; - - if (this.data.length > maxRows) this.data = this.data.slice(0, maxRows); - - this.style.width = "100%"; - this.style.display = "flex"; - this.style.flexWrap = "wrap"; - this.style.alignItems = "center"; - this.style.justifyContent = "center"; - } - - static get properties() { - return { - data: { type: Object, reflect: true }, - globals: { type: Object, reflect: true }, - }; - } - - createRenderRoot() { - return this; - } - - #getRowData(row, cols = this.colHeaders) { - const hasRow = row in this.data; - return cols.map((col, j) => { - let value; - if (col === this.keyColumn) { - if (hasRow) value = row; - else return undefined; - } else value = (hasRow ? this.data[row][col] : undefined) ?? this.globals[col]; - - return value; - }); - } - - #getData(rows = Object.keys(this.data), cols = this.colHeaders) { - return rows.map((row, i) => this.#getRowData(row, cols)); - } - - #checkStatus = () => { - const hasWarning = this.querySelector("[warning]"); - const hasError = this.querySelector("[error]"); - checkStatus.call(this, hasWarning, hasError); - }; - - validate = () => { - let message; - - const nUnresolved = Object.keys(this.unresolved).length; - if (nUnresolved) - message = `${nUnresolved} row${nUnresolved > 1 ? "s are" : " is"} missing a ${ - this.keyColumn ? `${header(this.keyColumn)} ` : "n " - }entry`; - - if (!message) { - const errors = Array.from(this.querySelectorAll("[error]")); - const len = errors.length; - if (len === 1) message = errors[0].getAttribute("data-message") || "Error found"; - else if (len) message = `${len} errors exist on this table.`; - } - - if (message) throw new Error(message); - }; - - status; - onStatusChange = () => {}; - onUpdate = () => {}; - onOverride = () => {}; - onThrow = () => {}; - - #schema = {}; - #itemSchema = {}; - #itemProps = {}; - - get schema() { - return this.#schema; - } - - set schema(schema) { - this.#schema = schema; - this.#itemSchema = schema.items ?? {}; - this.#itemProps = { ...(this.#itemSchema.properties ?? {}) }; - } - - getRowName = (row) => - this.keyColumn ? Object.entries(this.data).find(([k, v]) => v[rowSymbol] === row)?.[0] : row; - - revalidate = (skipped = []) => { - this.table.getData().forEach((rowData, i) => { - rowData.forEach((value, j) => { - const isSkipped = skipped.find(({ row, prop }) => row === i && j === prop); - if (!isSkipped) this.table.setDataAtCell(i, j, value); - }); - }); - }; - - #info = {}; - - updated() { - const div = (this.shadowRoot ?? this).querySelector("div"); - - const unresolved = (this.unresolved = {}); - - const entries = this.#itemProps; - for (let key in this.ignore) delete entries[key]; - for (let key in this.ignore["*"] ?? {}) delete entries[key]; - - // Add existing additional properties to the entries variable if necessary - if (this.#itemSchema.additionalProperties) { - Object.values(this.data).reduce((acc, v) => { - Object.keys(v).forEach((k) => - !(k in entries) - ? (entries[k] = { - type: typeof v[k], - }) - : "" - ); - return acc; - }, entries); - } - - // Sort Columns by Key Column and Requirement - - const colHeaders = (this.colHeaders = sortTable( - { - ...this.#itemSchema, - properties: entries, - }, - this.keyColumn, - this.#itemSchema.order - )); - - // Try to guess the key column if unspecified - if (!Array.isArray(this.data) && !this.keyColumn) { - const [key, value] = Object.entries(this.data)[0]; - const foundKey = Object.keys(value).find((k) => value[k] === key); - if (foundKey) this.keyColumn = foundKey; - } - - Object.keys(this.data).forEach((row, i) => - Object.defineProperty(this.data[row], rowSymbol, { value: i, configurable: true }) - ); // Set initial row trackers - - const displayHeaders = [...colHeaders].map(header); - - const columns = colHeaders.map((k, i) => { - const info = (this.#info[k] = { type: "text", stopGroupUpdates: {} }); - - const colInfo = entries[k]; - if (colInfo.unit) displayHeaders[i] = `${displayHeaders[i]} (${colInfo.unit})`; - - // Enumerate Possible Values - if (colInfo.enum) { - info.source = colInfo.enumLabels ? Object.values(colInfo.enumLabels) : colInfo.enum; - if (colInfo.strict === false) info.type = "autocomplete"; - else info.type = "dropdown"; - } - - // Constrain to Date Format - if (colInfo.format === "date-time") { - info.type = "date-time"; - info.correctFormat = false; - info.min = colInfo.exclusiveMinimum ?? colInfo.minimum; - info.max = colInfo.exclusiveMaximum ?? colInfo.maximum; - } - - if (colInfo.type === "array") { - info.data = k; - info.type = "array"; - info.uniqueItems = colInfo.uniqueItems; - } - - // Validate Regex Pattern - if (colInfo.pattern) { - const regex = new RegExp(colInfo.pattern); - info.validator = (value, callback) => callback(regex.test(value)); - } - - const runThisValidator = async (value, row, prop) => { - try { - const path = [row, k]; - const valid = this.validateOnChange - ? await this.validateOnChange( - path, - { ...this.data[this.getRowName(row)] }, // Validate on a copy of the parent - value, - info - ) - : true; // Return true if validation errored out on the JavaScript side (e.g. server is down) - - return this.#handleValidationResult(valid, row, prop); - } catch { - return true; // Return true if validation errored out on the JavaScript side (e.g. server is down) - } - }; - - let instanceThis = this; - const required = isRequired(k, this.#itemSchema); - - const validator = async function (value, callback) { - const row = this.row; - - const validateEmptyCells = instanceThis.validateEmptyCells; - const willValidate = - validateEmptyCells === true || - (Array.isArray(validateEmptyCells) && validateEmptyCells.includes(k)); - - value = instanceThis.#getValue(value, colInfo); - - // Clear empty values if not validated - if (!value && !willValidate) { - instanceThis.#handleValidationResult( - [], // Clear errors - row, - this.col - ); - callback(true); // Allow empty value - return; - } - - if (value && k === instanceThis.keyColumn) { - if (value in instanceThis.data && instanceThis.data[value]?.[rowSymbol] !== row) { - // Convert previously valid value to unresolved - const previousKey = instanceThis.getRowName(row); - if (previousKey) { - unresolved[row] = instanceThis.data[previousKey]; - delete instanceThis.data[previousKey]; - } - - // Throw error - instanceThis.#handleValidationResult( - [{ message: `${header(k)} already exists`, type: "error" }], - row, - this.col - ); - callback(false); - return; - } - } - - if (!(await runThisValidator(value, row, this.col))) { - callback(false); - return; - } - - const isUndefined = value == ""; - - if (isUndefined && required) { - instanceThis.#handleValidationResult( - [{ message: `${header(k)} is a required property.`, type: "error" }], - row, - this.col - ); - callback(false); - return; - } - }; - - if (info.validator) { - const og = info.validator; - info.validator = async function (value, callback) { - let wasCalled = false; - - const newCallback = (valid) => { - wasCalled = true; - callback(valid); - }; - - await validator.call(this, value, newCallback); - if (!wasCalled) og(value, callback); - }; - } else - info.validator = async function (value, callback) { - let wasCalled = false; - - const newCallback = (valid) => { - wasCalled = true; - callback(valid); - }; - - await validator.call(this, value, newCallback); - if (!wasCalled) callback(true); // Default to true if not called earlier - }; - - return info; - }); - - const onAfterGetHeader = (index, TH) => { - const col = colHeaders[index]; - const desc = entries[col].description; - - const rel = TH.querySelector(".relative"); - - const required = isRequired(col, this.#itemSchema); - if (required) - rel.setAttribute( - "data-required", - this.validateEmptyCells - ? Array.isArray(this.validateEmptyCells) - ? this.validateEmptyCells.includes(col) - : true - : undefined - ); - - if (desc) { - let span = rel.querySelector(".info"); - - if (!span) { - span = document.createElement("span"); - span.classList.add("info"); - span.innerText = "ℹ️"; - rel.append(span); - } - - if (span._tippy) span._tippy.destroy(); - tippy(span, { content: `${desc}`, allowHTML: true }); - } - }; - - const data = this.#getData(); - - let nRows = Object.keys(data).length; - - let contextMenu = ["row_below", "remove_row"]; - if (this.#itemSchema.additionalProperties) contextMenu.push("col_right", "remove_col"); - - contextMenu = contextMenu.filter((k) => !(this.contextMenu.ignore ?? []).includes(k)); - - const descriptionEl = this.querySelector("#description"); - const operations = { - rows: [], - columns: [], - }; - - if (contextMenu.includes("row_below")) operations.rows.push("add"); - if (contextMenu.includes("remove_row")) operations.rows.push("remove"); - if (contextMenu.includes("col_right")) operations.columns.push("add"); - if (contextMenu.includes("remove_col")) operations.columns.push("remove"); - const operationSet = new Set(Object.values(operations).flat()); - const operationOn = Object.keys(operations).filter((k) => operations[k].length); - - if (operationSet.size) { - const desc = `Right click to ${Array.from(operationSet).join("/")} ${operationOn.join("and")}.`; - descriptionEl.innerText = desc; - } - - if (this.table) this.table.destroy(); - - const table = new Handsontable(div, { - data: this.#getRenderedData(data), - // rowHeaders: rowHeaders.map(v => `sub-${v}`), - colHeaders: displayHeaders, - columns, - height: "auto", // Keeping this will ensure there is no infinite loop that adds length to the table - stretchH: "all", - manualColumnResize: true, - preventOverflow: "horizontal", - width: "100%", - contextMenu, - licenseKey: "non-commercial-and-evaluation", // for non-commercial use only - afterGetColHeader: onAfterGetHeader, - afterGetRowHeader: onAfterGetHeader, - }); - - this.table = table; - - // Move context menu - const menu = div.ownerDocument.querySelector(".htContextMenu"); - if (menu) this.#root.appendChild(menu); // Move to style root - - let validated = 0; - - const initialCellsToUpdate = data.reduce((acc, arr) => acc + arr.length, 0); - - table.addHook("afterValidate", (isValid, value, row, prop) => { - const header = typeof prop === "number" ? colHeaders[prop] : prop; - const info = this.#info[header]; - - // Update other columns in the group - - const skipUpdate = info.stopGroupUpdates[row]; - - // Decrement counters - if (skipUpdate) info.stopGroupUpdates[row]--; - - if (!skipUpdate) { - const isUserUpdate = initialCellsToUpdate <= validated; - - let rowName = this.getRowName(row); - - if (isUserUpdate) { - // NOTE: We would like to allow invalid values to mutate the results - // if (isValid) { - const isResolved = rowName in this.data; - let target = this.data; - - if (!isResolved) { - if (!this.keyColumn) - this.data[rowName] = {}; // Add new row to array - else { - rowName = row; - if (!unresolved[rowName]) unresolved[rowName] = {}; // Ensure row exists - target = unresolved; - } - } - - value = this.#getValue(value, entries[header]); - - // Transfer data to object (if valid) - if (header === this.keyColumn) { - if (isValid && value && value !== rowName) { - const old = target[rowName] ?? {}; - this.data[value] = old; - delete target[rowName]; - delete unresolved[row]; - Object.defineProperty(this.data[value], rowSymbol, { value: row, configurable: true }); // Setting row tracker - this.revalidate([{ row, prop }]); - } - } - - // Update data on passed object - else { - const globalValue = this.globals[header]; - - if (value == undefined || value === "") { - if (globalValue) { - value = target[rowName][header] = globalValue; - table.setDataAtCell(row, prop, value); - this.onOverride(header, value, rowName); - } - target[rowName][header] = undefined; - } else { - // Correct for expected arrays (copy-paste issue) - if (entries[header]?.type === "array") { - if (value && !Array.isArray(value)) value = value.split(",").map((v) => v.trim()); - } - - target[rowName][header] = value === globalValue ? undefined : value; - } - } - - this.onUpdate(rowName, header, value); - } - - validated++; - - // Check associated groups for validity - for (let group of this.groups) { - const table = this.table; - if (group.includes(header)) { - const otherGroup = group.filter((col) => col !== header); - - otherGroup.forEach((col) => { - const j = colHeaders.indexOf(col); - const value = table.getDataAtCell(row, j); - const depInfo = this.#info[col]; - const otherGroups = group.filter((c) => c !== col); - depInfo.stopGroupUpdates[row] = otherGroups.length; // Expecting this many updates from other members of the group - table.setDataAtCell(row, j, value); - }); - - return; - } - } - } - - if (typeof isValid === "function") isValid(); - }); - - // If only one row, do not allow deletion - table.addHook("beforeRemoveRow", (index, amount) => { - if (nRows - amount < 1) { - this.onThrow("You must have at least one row", "error"); - return false; - } - }); - - table.addHook("afterRemoveRow", (_, amount, physicalRows) => { - nRows -= amount; - physicalRows.map(async (row) => { - const rowName = this.getRowName(row); - // const cols = this.data[rowHeaders[row]] - // Object.keys(cols).map(k => cols[k] = '') - // if (this.validateOnChange) Object.keys(cols).map(k => this.validateOnChange([ k ], { ...cols }, cols[k])) // Validate with empty values before removing - delete this.data[rowName]; - delete unresolved[row]; - this.onUpdate(rowName, null, undefined); // NOTE: Global metadata PR might simply set all data values to undefined - }); - }); - - table.addHook("afterCreateRow", (index, amount) => { - nRows += amount; - const physicalRows = Array.from({ length: amount }, (_, i) => index + i); - physicalRows.forEach((row) => this.#setRow(row, this.#getRowData(row))); - }); - - // Trigger validation on all cells - data.forEach((row, i) => this.#setRow(i, row)); - } - - #getRenderedValue = (value, colInfo) => { - // Handle enums - if (colInfo.enumLabels) return colInfo.enumLabels[value] ?? value; - return value; - }; - - #getRenderedData = (data) => { - return Object.values(data).map((row) => - row.map((value, j) => this.#getRenderedValue(value, this.#itemSchema.properties[this.colHeaders[j]])) - ); - }; - - #getValue = (value, colInfo) => { - // Handle enums - if (colInfo.enumLabels) - return Object.keys(colInfo.enumLabels).find((k) => colInfo.enumLabels[k] === value) ?? value; - - return value; - }; - - #setRow(row, data) { - data.forEach((value, j) => { - value = this.#getRenderedValue(value, this.#itemSchema.properties[this.colHeaders[j]]); - this.table.setDataAtCell(row, j, value); - }); - } - - #handleValidationResult = (result, row, prop) => { - const warnings = Array.isArray(result) ? result.filter((info) => info.type === "warning") : []; - const errors = Array.isArray(result) ? result?.filter((info) => info.type === "error") : []; - - // Display errors as tooltip - const cell = this.table.getCell(row, prop); // NOTE: Does not resolve unless the cell is rendered... - - if (cell) { - let message = ""; - let theme = ""; - if (warnings.length) { - (theme = "warning"), (message = warnings.map((error) => error.message).join("\n")); - } else cell.removeAttribute("warning"); - - if (errors.length) { - (theme = "error"), (message = errors.map((error) => error.message).join("\n")); // Class switching handled automatically - } else cell.removeAttribute("error"); - - if (theme) cell.setAttribute(theme, ""); - - if (cell._tippy) { - cell._tippy.destroy(); - cell.removeAttribute("data-message"); - } - - if (message) { - tippy(cell, { content: message, allowHTML: true }); - cell.setAttribute("data-message", message); - } - } - - this.#checkStatus(); // Check status after every validation update - - return result === true || result == undefined || errors.length === 0; - }; - - #root; - - // Clean up after the injected stylesheet, which may affect the rendering of other elements (e.g. the main sidebar list items) - disconnectedCallback() { - super.disconnectedCallback(); - this.stylesheet[styleSymbol]--; - if (this.stylesheet[styleSymbol] === 0) this.stylesheet.remove(); - } - - connectedCallback() { - super.connectedCallback(); - const root = this.getRootNode().body ?? this.getRootNode(); - this.#root = root; - const stylesheets = Array.from(root.querySelectorAll("style")); - const exists = (this.stylesheet = stylesheets.find((stylesheet) => styleSymbol in stylesheet)); - - if (exists) exists[styleSymbol]++; - else { - const stylesheet = (this.stylesheet = document.createElement("style")); - stylesheet.innerHTML = styles; - stylesheet[styleSymbol] = true; //1; - root.append(stylesheet); - } - } - - render() { - return html` -
      -

      - -

      - `; - } -} - -customElements.get("nwb-table") || customElements.define("nwb-table", Table); +import { LitElement, html } from "lit"; +import { Handsontable, css } from "./hot"; +import { header } from "./forms/utils"; +import { errorHue, warningHue } from "./globals"; +import { checkStatus } from "../validation"; +import { emojiFontFamily } from "./globals"; + +import tippy from "tippy.js"; +import "tippy.js/dist/tippy.css"; + +const rowSymbol = Symbol("row"); + +const maxRows = 20; + +const isRequired = (col, schema) => { + return schema.required?.includes(col); +}; + +export const getEditable = (value, rowData = {}, config, colName) => { + if (typeof config === "boolean") return config; + if (typeof config === "function") return config(value, rowData); + return getEditable(value, rowData, config?.[colName] ?? true); +}; + +export function sortTable(schema, keyColumn, order) { + const cols = Object.keys(schema.properties) + + //Sort alphabetically + .sort((a, b) => { + if (a < b) return -1; + if (a > b) return 1; + return 0; + }) + .sort((a, b) => { + const aRequired = isRequired(a, schema); + const bRequired = isRequired(b, schema); + if (aRequired && bRequired) return 0; + if (aRequired) return -1; + if (bRequired) return 1; + return 0; + }) + .sort((a, b) => { + if (a === keyColumn) return -1; + if (b === keyColumn) return 1; + return 0; + }); + + return order + ? cols.sort((a, b) => { + const idxA = order.indexOf(a); + const idxB = order.indexOf(b); + if (idxA === -1) return 1; + if (idxB === -1) return -1; + return idxA - idxB; + }) + : cols; +} + +// Inject scoped stylesheet +const styles = ` + + ${css} + + + .handsontable td[error] { + background: hsl(${errorHue}, 100%, 90%) !important; + } + + [warning] { + background: hsl(${warningHue}, 100%, 90%) !important; + } + + ul { + list-style-type: none; + padding: 0; + } + + + ul li:before { + content: '-'; + position: absolute; + margin-left: -10px; + } + + ul li { + padding-left: 20px + } + + .relative .info { + margin: 0px 5px; + font-size: 80%; + font-family: ${emojiFontFamily} + } + + .handsontable { + overflow: unset !important; + } + + th > [data-required] > *:first-child::after { + content: '*'; + margin-left: 2px; + color: gray; + } + + th > [data-required=true] > *:first-child::after { + color: red; + } +`; + +const styleSymbol = Symbol("table-styles"); + +export class Table extends LitElement { + validateOnChange; + + constructor({ + schema, + data, + globals, + keyColumn, + validateOnChange, + onUpdate, + onOverride, + validateEmptyCells, + onStatusChange, + onThrow, + contextMenu, + ignore, + groups, // NOTE: All groups must be non-overlapping + } = {}) { + super(); + this.schema = schema ?? {}; + this.data = data ?? []; + this.keyColumn = keyColumn; + this.globals = globals ?? {}; + this.validateEmptyCells = validateEmptyCells ?? true; + this.contextMenu = contextMenu ?? {}; + this.ignore = ignore ?? {}; + this.groups = groups ?? []; + + if (onThrow) this.onThrow = onThrow; + if (onUpdate) this.onUpdate = onUpdate; + if (onOverride) this.onOverride = onOverride; + if (validateOnChange) this.validateOnChange = validateOnChange; + if (onStatusChange) this.onStatusChange = onStatusChange; + + if (this.data.length > maxRows) this.data = this.data.slice(0, maxRows); + + this.style.width = "100%"; + this.style.display = "flex"; + this.style.flexWrap = "wrap"; + this.style.alignItems = "center"; + this.style.justifyContent = "center"; + } + + static get properties() { + return { + data: { type: Object, reflect: true }, + globals: { type: Object, reflect: true }, + }; + } + + createRenderRoot() { + return this; + } + + #getRowData(row, cols = this.colHeaders) { + const hasRow = row in this.data; + return cols.map((col, j) => { + let value; + if (col === this.keyColumn) { + if (hasRow) value = row; + else return undefined; + } else value = (hasRow ? this.data[row][col] : undefined) ?? this.globals[col]; + + return value; + }); + } + + #getData(rows = Object.keys(this.data), cols = this.colHeaders) { + return rows.map((row, i) => this.#getRowData(row, cols)); + } + + #checkStatus = () => { + const hasWarning = this.querySelector("[warning]"); + const hasError = this.querySelector("[error]"); + checkStatus.call(this, hasWarning, hasError); + }; + + validate = () => { + let message; + + const nUnresolved = Object.keys(this.unresolved).length; + if (nUnresolved) + message = `${nUnresolved} row${nUnresolved > 1 ? "s are" : " is"} missing a ${ + this.keyColumn ? `${header(this.keyColumn)} ` : "n " + }entry`; + + if (!message) { + const errors = Array.from(this.querySelectorAll("[error]")); + const len = errors.length; + if (len === 1) message = errors[0].getAttribute("data-message") || "Error found"; + else if (len) message = `${len} errors exist on this table.`; + } + + if (message) throw new Error(message); + }; + + status; + onStatusChange = () => {}; + onUpdate = () => {}; + onOverride = () => {}; + onThrow = () => {}; + + #schema = {}; + #itemSchema = {}; + #itemProps = {}; + + get schema() { + return this.#schema; + } + + set schema(schema) { + this.#schema = schema; + this.#itemSchema = schema.items ?? {}; + this.#itemProps = { ...(this.#itemSchema.properties ?? {}) }; + } + + getRowName = (row) => + this.keyColumn ? Object.entries(this.data).find(([k, v]) => v[rowSymbol] === row)?.[0] : row; + + revalidate = (skipped = []) => { + this.table.getData().forEach((rowData, i) => { + rowData.forEach((value, j) => { + const isSkipped = skipped.find(({ row, prop }) => row === i && j === prop); + if (!isSkipped) this.table.setDataAtCell(i, j, value); + }); + }); + }; + + #info = {}; + + updated() { + const div = (this.shadowRoot ?? this).querySelector("div"); + + const unresolved = (this.unresolved = {}); + + const entries = this.#itemProps; + for (let key in this.ignore) delete entries[key]; + for (let key in this.ignore["*"] ?? {}) delete entries[key]; + + // Add existing additional properties to the entries variable if necessary + if (this.#itemSchema.additionalProperties) { + Object.values(this.data).reduce((acc, v) => { + Object.keys(v).forEach((k) => + !(k in entries) + ? (entries[k] = { + type: typeof v[k], + }) + : "" + ); + return acc; + }, entries); + } + + // Sort Columns by Key Column and Requirement + + const colHeaders = (this.colHeaders = sortTable( + { + ...this.#itemSchema, + properties: entries, + }, + this.keyColumn, + this.#itemSchema.order + )); + + // Try to guess the key column if unspecified + if (!Array.isArray(this.data) && !this.keyColumn) { + const [key, value] = Object.entries(this.data)[0]; + const foundKey = Object.keys(value).find((k) => value[k] === key); + if (foundKey) this.keyColumn = foundKey; + } + + Object.keys(this.data).forEach((row, i) => + Object.defineProperty(this.data[row], rowSymbol, { value: i, configurable: true }) + ); // Set initial row trackers + + const displayHeaders = [...colHeaders].map(header); + + const columns = colHeaders.map((k, i) => { + const info = (this.#info[k] = { type: "text", stopGroupUpdates: {} }); + + const colInfo = entries[k]; + if (colInfo.unit) displayHeaders[i] = `${displayHeaders[i]} (${colInfo.unit})`; + + // Enumerate Possible Values + if (colInfo.enum) { + info.source = colInfo.enumLabels ? Object.values(colInfo.enumLabels) : colInfo.enum; + if (colInfo.strict === false) info.type = "autocomplete"; + else info.type = "dropdown"; + } + + // Constrain to Date Format + if (colInfo.format === "date-time") { + info.type = "date-time"; + info.correctFormat = false; + info.min = colInfo.exclusiveMinimum ?? colInfo.minimum; + info.max = colInfo.exclusiveMaximum ?? colInfo.maximum; + } + + if (colInfo.type === "array") { + info.data = k; + info.type = "array"; + info.uniqueItems = colInfo.uniqueItems; + } + + // Validate Regex Pattern + if (colInfo.pattern) { + const regex = new RegExp(colInfo.pattern); + info.validator = (value, callback) => callback(regex.test(value)); + } + + const runThisValidator = async (value, row, prop) => { + try { + const path = [row, k]; + const valid = this.validateOnChange + ? await this.validateOnChange( + path, + { ...this.data[this.getRowName(row)] }, // Validate on a copy of the parent + value, + info + ) + : true; // Return true if validation errored out on the JavaScript side (e.g. server is down) + + return this.#handleValidationResult(valid, row, prop); + } catch { + return true; // Return true if validation errored out on the JavaScript side (e.g. server is down) + } + }; + + let instanceThis = this; + const required = isRequired(k, this.#itemSchema); + + const validator = async function (value, callback) { + const row = this.row; + + const validateEmptyCells = instanceThis.validateEmptyCells; + const willValidate = + validateEmptyCells === true || + (Array.isArray(validateEmptyCells) && validateEmptyCells.includes(k)); + + value = instanceThis.#getValue(value, colInfo); + + // Clear empty values if not validated + if (!value && !willValidate) { + instanceThis.#handleValidationResult( + [], // Clear errors + row, + this.col + ); + callback(true); // Allow empty value + return; + } + + if (value && k === instanceThis.keyColumn) { + if (value in instanceThis.data && instanceThis.data[value]?.[rowSymbol] !== row) { + // Convert previously valid value to unresolved + const previousKey = instanceThis.getRowName(row); + if (previousKey) { + unresolved[row] = instanceThis.data[previousKey]; + delete instanceThis.data[previousKey]; + } + + // Throw error + instanceThis.#handleValidationResult( + [{ message: `${header(k)} already exists`, type: "error" }], + row, + this.col + ); + callback(false); + return; + } + } + + if (!(await runThisValidator(value, row, this.col))) { + callback(false); + return; + } + + const isUndefined = value == ""; + + if (isUndefined && required) { + instanceThis.#handleValidationResult( + [{ message: `${header(k)} is a required property.`, type: "error" }], + row, + this.col + ); + callback(false); + return; + } + }; + + if (info.validator) { + const og = info.validator; + info.validator = async function (value, callback) { + let wasCalled = false; + + const newCallback = (valid) => { + wasCalled = true; + callback(valid); + }; + + await validator.call(this, value, newCallback); + if (!wasCalled) og(value, callback); + }; + } else + info.validator = async function (value, callback) { + let wasCalled = false; + + const newCallback = (valid) => { + wasCalled = true; + callback(valid); + }; + + await validator.call(this, value, newCallback); + if (!wasCalled) callback(true); // Default to true if not called earlier + }; + + return info; + }); + + const onAfterGetHeader = (index, TH) => { + const col = colHeaders[index]; + const desc = entries[col].description; + + const rel = TH.querySelector(".relative"); + + const required = isRequired(col, this.#itemSchema); + if (required) + rel.setAttribute( + "data-required", + this.validateEmptyCells + ? Array.isArray(this.validateEmptyCells) + ? this.validateEmptyCells.includes(col) + : true + : undefined + ); + + if (desc) { + let span = rel.querySelector(".info"); + + if (!span) { + span = document.createElement("span"); + span.classList.add("info"); + span.innerText = "ℹ️"; + rel.append(span); + } + + if (span._tippy) span._tippy.destroy(); + tippy(span, { content: `${desc}`, allowHTML: true }); + } + }; + + const data = this.#getData(); + + let nRows = Object.keys(data).length; + + let contextMenu = ["row_below", "remove_row"]; + if (this.#itemSchema.additionalProperties) contextMenu.push("col_right", "remove_col"); + + contextMenu = contextMenu.filter((k) => !(this.contextMenu.ignore ?? []).includes(k)); + + const descriptionEl = this.querySelector("#description"); + const operations = { + rows: [], + columns: [], + }; + + if (contextMenu.includes("row_below")) operations.rows.push("add"); + if (contextMenu.includes("remove_row")) operations.rows.push("remove"); + if (contextMenu.includes("col_right")) operations.columns.push("add"); + if (contextMenu.includes("remove_col")) operations.columns.push("remove"); + const operationSet = new Set(Object.values(operations).flat()); + const operationOn = Object.keys(operations).filter((k) => operations[k].length); + + if (operationSet.size) { + const desc = `Right click to ${Array.from(operationSet).join("/")} ${operationOn.join("and")}.`; + descriptionEl.innerText = desc; + } + + if (this.table) this.table.destroy(); + + const table = new Handsontable(div, { + data: this.#getRenderedData(data), + // rowHeaders: rowHeaders.map(v => `sub-${v}`), + colHeaders: displayHeaders, + columns, + height: "auto", // Keeping this will ensure there is no infinite loop that adds length to the table + stretchH: "all", + manualColumnResize: true, + preventOverflow: "horizontal", + width: "100%", + contextMenu, + licenseKey: "non-commercial-and-evaluation", // for non-commercial use only + afterGetColHeader: onAfterGetHeader, + afterGetRowHeader: onAfterGetHeader, + }); + + this.table = table; + + // Move context menu + const menu = div.ownerDocument.querySelector(".htContextMenu"); + if (menu) this.#root.appendChild(menu); // Move to style root + + let validated = 0; + + const initialCellsToUpdate = data.reduce((acc, arr) => acc + arr.length, 0); + + table.addHook("afterValidate", (isValid, value, row, prop) => { + const header = typeof prop === "number" ? colHeaders[prop] : prop; + const info = this.#info[header]; + + // Update other columns in the group + + const skipUpdate = info.stopGroupUpdates[row]; + + // Decrement counters + if (skipUpdate) info.stopGroupUpdates[row]--; + + if (!skipUpdate) { + const isUserUpdate = initialCellsToUpdate <= validated; + + let rowName = this.getRowName(row); + + if (isUserUpdate) { + // NOTE: We would like to allow invalid values to mutate the results + // if (isValid) { + const isResolved = rowName in this.data; + let target = this.data; + + if (!isResolved) { + if (!this.keyColumn) + this.data[rowName] = {}; // Add new row to array + else { + rowName = row; + if (!unresolved[rowName]) unresolved[rowName] = {}; // Ensure row exists + target = unresolved; + } + } + + value = this.#getValue(value, entries[header]); + + // Transfer data to object (if valid) + if (header === this.keyColumn) { + if (isValid && value && value !== rowName) { + const old = target[rowName] ?? {}; + this.data[value] = old; + delete target[rowName]; + delete unresolved[row]; + Object.defineProperty(this.data[value], rowSymbol, { value: row, configurable: true }); // Setting row tracker + this.revalidate([{ row, prop }]); + } + } + + // Update data on passed object + else { + const globalValue = this.globals[header]; + + if (value == undefined || value === "") { + if (globalValue) { + value = target[rowName][header] = globalValue; + table.setDataAtCell(row, prop, value); + this.onOverride(header, value, rowName); + } + target[rowName][header] = undefined; + } else { + // Correct for expected arrays (copy-paste issue) + if (entries[header]?.type === "array") { + if (value && !Array.isArray(value)) value = value.split(",").map((v) => v.trim()); + } + + target[rowName][header] = value === globalValue ? undefined : value; + } + } + + this.onUpdate(rowName, header, value); + } + + validated++; + + // Check associated groups for validity + for (let group of this.groups) { + const table = this.table; + if (group.includes(header)) { + const otherGroup = group.filter((col) => col !== header); + + otherGroup.forEach((col) => { + const j = colHeaders.indexOf(col); + const value = table.getDataAtCell(row, j); + const depInfo = this.#info[col]; + const otherGroups = group.filter((c) => c !== col); + depInfo.stopGroupUpdates[row] = otherGroups.length; // Expecting this many updates from other members of the group + table.setDataAtCell(row, j, value); + }); + + return; + } + } + } + + if (typeof isValid === "function") isValid(); + }); + + // If only one row, do not allow deletion + table.addHook("beforeRemoveRow", (index, amount) => { + if (nRows - amount < 1) { + this.onThrow("You must have at least one row", "error"); + return false; + } + }); + + table.addHook("afterRemoveRow", (_, amount, physicalRows) => { + nRows -= amount; + physicalRows.map(async (row) => { + const rowName = this.getRowName(row); + // const cols = this.data[rowHeaders[row]] + // Object.keys(cols).map(k => cols[k] = '') + // if (this.validateOnChange) Object.keys(cols).map(k => this.validateOnChange([ k ], { ...cols }, cols[k])) // Validate with empty values before removing + delete this.data[rowName]; + delete unresolved[row]; + this.onUpdate(rowName, null, undefined); // NOTE: Global metadata PR might simply set all data values to undefined + }); + }); + + table.addHook("afterCreateRow", (index, amount) => { + nRows += amount; + const physicalRows = Array.from({ length: amount }, (_, i) => index + i); + physicalRows.forEach((row) => this.#setRow(row, this.#getRowData(row))); + }); + + // Trigger validation on all cells + data.forEach((row, i) => this.#setRow(i, row)); + } + + #getRenderedValue = (value, colInfo) => { + // Handle enums + if (colInfo.enumLabels) return colInfo.enumLabels[value] ?? value; + return value; + }; + + #getRenderedData = (data) => { + return Object.values(data).map((row) => + row.map((value, j) => this.#getRenderedValue(value, this.#itemSchema.properties[this.colHeaders[j]])) + ); + }; + + #getValue = (value, colInfo) => { + // Handle enums + if (colInfo.enumLabels) + return Object.keys(colInfo.enumLabels).find((k) => colInfo.enumLabels[k] === value) ?? value; + + return value; + }; + + #setRow(row, data) { + data.forEach((value, j) => { + value = this.#getRenderedValue(value, this.#itemSchema.properties[this.colHeaders[j]]); + this.table.setDataAtCell(row, j, value); + }); + } + + #handleValidationResult = (result, row, prop) => { + const warnings = Array.isArray(result) ? result.filter((info) => info.type === "warning") : []; + const errors = Array.isArray(result) ? result?.filter((info) => info.type === "error") : []; + + // Display errors as tooltip + const cell = this.table.getCell(row, prop); // NOTE: Does not resolve unless the cell is rendered... + + if (cell) { + let message = ""; + let theme = ""; + if (warnings.length) { + (theme = "warning"), (message = warnings.map((error) => error.message).join("\n")); + } else cell.removeAttribute("warning"); + + if (errors.length) { + (theme = "error"), (message = errors.map((error) => error.message).join("\n")); // Class switching handled automatically + } else cell.removeAttribute("error"); + + if (theme) cell.setAttribute(theme, ""); + + if (cell._tippy) { + cell._tippy.destroy(); + cell.removeAttribute("data-message"); + } + + if (message) { + tippy(cell, { content: message, allowHTML: true }); + cell.setAttribute("data-message", message); + } + } + + this.#checkStatus(); // Check status after every validation update + + return result === true || result == undefined || errors.length === 0; + }; + + #root; + + // Clean up after the injected stylesheet, which may affect the rendering of other elements (e.g. the main sidebar list items) + disconnectedCallback() { + super.disconnectedCallback(); + this.stylesheet[styleSymbol]--; + if (this.stylesheet[styleSymbol] === 0) this.stylesheet.remove(); + } + + connectedCallback() { + super.connectedCallback(); + const root = this.getRootNode().body ?? this.getRootNode(); + this.#root = root; + const stylesheets = Array.from(root.querySelectorAll("style")); + const exists = (this.stylesheet = stylesheets.find((stylesheet) => styleSymbol in stylesheet)); + + if (exists) exists[styleSymbol]++; + else { + const stylesheet = (this.stylesheet = document.createElement("style")); + stylesheet.innerHTML = styles; + stylesheet[styleSymbol] = true; //1; + root.append(stylesheet); + } + } + + render() { + return html` +
      +

      + +

      + `; + } +} + +customElements.get("nwb-table") || customElements.define("nwb-table", Table); diff --git a/src/electron/renderer/src/stories/Table.stories.js b/src/electron/renderer/src/stories/Table.stories.js index 14573a5ab..14bd8ce37 100644 --- a/src/electron/renderer/src/stories/Table.stories.js +++ b/src/electron/renderer/src/stories/Table.stories.js @@ -1,68 +1,68 @@ -import { Table } from "./Table.js"; - -import getSubjectSchema from "../../../../schemas/subject.schema"; -import { SimpleTable } from "./SimpleTable.js"; -import { BasicTable } from "./BasicTable.js"; - -export default { - title: "Components/Table", - parameters: { - chromatic: { disableSnapshot: true }, - }, -}; - -const Template = (args) => new Table(args); - -const subjects = 100; -const subjectIds = Array.from({ length: subjects }, (_, i) => i); - -const data = subjectIds.reduce((acc, key) => { - acc[key] = { - weight: (60 * Math.random()).toFixed(2), - sessions: [1], - }; - return acc; -}, {}); - -const BasicTableTemplate = (args) => new BasicTable(args); - -const subjectSchema = getSubjectSchema(); - -subjectSchema.additionalProperties = true; - -const subjectTableSchema = { - type: "array", - items: subjectSchema, -}; - -export const Basic = BasicTableTemplate.bind({}); -Basic.args = { - name: "basic_table_test", - schema: subjectTableSchema, - data, - keyColumn: "subject_id", - validateOnChange: (key, parent, value) => !!value, // Always validate as true -}; - -export const Default = Template.bind({}); -Default.args = { - schema: subjectTableSchema, - data, - keyColumn: "subject_id", - validateOnChange: () => true, // Always validate as true -}; - -const SimpleTemplate = (args) => new SimpleTable(args); - -export const Simple = SimpleTemplate.bind({}); -Simple.args = { - schema: subjectTableSchema, - data, - keyColumn: "subject_id", - validateOnChange: (key, parent, value) => { - return !!value; - }, // Always validate as true - onLoaded: () => { - console.log("Loaded!"); - }, -}; +import { Table } from "./Table.js"; + +import getSubjectSchema from "../../../../schemas/subject.schema"; +import { SimpleTable } from "./SimpleTable.js"; +import { BasicTable } from "./BasicTable.js"; + +export default { + title: "Components/Table", + parameters: { + chromatic: { disableSnapshot: true }, + }, +}; + +const Template = (args) => new Table(args); + +const subjects = 100; +const subjectIds = Array.from({ length: subjects }, (_, i) => i); + +const data = subjectIds.reduce((acc, key) => { + acc[key] = { + weight: (60 * Math.random()).toFixed(2), + sessions: [1], + }; + return acc; +}, {}); + +const BasicTableTemplate = (args) => new BasicTable(args); + +const subjectSchema = getSubjectSchema(); + +subjectSchema.additionalProperties = true; + +const subjectTableSchema = { + type: "array", + items: subjectSchema, +}; + +export const Basic = BasicTableTemplate.bind({}); +Basic.args = { + name: "basic_table_test", + schema: subjectTableSchema, + data, + keyColumn: "subject_id", + validateOnChange: (key, parent, value) => !!value, // Always validate as true +}; + +export const Default = Template.bind({}); +Default.args = { + schema: subjectTableSchema, + data, + keyColumn: "subject_id", + validateOnChange: () => true, // Always validate as true +}; + +const SimpleTemplate = (args) => new SimpleTable(args); + +export const Simple = SimpleTemplate.bind({}); +Simple.args = { + schema: subjectTableSchema, + data, + keyColumn: "subject_id", + validateOnChange: (key, parent, value) => { + return !!value; + }, // Always validate as true + onLoaded: () => { + console.log("Loaded!"); + }, +}; diff --git a/src/electron/renderer/src/stories/globals.js b/src/electron/renderer/src/stories/globals.js index 93d2e1f8f..3f51572b9 100644 --- a/src/electron/renderer/src/stories/globals.js +++ b/src/electron/renderer/src/stories/globals.js @@ -1,12 +1,12 @@ -import { css } from "lit"; - -export const errorHue = 0; -export const warningHue = 57; -export const successHue = 110; -export const issueHue = 30; - -export const errorSymbol = css`❌`; -export const warningSymbol = css`⚠️`; -export const successSymbol = css`✅`; - -export const emojiFontFamily = `"Twemoji Mozilla", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", "EmojiOne Color", "Android Emoji", sans-serif;`; +import { css } from "lit"; + +export const errorHue = 0; +export const warningHue = 57; +export const successHue = 110; +export const issueHue = 30; + +export const errorSymbol = css`❌`; +export const warningSymbol = css`⚠️`; +export const successSymbol = css`✅`; + +export const emojiFontFamily = `"Twemoji Mozilla", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", "EmojiOne Color", "Android Emoji", sans-serif;`; diff --git a/src/electron/renderer/src/stories/hot.js b/src/electron/renderer/src/stories/hot.js index b17534cf0..ecca233c7 100644 --- a/src/electron/renderer/src/stories/hot.js +++ b/src/electron/renderer/src/stories/hot.js @@ -1,110 +1,110 @@ -import Handsontable from "handsontable"; -import css from "handsontable/dist/handsontable.full.min.css?inline"; - -export { Handsontable, css }; - -import { DateTimeSelector } from "./DateTimeSelector"; - -function arrayRenderer(instance, td, row, col, prop, value, cellProperties) { - if (!value) value = []; - const ul = document.createElement("ul"); - if (typeof value === "string") value = value.split(","); - else if (!Array.isArray(value)) value = [value]; - value.forEach((v) => { - const li = document.createElement("li"); - li.innerText = v; - ul.appendChild(li); - }); - - td.innerText = ""; - td.appendChild(ul); - - return td; -} - -class DateTimeEditor extends Handsontable.editors.BaseEditor { - constructor(hotInstance) { - super(hotInstance); - } - - init() { - // Create detached node, add CSS class and make sure its not visible - this.DATETIME = new DateTimeSelector(); - this.DATETIME.type = "datetime-local"; - this.DATETIME.style.position = "absolute"; - - this.DATETIME.style.display = "none"; - this.DATETIME.input.style.width = "0px"; // Don't actually show the input, just the picker - - // Attach node to DOM, by appending it to the container holding the table - this.hot.rootElement.appendChild(this.DATETIME); - } - - getValue() { - return this.DATETIME.value; - } - - setValue(newValue) { - this.DATETIME.value = newValue; - } - - open() { - const { top, start, width, height } = this.getEditedCellRect(); - const style = this.DATETIME.style; - this._opened = true; - - style.height = `${height}px`; - style.minWidth = `${width}px`; - style.top = `${top}px`; - style[this.hot.isRtl() ? "right" : "left"] = `${start}px`; - style.margin = "0px"; - style.display = ""; - - this.DATETIME.input.min = this.cellProperties.min; - this.DATETIME.input.max = this.cellProperties.max; - } - - focus() { - this.DATETIME.click(); - } - - close() { - this._opened = false; - this.DATETIME.style.display = "none"; - // setTimeout(() => this.correctCopyPasteElement(), 40) - } -} - -class ArrayEditor extends Handsontable.editors.TextEditor { - constructor(hotInstance) { - super(hotInstance); - } - - getValue() { - const value = super.getValue(); - - if (!value) return []; - else { - const split = value - .split(",") - .map((str) => str.trim()) - .filter((str) => str); - - return this.cellProperties.uniqueItems ? Array.from(new Set(split)) : split; // Only unique values - } - } - - setValue(newValue) { - if (Array.isArray(newValue)) newValue = newValue.join(","); - super.setValue(newValue); - } -} - -Handsontable.cellTypes.registerCellType("array", { - editor: ArrayEditor, - renderer: arrayRenderer, -}); - -Handsontable.cellTypes.registerCellType("date-time", { - editor: DateTimeEditor, -}); +import Handsontable from "handsontable"; +import css from "handsontable/dist/handsontable.full.min.css?inline"; + +export { Handsontable, css }; + +import { DateTimeSelector } from "./DateTimeSelector"; + +function arrayRenderer(instance, td, row, col, prop, value, cellProperties) { + if (!value) value = []; + const ul = document.createElement("ul"); + if (typeof value === "string") value = value.split(","); + else if (!Array.isArray(value)) value = [value]; + value.forEach((v) => { + const li = document.createElement("li"); + li.innerText = v; + ul.appendChild(li); + }); + + td.innerText = ""; + td.appendChild(ul); + + return td; +} + +class DateTimeEditor extends Handsontable.editors.BaseEditor { + constructor(hotInstance) { + super(hotInstance); + } + + init() { + // Create detached node, add CSS class and make sure its not visible + this.DATETIME = new DateTimeSelector(); + this.DATETIME.type = "datetime-local"; + this.DATETIME.style.position = "absolute"; + + this.DATETIME.style.display = "none"; + this.DATETIME.input.style.width = "0px"; // Don't actually show the input, just the picker + + // Attach node to DOM, by appending it to the container holding the table + this.hot.rootElement.appendChild(this.DATETIME); + } + + getValue() { + return this.DATETIME.value; + } + + setValue(newValue) { + this.DATETIME.value = newValue; + } + + open() { + const { top, start, width, height } = this.getEditedCellRect(); + const style = this.DATETIME.style; + this._opened = true; + + style.height = `${height}px`; + style.minWidth = `${width}px`; + style.top = `${top}px`; + style[this.hot.isRtl() ? "right" : "left"] = `${start}px`; + style.margin = "0px"; + style.display = ""; + + this.DATETIME.input.min = this.cellProperties.min; + this.DATETIME.input.max = this.cellProperties.max; + } + + focus() { + this.DATETIME.click(); + } + + close() { + this._opened = false; + this.DATETIME.style.display = "none"; + // setTimeout(() => this.correctCopyPasteElement(), 40) + } +} + +class ArrayEditor extends Handsontable.editors.TextEditor { + constructor(hotInstance) { + super(hotInstance); + } + + getValue() { + const value = super.getValue(); + + if (!value) return []; + else { + const split = value + .split(",") + .map((str) => str.trim()) + .filter((str) => str); + + return this.cellProperties.uniqueItems ? Array.from(new Set(split)) : split; // Only unique values + } + } + + setValue(newValue) { + if (Array.isArray(newValue)) newValue = newValue.join(","); + super.setValue(newValue); + } +} + +Handsontable.cellTypes.registerCellType("array", { + editor: ArrayEditor, + renderer: arrayRenderer, +}); + +Handsontable.cellTypes.registerCellType("date-time", { + editor: DateTimeEditor, +}); diff --git a/src/electron/renderer/src/stories/multiselect/MultiSelectForm.js b/src/electron/renderer/src/stories/multiselect/MultiSelectForm.js index 472919ff2..91b313c44 100644 --- a/src/electron/renderer/src/stories/multiselect/MultiSelectForm.js +++ b/src/electron/renderer/src/stories/multiselect/MultiSelectForm.js @@ -1,158 +1,158 @@ -import { LitElement, css, html } from "lit"; - -// Adapted from https://web.dev/building-a-multi-select-component/ - -const componentCSS = ` - - * { - box-sizing: border-box; - } - - :host { - display: inline-block; - } - - :host > div { - border: 1px solid #ccc; - border-radius: 4px; - background: white; - padding: 25px; - display: inline-block; - } - - form { - display: grid; - gap: 2ch; - } - - @media (pointer: coarse) { - select[multiple] { - display: block; - } - } - - fieldset { - padding: 2ch; - border: 1px solid gray; - - & > div + div { - margin-block-start: 2ch; - } - } - - legend { - font-weight: bold; - } - - fieldset > div { - display: flex; - gap: 2ch; - align-items: baseline; - } -`; - -export class MultiSelectForm extends LitElement { - static get styles() { - return css([componentCSS]); - } - - static get properties() { - return { - options: { type: Object, reflect: true }, - selected: { type: Object, reflect: false }, - }; - } - - constructor(props = {}) { - super(); - this.options = props.options ?? {}; - this.selected = props.selected ?? {}; - } - - attributeChangedCallback(changedProperties, oldValue, newValue) { - super.attributeChangedCallback(changedProperties, oldValue, newValue); - if (changedProperties === "options") this.requestUpdate(); - } - - // NOTE: We can move these into their own components in the future - async updated() { - const dataFormatsForm = (this.shadowRoot ?? this).querySelector("#neuroconv-data-formats-form"); - dataFormatsForm.innerHTML = ""; // Clear the form - - const formats = this.options; - - if (formats.message) { - throw new Error(formats.message); - } - - // Currently supports two levels of fields - let modalities = {}; - for (let className in formats) { - const format = formats[className]; - const name = format.name ?? className; - - let modality = modalities[format.modality]; - if (!modality) { - const fieldset = document.createElement("fieldset"); - const legend = document.createElement("legend"); - legend.textContent = format.modality; - fieldset.appendChild(legend); - dataFormatsForm.appendChild(fieldset); - - modality = modalities[format.modality] = { - form: fieldset, - techniques: {}, - }; - } - - // Place in technique or modality div - const technique = format.technique; - let targetInfo = modality; - if (technique) { - targetInfo = modality.techniques[technique]; - if (!targetInfo) { - const fieldset = document.createElement("fieldset"); - const legend = document.createElement("legend"); - legend.textContent = technique; - fieldset.appendChild(legend); - modality.form.appendChild(fieldset); - - targetInfo = modality.techniques[technique] = { - form: fieldset, - }; - } - } - - const form = targetInfo.form; - const div = document.createElement("div"); - const input = document.createElement("input"); - input.type = "checkbox"; - input.value = name; - input.name = name; - div.appendChild(input); - const label = document.createElement("label"); - - if (this.selected[name]) input.checked = true; - - input.onchange = (ev) => { - this.selected[name] = input.checked; - }; - label.for = name; - label.textContent = name; - div.appendChild(label); - form.appendChild(div); - } - } - - render() { - return html` -
      -
      - -
      -
      - `; - } -} - -customElements.get("nwb-multiselect-form") || customElements.define("nwb-multiselect-form", MultiSelectForm); +import { LitElement, css, html } from "lit"; + +// Adapted from https://web.dev/building-a-multi-select-component/ + +const componentCSS = ` + + * { + box-sizing: border-box; + } + + :host { + display: inline-block; + } + + :host > div { + border: 1px solid #ccc; + border-radius: 4px; + background: white; + padding: 25px; + display: inline-block; + } + + form { + display: grid; + gap: 2ch; + } + + @media (pointer: coarse) { + select[multiple] { + display: block; + } + } + + fieldset { + padding: 2ch; + border: 1px solid gray; + + & > div + div { + margin-block-start: 2ch; + } + } + + legend { + font-weight: bold; + } + + fieldset > div { + display: flex; + gap: 2ch; + align-items: baseline; + } +`; + +export class MultiSelectForm extends LitElement { + static get styles() { + return css([componentCSS]); + } + + static get properties() { + return { + options: { type: Object, reflect: true }, + selected: { type: Object, reflect: false }, + }; + } + + constructor(props = {}) { + super(); + this.options = props.options ?? {}; + this.selected = props.selected ?? {}; + } + + attributeChangedCallback(changedProperties, oldValue, newValue) { + super.attributeChangedCallback(changedProperties, oldValue, newValue); + if (changedProperties === "options") this.requestUpdate(); + } + + // NOTE: We can move these into their own components in the future + async updated() { + const dataFormatsForm = (this.shadowRoot ?? this).querySelector("#neuroconv-data-formats-form"); + dataFormatsForm.innerHTML = ""; // Clear the form + + const formats = this.options; + + if (formats.message) { + throw new Error(formats.message); + } + + // Currently supports two levels of fields + let modalities = {}; + for (let className in formats) { + const format = formats[className]; + const name = format.name ?? className; + + let modality = modalities[format.modality]; + if (!modality) { + const fieldset = document.createElement("fieldset"); + const legend = document.createElement("legend"); + legend.textContent = format.modality; + fieldset.appendChild(legend); + dataFormatsForm.appendChild(fieldset); + + modality = modalities[format.modality] = { + form: fieldset, + techniques: {}, + }; + } + + // Place in technique or modality div + const technique = format.technique; + let targetInfo = modality; + if (technique) { + targetInfo = modality.techniques[technique]; + if (!targetInfo) { + const fieldset = document.createElement("fieldset"); + const legend = document.createElement("legend"); + legend.textContent = technique; + fieldset.appendChild(legend); + modality.form.appendChild(fieldset); + + targetInfo = modality.techniques[technique] = { + form: fieldset, + }; + } + } + + const form = targetInfo.form; + const div = document.createElement("div"); + const input = document.createElement("input"); + input.type = "checkbox"; + input.value = name; + input.name = name; + div.appendChild(input); + const label = document.createElement("label"); + + if (this.selected[name]) input.checked = true; + + input.onchange = (ev) => { + this.selected[name] = input.checked; + }; + label.for = name; + label.textContent = name; + div.appendChild(label); + form.appendChild(div); + } + } + + render() { + return html` +
      +
      + +
      +
      + `; + } +} + +customElements.get("nwb-multiselect-form") || customElements.define("nwb-multiselect-form", MultiSelectForm); diff --git a/src/electron/renderer/src/stories/multiselect/Multiselect.stories.js b/src/electron/renderer/src/stories/multiselect/Multiselect.stories.js index 46b0ab35b..8f080f9c0 100644 --- a/src/electron/renderer/src/stories/multiselect/Multiselect.stories.js +++ b/src/electron/renderer/src/stories/multiselect/Multiselect.stories.js @@ -1,34 +1,34 @@ -import { MultiSelectForm } from "./MultiSelectForm.js"; - -export default { - title: "Components/Multiselect Form", - parameters: { - chromatic: { disableSnapshot: false }, - }, -}; - -const Template = (args) => new MultiSelectForm(args); - -export const Default = Template.bind({}); -Default.args = { - header: "Test Header", - options: { - option1: { - name: "Option 1", - modality: "Modality 1", - technique: "Technique 1", - }, - - option2: { - name: "Option 2", - modality: "Modality 1", - technique: "Technique 1", - }, - - otheroption1: { - name: "Other Option 1", - modality: "Modality 2", - technique: "Technique 1", - }, - }, -}; +import { MultiSelectForm } from "./MultiSelectForm.js"; + +export default { + title: "Components/Multiselect Form", + parameters: { + chromatic: { disableSnapshot: false }, + }, +}; + +const Template = (args) => new MultiSelectForm(args); + +export const Default = Template.bind({}); +Default.args = { + header: "Test Header", + options: { + option1: { + name: "Option 1", + modality: "Modality 1", + technique: "Technique 1", + }, + + option2: { + name: "Option 2", + modality: "Modality 1", + technique: "Technique 1", + }, + + otheroption1: { + name: "Other Option 1", + modality: "Modality 2", + technique: "Technique 1", + }, + }, +}; diff --git a/src/electron/renderer/src/stories/pages/FormPage.js b/src/electron/renderer/src/stories/pages/FormPage.js index 7791c46ec..dcfe6ec0b 100644 --- a/src/electron/renderer/src/stories/pages/FormPage.js +++ b/src/electron/renderer/src/stories/pages/FormPage.js @@ -1,92 +1,92 @@ -import { html } from "lit"; -import { JSONSchemaForm } from "../JSONSchemaForm.js"; -import { Page } from "./Page.js"; -import { validateOnChange } from "../../validation/index.js"; -import { onThrow } from "../../errors"; -import { merge } from "./utils"; - -export function schemaToPages(schema, globalStatePath, options, transformationCallback = (info) => info) { - return Object.entries(schema.properties) - .filter(([_, value]) => value.properties) - .map(([key, value]) => { - const optionsCopy = { ...options }; - - if (optionsCopy.required && optionsCopy.required[key]) - optionsCopy.required = { - [key]: optionsCopy.required[key], - }; - else delete optionsCopy.required; // Only bring requirements from the current page - - const page = new GuidedFormPage( - transformationCallback({ - label: key, - key, - section: this.info.section, - globalStatePath, - formOptions: { - ...optionsCopy, - schema: { - properties: { [key]: value }, - required: [key], - }, - }, - }) - ); - - if (optionsCopy.ignore && optionsCopy.ignore[key]) return null; - return page; - }) - .filter((page) => page); -} - -export class GuidedFormPage extends Page { - constructor(...args) { - super(...args); - if (!this.info.globalStatePath) this.info.globalStatePath = []; - if (!this.info.formOptions) this.info.formOptions = {}; - if (!this.info.formOptions.schema) this.info.formOptions.schema = {}; - if (!this.info.formOptions.results) this.info.formOptions.results = {}; - } - - beforeSave = () => { - // Merge results before saving - if (this.info.globalStatePath) { - const parent = this.info.globalStatePath.reduce( - (acc, key) => acc[key] ?? (acc[key] = {}), - this.info.globalState - ); - parent[this.info.key] = this.localState[this.info.key]; - } - }; - - footer = { - onNext: async () => { - await this.save(); // Save in case validation fails - await this.form.validate(); // Validate the results of the form - return this.to(1); - }, - }; - - render() { - const key = this.info.key; - const temp = this.info.globalStatePath - ? this.info.globalStatePath.reduce((acc, key) => acc[key] ?? (acc[key] = {}), this.info.globalState) - : {}; - - const results = (this.localState = structuredClone({ [key]: temp[key] ?? (temp[key] = {}) })); // Keep a local copy of the results - - const form = (this.form = new JSONSchemaForm({ - ...this.info.formOptions, - results, - onUpdate: () => (this.unsavedUpdates = true), - validateOnChange, - onThrow, - })); - - form.style.width = "100%"; - - return html`
      ${form}
      `; - } -} - -customElements.get("nwbguide-guided-form-page") || customElements.define("nwbguide-guided-form-page", GuidedFormPage); +import { html } from "lit"; +import { JSONSchemaForm } from "../JSONSchemaForm.js"; +import { Page } from "./Page.js"; +import { validateOnChange } from "../../validation/index.js"; +import { onThrow } from "../../errors"; +import { merge } from "./utils"; + +export function schemaToPages(schema, globalStatePath, options, transformationCallback = (info) => info) { + return Object.entries(schema.properties) + .filter(([_, value]) => value.properties) + .map(([key, value]) => { + const optionsCopy = { ...options }; + + if (optionsCopy.required && optionsCopy.required[key]) + optionsCopy.required = { + [key]: optionsCopy.required[key], + }; + else delete optionsCopy.required; // Only bring requirements from the current page + + const page = new GuidedFormPage( + transformationCallback({ + label: key, + key, + section: this.info.section, + globalStatePath, + formOptions: { + ...optionsCopy, + schema: { + properties: { [key]: value }, + required: [key], + }, + }, + }) + ); + + if (optionsCopy.ignore && optionsCopy.ignore[key]) return null; + return page; + }) + .filter((page) => page); +} + +export class GuidedFormPage extends Page { + constructor(...args) { + super(...args); + if (!this.info.globalStatePath) this.info.globalStatePath = []; + if (!this.info.formOptions) this.info.formOptions = {}; + if (!this.info.formOptions.schema) this.info.formOptions.schema = {}; + if (!this.info.formOptions.results) this.info.formOptions.results = {}; + } + + beforeSave = () => { + // Merge results before saving + if (this.info.globalStatePath) { + const parent = this.info.globalStatePath.reduce( + (acc, key) => acc[key] ?? (acc[key] = {}), + this.info.globalState + ); + parent[this.info.key] = this.localState[this.info.key]; + } + }; + + footer = { + onNext: async () => { + await this.save(); // Save in case validation fails + await this.form.validate(); // Validate the results of the form + return this.to(1); + }, + }; + + render() { + const key = this.info.key; + const temp = this.info.globalStatePath + ? this.info.globalStatePath.reduce((acc, key) => acc[key] ?? (acc[key] = {}), this.info.globalState) + : {}; + + const results = (this.localState = structuredClone({ [key]: temp[key] ?? (temp[key] = {}) })); // Keep a local copy of the results + + const form = (this.form = new JSONSchemaForm({ + ...this.info.formOptions, + results, + onUpdate: () => (this.unsavedUpdates = true), + validateOnChange, + onThrow, + })); + + form.style.width = "100%"; + + return html`
      ${form}
      `; + } +} + +customElements.get("nwbguide-guided-form-page") || customElements.define("nwbguide-guided-form-page", GuidedFormPage); diff --git a/src/electron/renderer/src/stories/pages/Page.js b/src/electron/renderer/src/stories/pages/Page.js index a4613c31c..18ffd028f 100644 --- a/src/electron/renderer/src/stories/pages/Page.js +++ b/src/electron/renderer/src/stories/pages/Page.js @@ -1,276 +1,276 @@ -import { LitElement, html } from "lit"; -import { runConversion } from "./guided-mode/options/utils.js"; -import { get, save } from "../../progress/index.js"; -import { dismissNotification, isStorybook, notify } from "../../dependencies/globals"; -import { randomizeElements, mapSessions, merge } from "./utils"; - -import { resolveMetadata } from "./guided-mode/data/utils.js"; -import Swal from "sweetalert2"; -import { createProgressPopup } from "../utils/progress.js"; - -export class Page extends LitElement { - // static get styles() { - // return useGlobalStyles( - // componentCSS, - // (sheet) => sheet.href && sheet.href.includes("bootstrap"), - // this.shadowRoot - // ); - // } - - info = { globalState: {} }; - - constructor(info = {}) { - super(); - Object.assign(this.info, info); - } - - createRenderRoot() { - return this; - } - - query = (input) => { - return (this.shadowRoot ?? this).querySelector(input); - }; - - onSet = () => {}; // User-defined function - - set = (info, rerender = true) => { - if (info) { - Object.assign(this.info, info); - this.onSet(); - if (rerender) this.requestUpdate(); - } - }; - - #notifications = []; - - dismiss = (notification) => { - if (notification) dismissNotification(notification); - else { - this.#notifications.forEach((notification) => dismissNotification(notification)); - this.#notifications = []; - } - }; - - notify = (...args) => { - const ref = notify(...args); - this.#notifications.push(ref); - return ref; - }; - - to = async (transition) => { - // Otherwise note unsaved updates if present - if ( - this.unsavedUpdates || - ("states" in this.info && - transition === 1 && // Only ensure save for standard forward progression - !this.info.states.saved) - ) { - if (transition === 1) - await this.save(); // Save before a single forward transition - else { - await Swal.fire({ - title: "You have unsaved data on this page.", - text: "Would you like to save your changes?", - icon: "warning", - showCancelButton: true, - confirmButtonColor: "#3085d6", - confirmButtonText: "Save and Continue", - cancelButtonText: "Ignore Changes", - }).then(async (result) => { - if (result && result.isConfirmed) await this.save(); - }); - } - } - - return await this.onTransition(transition); - }; - - onTransition = () => {}; // User-defined function - updatePages = () => {}; // User-defined function - beforeSave = () => {}; // User-defined function - - save = async (overrides, runBeforeSave = true) => { - if (runBeforeSave) await this.beforeSave(); - save(this, overrides); - if ("states" in this.info) this.info.states.saved = true; - this.unsavedUpdates = false; - }; - - load = (datasetNameToResume = new URLSearchParams(window.location.search).get("project")) => - (this.info.globalState = get(datasetNameToResume)); - - addSession({ subject, session, info }) { - if (!this.info.globalState.results[subject]) this.info.globalState.results[subject] = {}; - if (this.info.globalState.results[subject][session]) - throw new Error(`Session ${subject}/${session} already exists.`); - info = this.info.globalState.results[subject][session] = info ?? {}; - if (!info.metadata) info.metadata = {}; - if (!info.source_data) info.source_data = {}; - return info; - } - - removeSession({ subject, session }) { - delete this.info.globalState.results[subject][session]; - } - - mapSessions = (callback, data = this.info.globalState.results) => mapSessions(callback, data); - - async convert({ preview } = {}) { - const key = preview ? "preview" : "conversion"; - - delete this.info.globalState[key]; // Clear the preview results - - if (preview) { - const stubs = await this.runConversions({ stub_test: true }, undefined, { - title: "Creating conversion preview for all sessions...", - }); - this.info.globalState[key] = { stubs }; - } else { - this.info.globalState[key] = await this.runConversions({}, true, { title: "Running all conversions" }); - } - - this.unsavedUpdates = true; - - // Indicate conversion has run successfully - const { desyncedData } = this.info.globalState; - if (!desyncedData) this.info.globalState.desyncedData = {}; - - if (desyncedData) { - desyncedData[key] = false; - await this.save({}, false); - } - } - - async runConversions(conversionOptions = {}, toRun, options = {}) { - let original = toRun; - if (!Array.isArray(toRun)) toRun = this.mapSessions(); - - // Filter the sessions to run - if (typeof original === "number") - toRun = randomizeElements(toRun, original); // Grab a random set of sessions - else if (typeof original === "string") toRun = toRun.filter(({ subject }) => subject === original); - else if (typeof original === "function") toRun = toRun.filter(original); - - const results = {}; - - const isMultiple = toRun.length > 1; - - const swalOpts = await createProgressPopup({ title: `Running conversion`, ...options }); - const { close: closeProgressPopup, elements } = swalOpts; - - elements.container.insertAdjacentHTML( - "beforeend", - `Note: This may take a while to complete...
      ` - ); - - let completed = 0; - elements.progress.format = { n: completed, total: toRun.length }; - - for (let info of toRun) { - const { subject, session, globalState = this.info.globalState } = info; - const file = `sub-${subject}/sub-${subject}_ses-${session}.nwb`; - - const { conversion_output_folder, name, SourceData } = globalState.project; - - const sessionResults = globalState.results[subject][session]; - - const sourceDataCopy = structuredClone(sessionResults.source_data); - - // Resolve the correct session info from all of the metadata for this conversion - const sessionInfo = { - ...sessionResults, - metadata: resolveMetadata(subject, session, globalState), - source_data: merge(SourceData, sourceDataCopy), - }; - - const result = await runConversion( - { - output_folder: conversionOptions.stub_test ? undefined : conversion_output_folder, - project_name: name, - nwbfile_path: file, - overwrite: true, // We assume override is true because the native NWB file dialog will not allow the user to select an existing file (unless they approve the overwrite) - ...sessionInfo, // source_data and metadata are passed in here - ...conversionOptions, // Any additional conversion options override the defaults - - interfaces: globalState.interfaces, - }, - swalOpts - ).catch((error) => { - let message = error.message; - - if (message.includes("The user aborted a request.")) { - this.notify("Conversion was cancelled.", "warning"); - throw error; - } - - this.notify(message, "error"); - closeProgressPopup(); - throw error; - }); - - completed++; - if (isMultiple) { - const progressInfo = { n: completed, total: toRun.length }; - elements.progress.format = progressInfo; - } - - const subRef = results[subject] ?? (results[subject] = {}); - subRef[session] = result; - } - - closeProgressPopup(); - elements.container.style.textAlign = ""; // Clear style update - - return results; - } - - // NOTE: Until the shadow DOM is supported in Storybook, we can't use this render function how we'd intend to. - addPage = (id, subpage) => { - if (!this.info.pages) this.info.pages = {}; - this.info.pages[id] = subpage; - this.updatePages(); - }; - - checkSyncState = async (info = this.info, sync = info.sync) => { - if (!sync) return; - if (isStorybook) return; - - const { desyncedData } = info.globalState; - - return Promise.all( - sync.map((k) => { - if (desyncedData?.[k] !== false) { - if (k === "conversion") return this.convert(); - else if (k === "preview") return this.convert({ preview: true }); - } - }) - ); - }; - - updateSections = () => { - const dashboard = document.querySelector("nwb-dashboard"); - dashboard.updateSections({ sidebar: true, main: true }, this.info.globalState); - }; - - #unsaved = false; - get unsavedUpdates() { - return this.#unsaved; - } - - set unsavedUpdates(value) { - this.#unsaved = !!value; - if (value === "conversions") this.info.globalState.desyncedData = { preview: true, conversion: true }; - } - - // NOTE: Make sure you call this explicitly if a child class overwrites this AND data is updated - updated() { - this.unsavedUpdates = false; - } - - render() { - return html``; - } -} - -customElements.get("nwbguide-page") || customElements.define("nwbguide-page", Page); +import { LitElement, html } from "lit"; +import { runConversion } from "./guided-mode/options/utils.js"; +import { get, save } from "../../progress/index.js"; +import { dismissNotification, isStorybook, notify } from "../../dependencies/globals"; +import { randomizeElements, mapSessions, merge } from "./utils"; + +import { resolveMetadata } from "./guided-mode/data/utils.js"; +import Swal from "sweetalert2"; +import { createProgressPopup } from "../utils/progress.js"; + +export class Page extends LitElement { + // static get styles() { + // return useGlobalStyles( + // componentCSS, + // (sheet) => sheet.href && sheet.href.includes("bootstrap"), + // this.shadowRoot + // ); + // } + + info = { globalState: {} }; + + constructor(info = {}) { + super(); + Object.assign(this.info, info); + } + + createRenderRoot() { + return this; + } + + query = (input) => { + return (this.shadowRoot ?? this).querySelector(input); + }; + + onSet = () => {}; // User-defined function + + set = (info, rerender = true) => { + if (info) { + Object.assign(this.info, info); + this.onSet(); + if (rerender) this.requestUpdate(); + } + }; + + #notifications = []; + + dismiss = (notification) => { + if (notification) dismissNotification(notification); + else { + this.#notifications.forEach((notification) => dismissNotification(notification)); + this.#notifications = []; + } + }; + + notify = (...args) => { + const ref = notify(...args); + this.#notifications.push(ref); + return ref; + }; + + to = async (transition) => { + // Otherwise note unsaved updates if present + if ( + this.unsavedUpdates || + ("states" in this.info && + transition === 1 && // Only ensure save for standard forward progression + !this.info.states.saved) + ) { + if (transition === 1) + await this.save(); // Save before a single forward transition + else { + await Swal.fire({ + title: "You have unsaved data on this page.", + text: "Would you like to save your changes?", + icon: "warning", + showCancelButton: true, + confirmButtonColor: "#3085d6", + confirmButtonText: "Save and Continue", + cancelButtonText: "Ignore Changes", + }).then(async (result) => { + if (result && result.isConfirmed) await this.save(); + }); + } + } + + return await this.onTransition(transition); + }; + + onTransition = () => {}; // User-defined function + updatePages = () => {}; // User-defined function + beforeSave = () => {}; // User-defined function + + save = async (overrides, runBeforeSave = true) => { + if (runBeforeSave) await this.beforeSave(); + save(this, overrides); + if ("states" in this.info) this.info.states.saved = true; + this.unsavedUpdates = false; + }; + + load = (datasetNameToResume = new URLSearchParams(window.location.search).get("project")) => + (this.info.globalState = get(datasetNameToResume)); + + addSession({ subject, session, info }) { + if (!this.info.globalState.results[subject]) this.info.globalState.results[subject] = {}; + if (this.info.globalState.results[subject][session]) + throw new Error(`Session ${subject}/${session} already exists.`); + info = this.info.globalState.results[subject][session] = info ?? {}; + if (!info.metadata) info.metadata = {}; + if (!info.source_data) info.source_data = {}; + return info; + } + + removeSession({ subject, session }) { + delete this.info.globalState.results[subject][session]; + } + + mapSessions = (callback, data = this.info.globalState.results) => mapSessions(callback, data); + + async convert({ preview } = {}) { + const key = preview ? "preview" : "conversion"; + + delete this.info.globalState[key]; // Clear the preview results + + if (preview) { + const stubs = await this.runConversions({ stub_test: true }, undefined, { + title: "Creating conversion preview for all sessions...", + }); + this.info.globalState[key] = { stubs }; + } else { + this.info.globalState[key] = await this.runConversions({}, true, { title: "Running all conversions" }); + } + + this.unsavedUpdates = true; + + // Indicate conversion has run successfully + const { desyncedData } = this.info.globalState; + if (!desyncedData) this.info.globalState.desyncedData = {}; + + if (desyncedData) { + desyncedData[key] = false; + await this.save({}, false); + } + } + + async runConversions(conversionOptions = {}, toRun, options = {}) { + let original = toRun; + if (!Array.isArray(toRun)) toRun = this.mapSessions(); + + // Filter the sessions to run + if (typeof original === "number") + toRun = randomizeElements(toRun, original); // Grab a random set of sessions + else if (typeof original === "string") toRun = toRun.filter(({ subject }) => subject === original); + else if (typeof original === "function") toRun = toRun.filter(original); + + const results = {}; + + const isMultiple = toRun.length > 1; + + const swalOpts = await createProgressPopup({ title: `Running conversion`, ...options }); + const { close: closeProgressPopup, elements } = swalOpts; + + elements.container.insertAdjacentHTML( + "beforeend", + `Note: This may take a while to complete...
      ` + ); + + let completed = 0; + elements.progress.format = { n: completed, total: toRun.length }; + + for (let info of toRun) { + const { subject, session, globalState = this.info.globalState } = info; + const file = `sub-${subject}/sub-${subject}_ses-${session}.nwb`; + + const { conversion_output_folder, name, SourceData } = globalState.project; + + const sessionResults = globalState.results[subject][session]; + + const sourceDataCopy = structuredClone(sessionResults.source_data); + + // Resolve the correct session info from all of the metadata for this conversion + const sessionInfo = { + ...sessionResults, + metadata: resolveMetadata(subject, session, globalState), + source_data: merge(SourceData, sourceDataCopy), + }; + + const result = await runConversion( + { + output_folder: conversionOptions.stub_test ? undefined : conversion_output_folder, + project_name: name, + nwbfile_path: file, + overwrite: true, // We assume override is true because the native NWB file dialog will not allow the user to select an existing file (unless they approve the overwrite) + ...sessionInfo, // source_data and metadata are passed in here + ...conversionOptions, // Any additional conversion options override the defaults + + interfaces: globalState.interfaces, + }, + swalOpts + ).catch((error) => { + let message = error.message; + + if (message.includes("The user aborted a request.")) { + this.notify("Conversion was cancelled.", "warning"); + throw error; + } + + this.notify(message, "error"); + closeProgressPopup(); + throw error; + }); + + completed++; + if (isMultiple) { + const progressInfo = { n: completed, total: toRun.length }; + elements.progress.format = progressInfo; + } + + const subRef = results[subject] ?? (results[subject] = {}); + subRef[session] = result; + } + + closeProgressPopup(); + elements.container.style.textAlign = ""; // Clear style update + + return results; + } + + // NOTE: Until the shadow DOM is supported in Storybook, we can't use this render function how we'd intend to. + addPage = (id, subpage) => { + if (!this.info.pages) this.info.pages = {}; + this.info.pages[id] = subpage; + this.updatePages(); + }; + + checkSyncState = async (info = this.info, sync = info.sync) => { + if (!sync) return; + if (isStorybook) return; + + const { desyncedData } = info.globalState; + + return Promise.all( + sync.map((k) => { + if (desyncedData?.[k] !== false) { + if (k === "conversion") return this.convert(); + else if (k === "preview") return this.convert({ preview: true }); + } + }) + ); + }; + + updateSections = () => { + const dashboard = document.querySelector("nwb-dashboard"); + dashboard.updateSections({ sidebar: true, main: true }, this.info.globalState); + }; + + #unsaved = false; + get unsavedUpdates() { + return this.#unsaved; + } + + set unsavedUpdates(value) { + this.#unsaved = !!value; + if (value === "conversions") this.info.globalState.desyncedData = { preview: true, conversion: true }; + } + + // NOTE: Make sure you call this explicitly if a child class overwrites this AND data is updated + updated() { + this.unsavedUpdates = false; + } + + render() { + return html``; + } +} + +customElements.get("nwbguide-page") || customElements.define("nwbguide-page", Page); diff --git a/src/electron/renderer/src/stories/pages/Pages.stories.js b/src/electron/renderer/src/stories/pages/Pages.stories.js index 24ddca68f..aea7a91d2 100644 --- a/src/electron/renderer/src/stories/pages/Pages.stories.js +++ b/src/electron/renderer/src/stories/pages/Pages.stories.js @@ -1,36 +1,36 @@ -import { dashboard } from "../../pages.js"; - -// const options = Object.keys(dashboard.pagesById) - -export default { - title: "Pages", - parameters: { - chromatic: { disableSnapshot: false }, - }, - // argTypes: { - // activePage: { - // options, - // control: { type: 'select' } - // }, - // }, -}; - -const Template = (args = {}) => { - for (let k in args) dashboard.setAttribute(k, args[k]); - return dashboard; -}; - -export const Overview = Template.bind({}); -Overview.args = { - activePage: "/", -}; - -export const Documentation = Template.bind({}); -Documentation.args = { - activePage: "docs", -}; - -export const Contact = Template.bind({}); -Contact.args = { - activePage: "contact", -}; +import { dashboard } from "../../pages.js"; + +// const options = Object.keys(dashboard.pagesById) + +export default { + title: "Pages", + parameters: { + chromatic: { disableSnapshot: false }, + }, + // argTypes: { + // activePage: { + // options, + // control: { type: 'select' } + // }, + // }, +}; + +const Template = (args = {}) => { + for (let k in args) dashboard.setAttribute(k, args[k]); + return dashboard; +}; + +export const Overview = Template.bind({}); +Overview.args = { + activePage: "/", +}; + +export const Documentation = Template.bind({}); +Documentation.args = { + activePage: "docs", +}; + +export const Contact = Template.bind({}); +Contact.args = { + activePage: "contact", +}; diff --git a/src/electron/renderer/src/stories/pages/Unsafe.js b/src/electron/renderer/src/stories/pages/Unsafe.js index 1118a26e1..3dea5882b 100644 --- a/src/electron/renderer/src/stories/pages/Unsafe.js +++ b/src/electron/renderer/src/stories/pages/Unsafe.js @@ -1,14 +1,14 @@ -import { LitElement } from "lit"; -import { unsafeHTML } from "lit/directives/unsafe-html.js"; - -export class UnsafeComponent extends LitElement { - constructor(html) { - super(); - this.html = html; - } - - render() { - return unsafeHTML(this.html); - } -} -customElements.get("nwbguide-unsafe") || customElements.define("nwbguide-unsafe", UnsafeComponent); +import { LitElement } from "lit"; +import { unsafeHTML } from "lit/directives/unsafe-html.js"; + +export class UnsafeComponent extends LitElement { + constructor(html) { + super(); + this.html = html; + } + + render() { + return unsafeHTML(this.html); + } +} +customElements.get("nwbguide-unsafe") || customElements.define("nwbguide-unsafe", UnsafeComponent); diff --git a/src/electron/renderer/src/stories/pages/contact-us/Contact.js b/src/electron/renderer/src/stories/pages/contact-us/Contact.js index 7d4ca7c9b..90e7ade16 100644 --- a/src/electron/renderer/src/stories/pages/contact-us/Contact.js +++ b/src/electron/renderer/src/stories/pages/contact-us/Contact.js @@ -1,49 +1,49 @@ -import { html } from "lit"; -import { contact_lottie } from "../../../../assets/lotties/contact-us-lotties.js"; -import { Page } from "../Page.js"; - -import { startLottie } from "../../../dependencies/globals"; - -export class ContactPage extends Page { - header = { - title: "Contact Us", - subtitle: "Let us know your issues and feature requests.", - }; - - constructor(...args) { - super(...args); - } - - updated() { - let contact_lottie_container = (this.shadowRoot ?? this).querySelector("#contact-us-lottie"); - startLottie(contact_lottie_container, contact_lottie); - } - - render() { - return html` -
      -
      -
      -
      -
      -
      -
      -
      -

      - If you encounter any issues or have requests for new features, please create a new - ticket on our GitHub page. -

      -
      -
      -
      -
      -
      - `; - } -} - -customElements.get("nwbguide-contact-page") || customElements.define("nwbguide-contact-page", ContactPage); +import { html } from "lit"; +import { contact_lottie } from "../../../../assets/lotties/contact-us-lotties.js"; +import { Page } from "../Page.js"; + +import { startLottie } from "../../../dependencies/globals"; + +export class ContactPage extends Page { + header = { + title: "Contact Us", + subtitle: "Let us know your issues and feature requests.", + }; + + constructor(...args) { + super(...args); + } + + updated() { + let contact_lottie_container = (this.shadowRoot ?? this).querySelector("#contact-us-lottie"); + startLottie(contact_lottie_container, contact_lottie); + } + + render() { + return html` +
      +
      +
      +
      +
      +
      +
      +
      +

      + If you encounter any issues or have requests for new features, please create a new + ticket on our GitHub page. +

      +
      +
      +
      +
      +
      + `; + } +} + +customElements.get("nwbguide-contact-page") || customElements.define("nwbguide-contact-page", ContactPage); diff --git a/src/electron/renderer/src/stories/pages/documentation/Documentation.js b/src/electron/renderer/src/stories/pages/documentation/Documentation.js index 78d8713d9..023e05c51 100644 --- a/src/electron/renderer/src/stories/pages/documentation/Documentation.js +++ b/src/electron/renderer/src/stories/pages/documentation/Documentation.js @@ -1,113 +1,113 @@ -import { html } from "lit"; -import { docu_lottie } from "../../../../assets/lotties/documentation-lotties.js"; -import { Page } from "../Page.js"; - -import { startLottie } from "../../../dependencies/globals"; - -import { Button } from "../../Button.js"; - -export class DocumentationPage extends Page { - header = { - title: "Documentation", - subtitle: "Learn more about the GUIDE.", - }; - - constructor(...args) { - super(...args); - } - - updated() { - let doc_lottie = (this.shadowRoot ?? this).querySelector("#documentation-lottie"); - - startLottie(doc_lottie, docu_lottie); - const svg = doc_lottie.querySelector("svg"); - console.log(svg); - svg.setAttribute("viewBox", "50 100 300 200"); - - doc_lottie.style.marginBottom = "20px"; - - const container = (this.shadowRoot ?? this).querySelector(".document-content"); - container.style.height = "200px"; - } - - render() { - return html` -

      - The NWB GUIDE walks users step-by-step through all the requirements for converting their data to the NWB - format and uploading datasets to the DANDI Archive. Each stage is designed to conveniently guide users - through the conversion process and include all necessary information such that no prior knowledge of the - NWB data standard is required. -

      - -
      -
      - ${new Button({ - label: "NWB GUIDE Official Documentation", - onClick: () => { - window.open("https://nwb-guide.readthedocs.io/en/latest/"); - }, - })} -
      - -

      Getting Started

      -

      Follow along with our tutorials and learn how to create pipelines that convert neurophysiology data to NWB and publish results to the DANDI Archive.

      - -

      The NWB GUIDE also provides standalone utilities to { - ev.preventDefault(); - this.to("validate"); - }}>validate, { - ev.preventDefault(); - this.to("explore"); - }}>explore, and { - ev.preventDefault(); - this.to("dandiset"); - }}>upload existing NWB files.

      - -

      Additional Resources

      -

      - Conversion to NWB is powered by - NeuroConv. -

      -

      - Inspection of NWB files is powered by - NWB Inspector. -

      -

      - Neurosift - is an interactive data visualization tool created by Jeremy Magland at the Flatiron - Institute. -

      -

      - For help on creating a Dandiset and uploading to DANDI, please see the - DANDI Documentation. -

      -

      - To learn more about NWB, please see the - NWB Overview Documentation. -

      - -

      Acknowledgments

      -

      - - NWB GUIDE is an open-source project developed by CatalystNeuro (Cody Baker, - Garrett Flynn, Ben Dichter) and Lawrence Berkeley National Laboratory (Ryan Ly, - Oliver Ruebel) and generously supported by - The Kavli Foundation. - -

      -
      - - `; - } -} - -customElements.get("nwbguide-documentation-page") || - customElements.define("nwbguide-documentation-page", DocumentationPage); +import { html } from "lit"; +import { docu_lottie } from "../../../../assets/lotties/documentation-lotties.js"; +import { Page } from "../Page.js"; + +import { startLottie } from "../../../dependencies/globals"; + +import { Button } from "../../Button.js"; + +export class DocumentationPage extends Page { + header = { + title: "Documentation", + subtitle: "Learn more about the GUIDE.", + }; + + constructor(...args) { + super(...args); + } + + updated() { + let doc_lottie = (this.shadowRoot ?? this).querySelector("#documentation-lottie"); + + startLottie(doc_lottie, docu_lottie); + const svg = doc_lottie.querySelector("svg"); + console.log(svg); + svg.setAttribute("viewBox", "50 100 300 200"); + + doc_lottie.style.marginBottom = "20px"; + + const container = (this.shadowRoot ?? this).querySelector(".document-content"); + container.style.height = "200px"; + } + + render() { + return html` +

      + The NWB GUIDE walks users step-by-step through all the requirements for converting their data to the NWB + format and uploading datasets to the DANDI Archive. Each stage is designed to conveniently guide users + through the conversion process and include all necessary information such that no prior knowledge of the + NWB data standard is required. +

      + +
      +
      + ${new Button({ + label: "NWB GUIDE Official Documentation", + onClick: () => { + window.open("https://nwb-guide.readthedocs.io/en/latest/"); + }, + })} +
      + +

      Getting Started

      +

      Follow along with our tutorials and learn how to create pipelines that convert neurophysiology data to NWB and publish results to the DANDI Archive.

      + +

      The NWB GUIDE also provides standalone utilities to { + ev.preventDefault(); + this.to("validate"); + }}>validate, { + ev.preventDefault(); + this.to("explore"); + }}>explore, and { + ev.preventDefault(); + this.to("dandiset"); + }}>upload existing NWB files.

      + +

      Additional Resources

      +

      + Conversion to NWB is powered by + NeuroConv. +

      +

      + Inspection of NWB files is powered by + NWB Inspector. +

      +

      + Neurosift + is an interactive data visualization tool created by Jeremy Magland at the Flatiron + Institute. +

      +

      + For help on creating a Dandiset and uploading to DANDI, please see the + DANDI Documentation. +

      +

      + To learn more about NWB, please see the + NWB Overview Documentation. +

      + +

      Acknowledgments

      +

      + + NWB GUIDE is an open-source project developed by CatalystNeuro (Cody Baker, + Garrett Flynn, Ben Dichter) and Lawrence Berkeley National Laboratory (Ryan Ly, + Oliver Ruebel) and generously supported by + The Kavli Foundation. + +

      +
      + + `; + } +} + +customElements.get("nwbguide-documentation-page") || + customElements.define("nwbguide-documentation-page", DocumentationPage); diff --git a/src/electron/renderer/src/stories/pages/getting-started/GettingStarted.js b/src/electron/renderer/src/stories/pages/getting-started/GettingStarted.js index ae930edd9..2a25d8200 100644 --- a/src/electron/renderer/src/stories/pages/getting-started/GettingStarted.js +++ b/src/electron/renderer/src/stories/pages/getting-started/GettingStarted.js @@ -1,87 +1,87 @@ -import { html } from "lit"; -import { column1Lottie, column2Lottie, column3Lottie } from "../../../../assets/lotties/overview-lotties.js"; -import { Page } from "../Page.js"; - -import { startLottie } from "../../../dependencies/globals"; - -export class GettingStartedPage extends Page { - constructor(...args) { - super(...args); - } - - updated() { - // this.content = (this.shadowRoot ?? this).querySelector("#content"); - let column1 = this.query("#lottie1"); - let column2 = this.query("#lottie2"); - let column3 = this.query("#lottie3"); - startLottie(column1, column1Lottie); - startLottie(column2, column2Lottie); - startLottie(column3, column3Lottie); - } - - render() { - return html` -
      -

      Your one-stop tool for converting and uploading NWB datasets to the DANDI Archive!

      - -
      -
      -

      Curate

      - -
      -

      - Rapidly prepare your data and metadata according to the NWB Best Practices and DANDI - requirements -

      -
      -
      -

      Share

      -
      -

      Easily upload your curated dataset to the DANDI archive

      -
      -
      -

      Relax

      -
      -

      Use our intuitive interface and automations to streamline your process

      -
      -
      -
      - - - -
      -
      - `; - } -} - -customElements.get("nwbguide-start-page") || customElements.define("nwbguide-start-page", GettingStartedPage); +import { html } from "lit"; +import { column1Lottie, column2Lottie, column3Lottie } from "../../../../assets/lotties/overview-lotties.js"; +import { Page } from "../Page.js"; + +import { startLottie } from "../../../dependencies/globals"; + +export class GettingStartedPage extends Page { + constructor(...args) { + super(...args); + } + + updated() { + // this.content = (this.shadowRoot ?? this).querySelector("#content"); + let column1 = this.query("#lottie1"); + let column2 = this.query("#lottie2"); + let column3 = this.query("#lottie3"); + startLottie(column1, column1Lottie); + startLottie(column2, column2Lottie); + startLottie(column3, column3Lottie); + } + + render() { + return html` +
      +

      Your one-stop tool for converting and uploading NWB datasets to the DANDI Archive!

      + +
      +
      +

      Curate

      + +
      +

      + Rapidly prepare your data and metadata according to the NWB Best Practices and DANDI + requirements +

      +
      +
      +

      Share

      +
      +

      Easily upload your curated dataset to the DANDI archive

      +
      +
      +

      Relax

      +
      +

      Use our intuitive interface and automations to streamline your process

      +
      +
      +
      + + + +
      +
      + `; + } +} + +customElements.get("nwbguide-start-page") || customElements.define("nwbguide-start-page", GettingStartedPage); diff --git a/src/electron/renderer/src/stories/pages/globals.js b/src/electron/renderer/src/stories/pages/globals.js index bab8d4df2..828ea5589 100644 --- a/src/electron/renderer/src/stories/pages/globals.js +++ b/src/electron/renderer/src/stories/pages/globals.js @@ -1 +1 @@ -export const sections = ["Project Structure", "Data Entry", "File Conversion", "Dataset Publication"]; +export const sections = ["Project Structure", "Data Entry", "File Conversion", "Dataset Publication"]; diff --git a/src/electron/renderer/src/stories/pages/guided-mode/GuidedFooter.js b/src/electron/renderer/src/stories/pages/guided-mode/GuidedFooter.js index 25c245ac5..9bd9ac21b 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/GuidedFooter.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/GuidedFooter.js @@ -1,68 +1,68 @@ -import { LitElement, html, css } from "lit"; -import "../../Footer"; -import "../../Button"; - -// NOTE: Must be set with the page's onTransition function -export class GuidedFooter extends LitElement { - static get styles() { - return css` - :host { - display: flex; - width: 100%; - } - `; - } - - static get properties() { - return { - back: { type: String, reflect: true }, - next: { type: String, reflect: true }, - exit: { type: String, reflect: true }, - onBack: { type: Function, reflect: false }, - onNext: { type: Function, reflect: false }, - onExit: { type: Function, reflect: false }, - }; - } - - constructor({ - back = "Back", - next = "Next", - exit = "Exit Current Pipeline", - onBack = () => this.to(-1), - onNext = () => this.to(1), - onExit = () => this.to("/"), - } = {}) { - super(); - this.back = back; - this.next = next; - this.exit = exit; - this.onBack = onBack; - this.onNext = onNext; - this.onExit = onExit; - } - - attributeChangedCallback(...args) { - const attrs = ["back", "next", "exit", "onBack", "onNext", "onExit"]; - super.attributeChangedCallback(...args); - if (attrs.includes(args[0])) this.requestUpdate(); - } - - updated() { - this.to = (transition) => this.parentElement.to(transition); // Run main page's transition function - } - - render() { - return html` - -
      ${this.exit ? html`${this.exit}` : ""}
      - -
      - ${this.back ? html`${this.back}` : ""} - ${this.next ? html`${this.next}` : ""} -
      -
      - `; - } -} - -customElements.get("nwb-guided-footer") || customElements.define("nwb-guided-footer", GuidedFooter); +import { LitElement, html, css } from "lit"; +import "../../Footer"; +import "../../Button"; + +// NOTE: Must be set with the page's onTransition function +export class GuidedFooter extends LitElement { + static get styles() { + return css` + :host { + display: flex; + width: 100%; + } + `; + } + + static get properties() { + return { + back: { type: String, reflect: true }, + next: { type: String, reflect: true }, + exit: { type: String, reflect: true }, + onBack: { type: Function, reflect: false }, + onNext: { type: Function, reflect: false }, + onExit: { type: Function, reflect: false }, + }; + } + + constructor({ + back = "Back", + next = "Next", + exit = "Exit Current Pipeline", + onBack = () => this.to(-1), + onNext = () => this.to(1), + onExit = () => this.to("/"), + } = {}) { + super(); + this.back = back; + this.next = next; + this.exit = exit; + this.onBack = onBack; + this.onNext = onNext; + this.onExit = onExit; + } + + attributeChangedCallback(...args) { + const attrs = ["back", "next", "exit", "onBack", "onNext", "onExit"]; + super.attributeChangedCallback(...args); + if (attrs.includes(args[0])) this.requestUpdate(); + } + + updated() { + this.to = (transition) => this.parentElement.to(transition); // Run main page's transition function + } + + render() { + return html` + +
      ${this.exit ? html`${this.exit}` : ""}
      + +
      + ${this.back ? html`${this.back}` : ""} + ${this.next ? html`${this.next}` : ""} +
      +
      + `; + } +} + +customElements.get("nwb-guided-footer") || customElements.define("nwb-guided-footer", GuidedFooter); diff --git a/src/electron/renderer/src/stories/pages/guided-mode/GuidedHeader.js b/src/electron/renderer/src/stories/pages/guided-mode/GuidedHeader.js index 21ef60e5b..56322af3b 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/GuidedHeader.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/GuidedHeader.js @@ -1,55 +1,55 @@ -import { LitElement, html } from "lit"; - -export class GuidedHeader extends LitElement { - constructor({ sections = [], selected = 0 } = {}) { - super(); - this.sections = sections; - this.selected = selected; - } - - static get properties() { - return { - sections: { type: Array, reflect: true }, - selected: { type: Number, reflect: true }, - }; - } - - attributeChangedCallback(...args) { - const attrs = ["sections", "selected"]; - super.attributeChangedCallback(...args); - if (attrs.includes(args[0])) this.requestUpdate(); - } - - createRenderRoot() { - return this; - } - - render() { - if (!this.sections.length) return html``; - - return html` -
      -
      - ${this.sections.map( - (section, i) => html` -
      -
      - ${i} -
      -

      ${section}

      -
      -
      -
      - ` - )} -
      - `; - } -} - -customElements.get("nwb-guided-header") || customElements.define("nwb-guided-header", GuidedHeader); +import { LitElement, html } from "lit"; + +export class GuidedHeader extends LitElement { + constructor({ sections = [], selected = 0 } = {}) { + super(); + this.sections = sections; + this.selected = selected; + } + + static get properties() { + return { + sections: { type: Array, reflect: true }, + selected: { type: Number, reflect: true }, + }; + } + + attributeChangedCallback(...args) { + const attrs = ["sections", "selected"]; + super.attributeChangedCallback(...args); + if (attrs.includes(args[0])) this.requestUpdate(); + } + + createRenderRoot() { + return this; + } + + render() { + if (!this.sections.length) return html``; + + return html` +
      +
      + ${this.sections.map( + (section, i) => html` +
      +
      + ${i} +
      +

      ${section}

      +
      +
      +
      + ` + )} +
      + `; + } +} + +customElements.get("nwb-guided-header") || customElements.define("nwb-guided-header", GuidedHeader); diff --git a/src/electron/renderer/src/stories/pages/guided-mode/GuidedHome.js b/src/electron/renderer/src/stories/pages/guided-mode/GuidedHome.js index 9c3ed487a..07d4fa1c8 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/GuidedHome.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/GuidedHome.js @@ -1,230 +1,230 @@ -import { html } from "lit"; -import { Page } from "../Page.js"; -import { ProgressCard } from "./ProgressCard.js"; - -import { startLottie } from "../../../dependencies/globals"; -import * as progress from "../../../progress/index.js"; -import { newDataset } from "../../../../assets/lotties/index.js"; - -export class GuidedHomePage extends Page { - constructor(...args) { - super(...args); - } - - resetRadioButtons(parentPageID) { - const parentPage = (this.shadowRoot ?? this).querySelector(`#${parentPageID}`); - const guidedRadioButtons = parentPage.querySelectorAll(".guided--radio-button"); - for (const guidedRadioButton of guidedRadioButtons) { - guidedRadioButton.classList.remove("selected"); - guidedRadioButton.classList.remove("not-selected"); - guidedRadioButton.classList.add("basic"); - - //get the data-next-element attribute - const elementButtonControls = guidedRadioButton.getAttribute("data-next-element"); - if (elementButtonControls) { - const elementToHide = (this.shadowRoot ?? this).querySelector(`#${elementButtonControls}`); - elementToHide.setAttribute("hidden", ""); - } - } - } - - renderProgressCards = (progressFileJSONdata) => { - const htmlBase = this.shadowRoot ?? this; - - //sort progressFileJSONdata by date to place newest cards on top - progressFileJSONdata.sort((a, b) => { - return new Date(b["last-modified"]) - new Date(a["last-modified"]); - }); - - //sort progressFileJSONdata into two rows one with property "previous-guided-upload-dataset-name" - //and one without property "previous-guided-upload-dataset-name" - const progressDataAlreadyUploadedToPennsieve = progressFileJSONdata.filter((progressFileJSONobj) => { - return progressFileJSONobj["previous-guided-upload-dataset-name"]; - }); - const progressDataNotYetUploadedToPennsieve = progressFileJSONdata.filter((progressFileJSONobj) => { - return !progressFileJSONobj["previous-guided-upload-dataset-name"]; - }); - //Add the progress cards that have already been uploaded to Pennsieve - //to their container (datasets that have the globals.sodaJSONObj["previous-guided-upload-dataset-name"] property) - - const uploadedList = htmlBase.querySelector("#guided-div-update-uploaded-cards"); - uploadedList.innerHTML = ""; - - const createCard = (progressFile) => { - const card = new ProgressCard(progressFile); - card.resume = (...args) => this.resume(...args); - return card; - }; - - if (progressDataAlreadyUploadedToPennsieve.length > 0) { - progressDataAlreadyUploadedToPennsieve.forEach((progressFile) => - uploadedList.appendChild(createCard(progressFile)) - ); - } else - uploadedList.innerHTML = ` -

      - No local datasets have been uploaded to Pennsieve yet. -

      -

      - Click "Datasets in progress" to view local datasets in progress. -

      - `; - - //Add the progress cards that have not yet been uploaded to Pennsieve - //to their container (datasets that do not have the globals.sodaJSONObj["previous-guided-upload-dataset-name"] property) - const resumeList = htmlBase.querySelector("#guided-div-resume-progress-cards"); - resumeList.innerHTML = ""; - - if (progressDataNotYetUploadedToPennsieve.length > 0) { - progressDataNotYetUploadedToPennsieve.forEach((progressFile) => - resumeList.appendChild(createCard(progressFile)) - ); - } else - resumeList.innerHTML = ` -

      - All local datasets have been previously uploaded to Pennsieve. -

      -

      - Click "Datasets uploaded to Pennsieve" to view local datasets that have already been uploaded to Pennsieve. -

      - `; - - const radioButtons = Array.from(htmlBase.querySelectorAll(".guided--radio-button")); - radioButtons.forEach((radioButton) => { - radioButton.onclick = () => - this.#onRadioClick( - radioButton, - radioButtons.filter((button) => button !== radioButton) - ); - }); - }; - - #onRadioClick = (selectedButton, notSelectedButton) => { - notSelectedButton.forEach((button) => { - button.classList.add("selected"); - button.classList.add("not-selected"); - button.classList.add("basic"); - }); - - //If button has prevent-radio-handler data attribute, other buttons, will be deselected - //but all other radio button functions will be halted - if (selectedButton.getAttribute("data-prevent-radio-handler") === true) return; - - selectedButton.classList.remove("not-selected"); - selectedButton.classList.remove("basic"); - selectedButton.classList.add("selected"); - - //Hide all child containers of non-selected buttons - notSelectedButton.forEach((button) => { - const id = button.getAttribute("data-next-element"); - if (id) (this.shadowRoot ?? this).querySelector(`#${id}`).setAttribute("hidden", ""); - }); - - //Display and scroll to selected element container if data-next-element exists - const nextQuestionID = selectedButton.getAttribute("data-next-element"); - if (nextQuestionID) { - const nextQuestionElement = (this.shadowRoot ?? this).querySelector(`#${nextQuestionID}`); - nextQuestionElement.removeAttribute("hidden"); - //slow scroll to the next question - //temp fix to prevent scrolling error - const elementsToNotScrollTo = [ - "guided-add-samples-table", - "guided-add-pools-table", - "guided-div-add-subjects-table", - "guided-div-resume-progress-cards", - "guided-div-update-uploaded-cards", - ]; - if (!elementsToNotScrollTo.includes(nextQuestionID)) - nextQuestionElement[0].scrollIntoView({ behavior: "smooth" }); - } - }; - - resume = (resumeProgressButton) => { - resumeProgressButton.classList.add("loading"); - const datasetNameToResume = - resumeProgressButton.parentNode.parentNode.querySelector(".progress-file-name").innerText; - - progress.resume.call(this, datasetNameToResume); - resumeProgressButton.classList.remove("loading"); - }; - - async updated() { - const htmlBase = this.shadowRoot ?? this; - // this.content = (this.shadowRoot ?? this).querySelector("#content"); - const lottieContainer = htmlBase.querySelector("#new-dataset-lottie-container"); - startLottie(lottieContainer, newDataset); - - // Render existing conversion pipelines - // guidedResetProgressVariables(); - - this.resetRadioButtons("guided-div-dataset-cards-radio-buttons"); - - const datasetCardsRadioButtonsContainer = htmlBase.querySelector("#guided-div-dataset-cards-radio-buttons"); - - const guidedSavedProgressFiles = progress.getEntries(); - - //render progress resumption cards from progress file array - if (guidedSavedProgressFiles.length != 0) { - datasetCardsRadioButtonsContainer.removeAttribute("hidden"); - const progressFileData = progress.getAll(guidedSavedProgressFiles); - this.renderProgressCards(progressFileData); - htmlBase.querySelector("#guided-button-view-datasets-in-progress").click(); - } else { - htmlBase.querySelector("#guided-continue-curation-header").innerHTML = ""; - datasetCardsRadioButtonsContainer.setAttribute("hidden", ""); - } - } - - render() { - return html` -
      -
      -

      - Your one-stop tool for converting data to NWB and uploading it to the DANDI Archive. -

      - Don't know where to go next? - Learn more about the NWB GUIDE. -
      - -
      -
      -

      Create a new conversion pipeline

      -
      - -
      -
      -

      - -
      - - -
      -
      - `; - } -} - -customElements.get("nwbguide-guided-home-page") || customElements.define("nwbguide-guided-home-page", GuidedHomePage); +import { html } from "lit"; +import { Page } from "../Page.js"; +import { ProgressCard } from "./ProgressCard.js"; + +import { startLottie } from "../../../dependencies/globals"; +import * as progress from "../../../progress/index.js"; +import { newDataset } from "../../../../assets/lotties/index.js"; + +export class GuidedHomePage extends Page { + constructor(...args) { + super(...args); + } + + resetRadioButtons(parentPageID) { + const parentPage = (this.shadowRoot ?? this).querySelector(`#${parentPageID}`); + const guidedRadioButtons = parentPage.querySelectorAll(".guided--radio-button"); + for (const guidedRadioButton of guidedRadioButtons) { + guidedRadioButton.classList.remove("selected"); + guidedRadioButton.classList.remove("not-selected"); + guidedRadioButton.classList.add("basic"); + + //get the data-next-element attribute + const elementButtonControls = guidedRadioButton.getAttribute("data-next-element"); + if (elementButtonControls) { + const elementToHide = (this.shadowRoot ?? this).querySelector(`#${elementButtonControls}`); + elementToHide.setAttribute("hidden", ""); + } + } + } + + renderProgressCards = (progressFileJSONdata) => { + const htmlBase = this.shadowRoot ?? this; + + //sort progressFileJSONdata by date to place newest cards on top + progressFileJSONdata.sort((a, b) => { + return new Date(b["last-modified"]) - new Date(a["last-modified"]); + }); + + //sort progressFileJSONdata into two rows one with property "previous-guided-upload-dataset-name" + //and one without property "previous-guided-upload-dataset-name" + const progressDataAlreadyUploadedToPennsieve = progressFileJSONdata.filter((progressFileJSONobj) => { + return progressFileJSONobj["previous-guided-upload-dataset-name"]; + }); + const progressDataNotYetUploadedToPennsieve = progressFileJSONdata.filter((progressFileJSONobj) => { + return !progressFileJSONobj["previous-guided-upload-dataset-name"]; + }); + //Add the progress cards that have already been uploaded to Pennsieve + //to their container (datasets that have the globals.sodaJSONObj["previous-guided-upload-dataset-name"] property) + + const uploadedList = htmlBase.querySelector("#guided-div-update-uploaded-cards"); + uploadedList.innerHTML = ""; + + const createCard = (progressFile) => { + const card = new ProgressCard(progressFile); + card.resume = (...args) => this.resume(...args); + return card; + }; + + if (progressDataAlreadyUploadedToPennsieve.length > 0) { + progressDataAlreadyUploadedToPennsieve.forEach((progressFile) => + uploadedList.appendChild(createCard(progressFile)) + ); + } else + uploadedList.innerHTML = ` +

      + No local datasets have been uploaded to Pennsieve yet. +

      +

      + Click "Datasets in progress" to view local datasets in progress. +

      + `; + + //Add the progress cards that have not yet been uploaded to Pennsieve + //to their container (datasets that do not have the globals.sodaJSONObj["previous-guided-upload-dataset-name"] property) + const resumeList = htmlBase.querySelector("#guided-div-resume-progress-cards"); + resumeList.innerHTML = ""; + + if (progressDataNotYetUploadedToPennsieve.length > 0) { + progressDataNotYetUploadedToPennsieve.forEach((progressFile) => + resumeList.appendChild(createCard(progressFile)) + ); + } else + resumeList.innerHTML = ` +

      + All local datasets have been previously uploaded to Pennsieve. +

      +

      + Click "Datasets uploaded to Pennsieve" to view local datasets that have already been uploaded to Pennsieve. +

      + `; + + const radioButtons = Array.from(htmlBase.querySelectorAll(".guided--radio-button")); + radioButtons.forEach((radioButton) => { + radioButton.onclick = () => + this.#onRadioClick( + radioButton, + radioButtons.filter((button) => button !== radioButton) + ); + }); + }; + + #onRadioClick = (selectedButton, notSelectedButton) => { + notSelectedButton.forEach((button) => { + button.classList.add("selected"); + button.classList.add("not-selected"); + button.classList.add("basic"); + }); + + //If button has prevent-radio-handler data attribute, other buttons, will be deselected + //but all other radio button functions will be halted + if (selectedButton.getAttribute("data-prevent-radio-handler") === true) return; + + selectedButton.classList.remove("not-selected"); + selectedButton.classList.remove("basic"); + selectedButton.classList.add("selected"); + + //Hide all child containers of non-selected buttons + notSelectedButton.forEach((button) => { + const id = button.getAttribute("data-next-element"); + if (id) (this.shadowRoot ?? this).querySelector(`#${id}`).setAttribute("hidden", ""); + }); + + //Display and scroll to selected element container if data-next-element exists + const nextQuestionID = selectedButton.getAttribute("data-next-element"); + if (nextQuestionID) { + const nextQuestionElement = (this.shadowRoot ?? this).querySelector(`#${nextQuestionID}`); + nextQuestionElement.removeAttribute("hidden"); + //slow scroll to the next question + //temp fix to prevent scrolling error + const elementsToNotScrollTo = [ + "guided-add-samples-table", + "guided-add-pools-table", + "guided-div-add-subjects-table", + "guided-div-resume-progress-cards", + "guided-div-update-uploaded-cards", + ]; + if (!elementsToNotScrollTo.includes(nextQuestionID)) + nextQuestionElement[0].scrollIntoView({ behavior: "smooth" }); + } + }; + + resume = (resumeProgressButton) => { + resumeProgressButton.classList.add("loading"); + const datasetNameToResume = + resumeProgressButton.parentNode.parentNode.querySelector(".progress-file-name").innerText; + + progress.resume.call(this, datasetNameToResume); + resumeProgressButton.classList.remove("loading"); + }; + + async updated() { + const htmlBase = this.shadowRoot ?? this; + // this.content = (this.shadowRoot ?? this).querySelector("#content"); + const lottieContainer = htmlBase.querySelector("#new-dataset-lottie-container"); + startLottie(lottieContainer, newDataset); + + // Render existing conversion pipelines + // guidedResetProgressVariables(); + + this.resetRadioButtons("guided-div-dataset-cards-radio-buttons"); + + const datasetCardsRadioButtonsContainer = htmlBase.querySelector("#guided-div-dataset-cards-radio-buttons"); + + const guidedSavedProgressFiles = progress.getEntries(); + + //render progress resumption cards from progress file array + if (guidedSavedProgressFiles.length != 0) { + datasetCardsRadioButtonsContainer.removeAttribute("hidden"); + const progressFileData = progress.getAll(guidedSavedProgressFiles); + this.renderProgressCards(progressFileData); + htmlBase.querySelector("#guided-button-view-datasets-in-progress").click(); + } else { + htmlBase.querySelector("#guided-continue-curation-header").innerHTML = ""; + datasetCardsRadioButtonsContainer.setAttribute("hidden", ""); + } + } + + render() { + return html` +
      +
      +

      + Your one-stop tool for converting data to NWB and uploading it to the DANDI Archive. +

      + Don't know where to go next? + Learn more about the NWB GUIDE. +
      + +
      +
      +

      Create a new conversion pipeline

      +
      + +
      +
      +

      + +
      + + +
      +
      + `; + } +} + +customElements.get("nwbguide-guided-home-page") || customElements.define("nwbguide-guided-home-page", GuidedHomePage); diff --git a/src/electron/renderer/src/stories/pages/guided-mode/GuidedHome.stories.js b/src/electron/renderer/src/stories/pages/guided-mode/GuidedHome.stories.js index ae5b9034b..fb5dedf61 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/GuidedHome.stories.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/GuidedHome.stories.js @@ -1,14 +1,14 @@ -import { globalState, PageTemplate } from "./storyStates"; - -export default { - title: "Pages/Guided Mode/Home", - parameters: { - chromatic: { disableSnapshot: false }, - }, -}; - -export const Default = PageTemplate.bind({}); -Default.args = { - activePage: "//", - globalState, -}; +import { globalState, PageTemplate } from "./storyStates"; + +export default { + title: "Pages/Guided Mode/Home", + parameters: { + chromatic: { disableSnapshot: false }, + }, +}; + +export const Default = PageTemplate.bind({}); +Default.args = { + activePage: "//", + globalState, +}; diff --git a/src/electron/renderer/src/stories/pages/guided-mode/GuidedStart.js b/src/electron/renderer/src/stories/pages/guided-mode/GuidedStart.js index bfe38401b..a1edff01c 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/GuidedStart.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/GuidedStart.js @@ -1,118 +1,118 @@ -import { html } from "lit"; -import { Page } from "../Page.js"; -import "./GuidedFooter"; -import { InfoBox } from "../../InfoBox.js"; -import { InspectorListItem } from "../../preview/inspector/InspectorList.js"; -import { sections } from "../globals"; - -export class GuidedStartPage extends Page { - constructor(...args) { - super(...args); - } - - updated() { - // this.content = (this.shadowRoot ?? this).querySelector("#content"); - // Handle dropdown text - const infoDropdowns = (this.shadowRoot ?? this).getElementsByClassName("guided--info-dropdown"); - for (const infoDropdown of Array.from(infoDropdowns)) { - const infoTextElement = infoDropdown.querySelector(".guided--dropdown-text"); - - // Auto-add icons if they're not there - const dropdownType = infoTextElement.dataset.dropdownType; - if (infoTextElement.previousSibling.tagName !== "I") { - if (dropdownType === "info") { - //insert the info icon before the text - infoTextElement.insertAdjacentHTML("beforebegin", ` `); - } - if (dropdownType === "warning") { - //insert the warning icon before the text - infoTextElement.insertAdjacentHTML("beforebegin", ` `); - } - } - - infoDropdown.onclick = () => { - const infoContainer = infoDropdown.nextElementSibling; - const infoContainerChevron = infoDropdown.querySelector(".fa-chevron-right"); - - const infoContainerIsopen = infoContainer.classList.contains("container-open"); - - if (infoContainerIsopen) { - infoContainerChevron.style.transform = "rotate(0deg)"; - infoContainer.classList.remove("container-open"); - } else { - infoContainerChevron.style.transform = "rotate(90deg)"; - infoContainer.classList.add("container-open"); - } - }; - } - } - - render() { - return html` -
      -
      -

      Designing a Conversion Pipeline: A Look Ahead

      -
      -
      -
      -

      - In the GUIDE, the process of running a conversion pipeline is broken into four high-level sections. -

      -

      1. ${sections[0]}

      -

      - The first section will direct you to specify the high-level structure of your conversion pipeline, including data formats and global metadata. -

      -

      2. ${sections[1]}

      -

      - The second section will have you provide your source data files and NWB File metadata on a per-subject basis to populate your files. -

      - - ${new InspectorListItem({ - message: html`Red boxes are Error messages. These will block your conversion progress - until resolved.`, - type: "error", - })} - ${new InspectorListItem({ - message: html`Yellow boxes are Warning messages. Fixing them will align your NWB - files with best practices.`, - type: "warning", - })} - -

      - Throughout the forms found in the GUIDE, asterisks (*) represent required properties. - Attempting to move forward will throw an Error until these properties are filled in. -

      -

      - Gray asterisks (*) are sometimes used to represent loose requirements, where missing this property will throw an Error - — though you don't need to specify a value at the current stage. -

      - -

      3. ${sections[2]}

      -

      - In the third section, you will preview your conversion before uploading to DANDI. -

      -

      4. ${sections[3]}

      -

      - Finally, you will upload your conversion to DANDI and review the resulting Dandiset. -

      - -

      Additional Resources

      -
      - ${new InfoBox({ - header: "Where can I learn more about the conversion process?", - content: ` - Although not required to use the GUIDE, you can learn more about the NWB conversion - process in the - neuroconv documentation page. - `, - })} -
      -
      - - `; - } -} - -customElements.get("nwbguide-guided-start-page") || - customElements.define("nwbguide-guided-start-page", GuidedStartPage); +import { html } from "lit"; +import { Page } from "../Page.js"; +import "./GuidedFooter"; +import { InfoBox } from "../../InfoBox.js"; +import { InspectorListItem } from "../../preview/inspector/InspectorList.js"; +import { sections } from "../globals"; + +export class GuidedStartPage extends Page { + constructor(...args) { + super(...args); + } + + updated() { + // this.content = (this.shadowRoot ?? this).querySelector("#content"); + // Handle dropdown text + const infoDropdowns = (this.shadowRoot ?? this).getElementsByClassName("guided--info-dropdown"); + for (const infoDropdown of Array.from(infoDropdowns)) { + const infoTextElement = infoDropdown.querySelector(".guided--dropdown-text"); + + // Auto-add icons if they're not there + const dropdownType = infoTextElement.dataset.dropdownType; + if (infoTextElement.previousSibling.tagName !== "I") { + if (dropdownType === "info") { + //insert the info icon before the text + infoTextElement.insertAdjacentHTML("beforebegin", ` `); + } + if (dropdownType === "warning") { + //insert the warning icon before the text + infoTextElement.insertAdjacentHTML("beforebegin", ` `); + } + } + + infoDropdown.onclick = () => { + const infoContainer = infoDropdown.nextElementSibling; + const infoContainerChevron = infoDropdown.querySelector(".fa-chevron-right"); + + const infoContainerIsopen = infoContainer.classList.contains("container-open"); + + if (infoContainerIsopen) { + infoContainerChevron.style.transform = "rotate(0deg)"; + infoContainer.classList.remove("container-open"); + } else { + infoContainerChevron.style.transform = "rotate(90deg)"; + infoContainer.classList.add("container-open"); + } + }; + } + } + + render() { + return html` +
      +
      +

      Designing a Conversion Pipeline: A Look Ahead

      +
      +
      +
      +

      + In the GUIDE, the process of running a conversion pipeline is broken into four high-level sections. +

      +

      1. ${sections[0]}

      +

      + The first section will direct you to specify the high-level structure of your conversion pipeline, including data formats and global metadata. +

      +

      2. ${sections[1]}

      +

      + The second section will have you provide your source data files and NWB File metadata on a per-subject basis to populate your files. +

      + + ${new InspectorListItem({ + message: html`Red boxes are Error messages. These will block your conversion progress + until resolved.`, + type: "error", + })} + ${new InspectorListItem({ + message: html`Yellow boxes are Warning messages. Fixing them will align your NWB + files with best practices.`, + type: "warning", + })} + +

      + Throughout the forms found in the GUIDE, asterisks (*) represent required properties. + Attempting to move forward will throw an Error until these properties are filled in. +

      +

      + Gray asterisks (*) are sometimes used to represent loose requirements, where missing this property will throw an Error + — though you don't need to specify a value at the current stage. +

      + +

      3. ${sections[2]}

      +

      + In the third section, you will preview your conversion before uploading to DANDI. +

      +

      4. ${sections[3]}

      +

      + Finally, you will upload your conversion to DANDI and review the resulting Dandiset. +

      + +

      Additional Resources

      +
      + ${new InfoBox({ + header: "Where can I learn more about the conversion process?", + content: ` + Although not required to use the GUIDE, you can learn more about the NWB conversion + process in the + neuroconv documentation page. + `, + })} +
      +
      + + `; + } +} + +customElements.get("nwbguide-guided-start-page") || + customElements.define("nwbguide-guided-start-page", GuidedStartPage); diff --git a/src/electron/renderer/src/stories/pages/guided-mode/Locate.stories.js b/src/electron/renderer/src/stories/pages/guided-mode/Locate.stories.js index 1cd557b56..0503c1096 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/Locate.stories.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/Locate.stories.js @@ -1,29 +1,29 @@ -import { globalState, PageTemplate } from "./storyStates"; - -export default { - title: "Pages/Guided Mode/Locate", - parameters: { - chromatic: { disableSnapshot: false }, - }, -}; - -export const Invalid = PageTemplate.bind({}); -Invalid.args = { - activePage: "//locate", - globalState, -}; - -export const Valid = PageTemplate.bind({}); - -const validGlobalState = structuredClone(globalState); -validGlobalState.structure.results = { - interface: { - base_directory: "/Users/garrettflynn/NWB_GUIDE/tutorial/Dataset", - format_string_path: "{subject_id}/{subject_id}_{session_id}/{subject_id}_{session_id}_phy", - }, -}; - -Valid.args = { - activePage: "//locate", - globalState: validGlobalState, -}; +import { globalState, PageTemplate } from "./storyStates"; + +export default { + title: "Pages/Guided Mode/Locate", + parameters: { + chromatic: { disableSnapshot: false }, + }, +}; + +export const Invalid = PageTemplate.bind({}); +Invalid.args = { + activePage: "//locate", + globalState, +}; + +export const Valid = PageTemplate.bind({}); + +const validGlobalState = structuredClone(globalState); +validGlobalState.structure.results = { + interface: { + base_directory: "/Users/garrettflynn/NWB_GUIDE/tutorial/Dataset", + format_string_path: "{subject_id}/{subject_id}_{session_id}/{subject_id}_{session_id}_phy", + }, +}; + +Valid.args = { + activePage: "//locate", + globalState: validGlobalState, +}; diff --git a/src/electron/renderer/src/stories/pages/guided-mode/Metadata.stories.js b/src/electron/renderer/src/stories/pages/guided-mode/Metadata.stories.js index 5682128d1..e59d57d9e 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/Metadata.stories.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/Metadata.stories.js @@ -1,14 +1,14 @@ -import { globalState, PageTemplate } from "./storyStates"; - -export default { - title: "Pages/Guided Mode/Metadata", - parameters: { - chromatic: { disableSnapshot: false }, - }, -}; - -export const Default = PageTemplate.bind({}); -Default.args = { - activePage: "//metadata", - globalState, -}; +import { globalState, PageTemplate } from "./storyStates"; + +export default { + title: "Pages/Guided Mode/Metadata", + parameters: { + chromatic: { disableSnapshot: false }, + }, +}; + +export const Default = PageTemplate.bind({}); +Default.args = { + activePage: "//metadata", + globalState, +}; diff --git a/src/electron/renderer/src/stories/pages/guided-mode/NewDataset.stories.js b/src/electron/renderer/src/stories/pages/guided-mode/NewDataset.stories.js index 22a645274..00f657d5b 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/NewDataset.stories.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/NewDataset.stories.js @@ -1,14 +1,14 @@ -import { globalState, PageTemplate } from "./storyStates"; - -export default { - title: "Pages/Guided Mode/New Dataset", - parameters: { - chromatic: { disableSnapshot: false }, - }, -}; - -export const Default = PageTemplate.bind({}); -Default.args = { - activePage: "//details", - globalState, -}; +import { globalState, PageTemplate } from "./storyStates"; + +export default { + title: "Pages/Guided Mode/New Dataset", + parameters: { + chromatic: { disableSnapshot: false }, + }, +}; + +export const Default = PageTemplate.bind({}); +Default.args = { + activePage: "//details", + globalState, +}; diff --git a/src/electron/renderer/src/stories/pages/guided-mode/Preview.stories.js b/src/electron/renderer/src/stories/pages/guided-mode/Preview.stories.js index 0cb3fdfc6..a0b4c6b4f 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/Preview.stories.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/Preview.stories.js @@ -1,14 +1,14 @@ -import { globalState, PageTemplate } from "./storyStates"; - -export default { - title: "Pages/Guided Mode/Preview", - parameters: { - chromatic: { disableSnapshot: false }, - }, -}; - -export const Default = PageTemplate.bind({}); -Default.args = { - activePage: "//preview", - globalState, -}; +import { globalState, PageTemplate } from "./storyStates"; + +export default { + title: "Pages/Guided Mode/Preview", + parameters: { + chromatic: { disableSnapshot: false }, + }, +}; + +export const Default = PageTemplate.bind({}); +Default.args = { + activePage: "//preview", + globalState, +}; diff --git a/src/electron/renderer/src/stories/pages/guided-mode/ProgressCard.js b/src/electron/renderer/src/stories/pages/guided-mode/ProgressCard.js index 23c2e635f..4b7dac402 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/ProgressCard.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/ProgressCard.js @@ -1,121 +1,121 @@ -import { html, LitElement } from "lit"; -import * as progress from "../../../progress/index.js"; - -export class ProgressCard extends LitElement { - static get properties() { - return { - info: { type: Object }, - }; - } - - constructor(info) { - super(); - this.info = info; - } - - createRenderRoot() { - return this; - } - - updated() { - this.style.width = "100%"; - } - - resume = () => {}; // User-defined function to resume progress - - render() { - let progressFileImage = this.info["banner-image-path"] || ""; - - if (progressFileImage === "") { - progressFileImage = html` - Dataset banner image placeholder - `; - } else { - progressFileImage = html` - Dataset banner image - `; - } - const progressFileName = this.info.project["name"] || ""; - const progressFileSubtitle = this.info.project.NWBFile?.["lab"] || this.info.project.NWBFile?.["institution"]; - // const progressFileOwnerName = - // this.info["pi-owner"]["name"] || "Not designated yet"; - const progressFileLastModified = new Date(this.info["last-modified"]).toLocaleString([], { - year: "numeric", - month: "numeric", - day: "numeric", - }); - const savedUploadDataProgress = - this.info["previously-uploaded-data"] && Object.keys(this.info["previously-uploaded-data"]).length > 0; - - return html` -
      - ${progressFileImage /* banner image */} - -
      -
      -

      - ${progressFileName} -

      -
      -
      - ${progressFileSubtitle - ? html` - ${progressFileSubtitle.length > 70 - ? `${progressFileSubtitle.substring(0, 70)}...` - : progressFileSubtitle} - ` - : ""} -
      -
      -

      - -

      -

      ${progressFileLastModified}

      -
      -
      -
      - ${html` - - `} -

      progress.deleteProgressCard(ev.target)} - > - - Delete pipeline -

      -
      -
      - `; - } -} - -customElements.get("nwb-progress-card") || customElements.define("nwb-progress-card", ProgressCard); +import { html, LitElement } from "lit"; +import * as progress from "../../../progress/index.js"; + +export class ProgressCard extends LitElement { + static get properties() { + return { + info: { type: Object }, + }; + } + + constructor(info) { + super(); + this.info = info; + } + + createRenderRoot() { + return this; + } + + updated() { + this.style.width = "100%"; + } + + resume = () => {}; // User-defined function to resume progress + + render() { + let progressFileImage = this.info["banner-image-path"] || ""; + + if (progressFileImage === "") { + progressFileImage = html` + Dataset banner image placeholder + `; + } else { + progressFileImage = html` + Dataset banner image + `; + } + const progressFileName = this.info.project["name"] || ""; + const progressFileSubtitle = this.info.project.NWBFile?.["lab"] || this.info.project.NWBFile?.["institution"]; + // const progressFileOwnerName = + // this.info["pi-owner"]["name"] || "Not designated yet"; + const progressFileLastModified = new Date(this.info["last-modified"]).toLocaleString([], { + year: "numeric", + month: "numeric", + day: "numeric", + }); + const savedUploadDataProgress = + this.info["previously-uploaded-data"] && Object.keys(this.info["previously-uploaded-data"]).length > 0; + + return html` +
      + ${progressFileImage /* banner image */} + +
      +
      +

      + ${progressFileName} +

      +
      +
      + ${progressFileSubtitle + ? html` + ${progressFileSubtitle.length > 70 + ? `${progressFileSubtitle.substring(0, 70)}...` + : progressFileSubtitle} + ` + : ""} +
      +
      +

      + +

      +

      ${progressFileLastModified}

      +
      +
      +
      + ${html` + + `} +

      progress.deleteProgressCard(ev.target)} + > + + Delete pipeline +

      +
      +
      + `; + } +} + +customElements.get("nwb-progress-card") || customElements.define("nwb-progress-card", ProgressCard); diff --git a/src/electron/renderer/src/stories/pages/guided-mode/Review.stories.js b/src/electron/renderer/src/stories/pages/guided-mode/Review.stories.js index c21f5a3de..8790a9a28 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/Review.stories.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/Review.stories.js @@ -1,14 +1,14 @@ -import { globalState, PageTemplate } from "./storyStates"; - -export default { - title: "Pages/Guided Mode/Review", - parameters: { - chromatic: { disableSnapshot: false }, - }, -}; - -export const Default = PageTemplate.bind({}); -Default.args = { - activePage: "//review", - globalState, -}; +import { globalState, PageTemplate } from "./storyStates"; + +export default { + title: "Pages/Guided Mode/Review", + parameters: { + chromatic: { disableSnapshot: false }, + }, +}; + +export const Default = PageTemplate.bind({}); +Default.args = { + activePage: "//review", + globalState, +}; diff --git a/src/electron/renderer/src/stories/pages/guided-mode/SourceData.stories.js b/src/electron/renderer/src/stories/pages/guided-mode/SourceData.stories.js index 348d1fc09..9bcaa0373 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/SourceData.stories.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/SourceData.stories.js @@ -1,426 +1,426 @@ -import { globalState, PageTemplate } from "./storyStates"; -import SpikeGLXRecordingInterfaceSchema from "../../../../../../schemas/json/generated/SpikeGLXRecordingInterface.json"; -import SpikeGLXNIDQInterfaceSchema from "../../../../../../schemas/json/generated/SpikeGLXNIDQInterface.json"; -import PhySortingInterfaceSchema from "../../../../../../schemas/json/generated/PhySortingInterface.json"; -import NeuroScopeRecordingInterfaceSchema from "../../../../../../schemas/json/generated/NeuroScopeRecordingInterface.json"; -import NeuroScopeLFPInterfaceSchema from "../../../../../../schemas/json/generated/NeuroScopeLFPInterface.json"; -import NeuroScopeSortingInterfaceSchema from "../../../../../../schemas/json/generated/NeuroScopeSortingInterface.json"; -import BiocamRecordingInterfaceSchema from "../../../../../../schemas/json/generated/BiocamRecordingInterface.json"; -import IntanRecordingInterfaceSchema from "../../../../../../schemas/json/generated/IntanRecordingInterface.json"; -import OpenEphysRecordingInterfaceSchema from "../../../../../../schemas/json/generated/OpenEphysRecordingInterface.json"; -import BlackrockRecordingInterfaceSchema from "../../../../../../schemas/json/generated/BlackrockRecordingInterface.json"; -import BlackrockSortingInterfaceSchema from "../../../../../../schemas/json/generated/BlackrockSortingInterface.json"; -import CellExplorerSortingInterfaceSchema from "../../../../../../schemas/json/generated/CellExplorerSortingInterface.json"; -import KiloSortSortingInterfaceSchema from "../../../../../../schemas/json/generated/KiloSortSortingInterface.json"; -import TdtRecordingInterfaceSchema from "../../../../../../schemas/json/generated/TdtRecordingInterface.json"; -import Spike2RecordingInterfaceSchema from "../../../../../../schemas/json/generated/Spike2RecordingInterface.json"; -import BrukerTiffSinglePlaneImagingInterfaceSchema from "../../../../../../schemas/json/generated/BrukerTiffSinglePlaneImagingInterface.json"; -import ExtractSegmentationInterfaceSchema from "../../../../../../schemas/json/generated/ExtractSegmentationInterface.json"; -import CnmfeSegmentationInterfaceSchema from "../../../../../../schemas/json/generated/CnmfeSegmentationInterface.json"; -import BrukerTiffMultiPlaneImagingInterfaceSchema from "../../../../../../schemas/json/generated/BrukerTiffMultiPlaneImagingInterface.json"; -import MicroManagerTiffImagingInterfaceSchema from "../../../../../../schemas/json/generated/MicroManagerTiffImagingInterface.json"; -import ScanImageImagingInterfaceSchema from "../../../../../../schemas/json/generated/ScanImageImagingInterface.json"; -import TiffImagingInterfaceSchema from "../../../../../../schemas/json/generated/TiffImagingInterface.json"; -import MiniscopeImagingInterfaceSchema from "../../../../../../schemas/json/generated/MiniscopeImagingInterface.json"; -import SbxImagingInterfaceSchema from "../../../../../../schemas/json/generated/SbxImagingInterface.json"; -import CaimanSegmentationInterfaceSchema from "../../../../../../schemas/json/generated/CaimanSegmentationInterface.json"; -import MCSRawRecordingInterfaceSchema from "../../../../../../schemas/json/generated/MCSRawRecordingInterface.json"; -import MEArecRecordingInterfaceSchema from "../../../../../../schemas/json/generated/MEArecRecordingInterface.json"; -import PlexonRecordingInterfaceSchema from "../../../../../../schemas/json/generated/PlexonRecordingInterface.json"; -import PlexonSortingInterfaceSchema from "../../../../../../schemas/json/generated/PlexonSortingInterface.json"; -import AxonaRecordingInterfaceSchema from "../../../../../../schemas/json/generated/AxonaRecordingInterface.json"; -import VideoInterfaceSchema from "../../../../../../schemas/json/generated/VideoInterface.json"; -import NeuralynxRecordingInterfaceSchema from "../../../../../../schemas/json/generated/NeuralynxRecordingInterface.json"; -import Suite2pSegmentationInterfaceSchema from "../../../../../../schemas/json/generated/Suite2pSegmentationInterface.json"; -import AlphaOmegaRecordingInterfaceSchema from "../../../../../../schemas/json/generated/AlphaOmegaRecordingInterface.json"; -import DeepLabCutInterfaceSchema from "../../../../../../schemas/json/generated/DeepLabCutInterface.json"; -import SLEAPInterfaceSchema from "../../../../../../schemas/json/generated/SLEAPInterface.json"; -import FicTracDataInterfaceSchema from "../../../../../../schemas/json/generated/FicTracDataInterface.json"; -import AudioInterfaceSchema from "../../../../../../schemas/json/generated/AudioInterface.json"; -import MiniscopeBehaviorInterfaceSchema from "../../../../../../schemas/json/generated/MiniscopeBehaviorInterface.json"; -import EDFRecordingInterfaceSchema from "../../../../../../schemas/json/generated/EDFRecordingInterface.json"; -import SpikeGLXConverterPipeSchema from "../../../../../../schemas/json/generated/SpikeGLXConverterPipe.json"; -import BrukerTiffSinglePlaneConverterSchema from "../../../../../../schemas/json/generated/BrukerTiffSinglePlaneConverter.json"; -import BrukerTiffMultiPlaneConverterSchema from "../../../../../../schemas/json/generated/BrukerTiffMultiPlaneConverter.json"; -import MiniscopeConverterSchema from "../../../../../../schemas/json/generated/MiniscopeConverter.json"; -import CellExplorerRecordingInterfaceSchema from "../../../../../../schemas/json/generated/CellExplorerRecordingInterface.json"; - -export default { - title: "Pages/Guided Mode/Source Data", - parameters: { - chromatic: { disableSnapshot: false }, - }, -}; - -const activePage = "//sourcedata"; - -const globalStateCopy = JSON.parse(JSON.stringify(globalState)); -globalStateCopy.schema.source_data.properties.SpikeGLXRecordingInterface = - SpikeGLXRecordingInterfaceSchema.properties.SpikeGLXRecordingInterface; -globalStateCopy.schema.source_data.properties.SpikeGLXNIDQInterface = - SpikeGLXNIDQInterfaceSchema.properties.SpikeGLXNIDQInterface; -globalStateCopy.schema.source_data.properties.PhySortingInterface = - PhySortingInterfaceSchema.properties.PhySortingInterface; -globalStateCopy.schema.source_data.properties.NeuroScopeRecordingInterface = - NeuroScopeRecordingInterfaceSchema.properties.NeuroScopeRecordingInterface; -globalStateCopy.schema.source_data.properties.NeuroScopeLFPInterface = - NeuroScopeLFPInterfaceSchema.properties.NeuroScopeLFPInterface; -globalStateCopy.schema.source_data.properties.NeuroScopeSortingInterface = - NeuroScopeSortingInterfaceSchema.properties.NeuroScopeSortingInterface; -globalStateCopy.schema.source_data.properties.BiocamRecordingInterface = - BiocamRecordingInterfaceSchema.properties.BiocamRecordingInterface; -globalStateCopy.schema.source_data.properties.IntanRecordingInterface = - IntanRecordingInterfaceSchema.properties.IntanRecordingInterface; -globalStateCopy.schema.source_data.properties.OpenEphysRecordingInterface = - OpenEphysRecordingInterfaceSchema.properties.OpenEphysRecordingInterface; -globalStateCopy.schema.source_data.properties.BlackrockRecordingInterface = - BlackrockRecordingInterfaceSchema.properties.BlackrockRecordingInterface; -globalStateCopy.schema.source_data.properties.BlackrockSortingInterface = - BlackrockSortingInterfaceSchema.properties.BlackrockSortingInterface; -globalStateCopy.schema.source_data.properties.CellExplorerSortingInterface = - CellExplorerSortingInterfaceSchema.properties.CellExplorerSortingInterface; -globalStateCopy.schema.source_data.properties.KiloSortSortingInterface = - KiloSortSortingInterfaceSchema.properties.KiloSortSortingInterface; -globalStateCopy.schema.source_data.properties.TdtRecordingInterface = - TdtRecordingInterfaceSchema.properties.TdtRecordingInterface; -globalStateCopy.schema.source_data.properties.Spike2RecordingInterface = - Spike2RecordingInterfaceSchema.properties.Spike2RecordingInterface; -globalStateCopy.schema.source_data.properties.BrukerTiffSinglePlaneImagingInterface = - BrukerTiffSinglePlaneImagingInterfaceSchema.properties.BrukerTiffSinglePlaneImagingInterface; -globalStateCopy.schema.source_data.properties.ExtractSegmentationInterface = - ExtractSegmentationInterfaceSchema.properties.ExtractSegmentationInterface; -globalStateCopy.schema.source_data.properties.CnmfeSegmentationInterface = - CnmfeSegmentationInterfaceSchema.properties.CnmfeSegmentationInterface; -globalStateCopy.schema.source_data.properties.BrukerTiffMultiPlaneImagingInterface = - BrukerTiffMultiPlaneImagingInterfaceSchema.properties.BrukerTiffMultiPlaneImagingInterface; -globalStateCopy.schema.source_data.properties.MicroManagerTiffImagingInterface = - MicroManagerTiffImagingInterfaceSchema.properties.MicroManagerTiffImagingInterface; -globalStateCopy.schema.source_data.properties.ScanImageImagingInterface = - ScanImageImagingInterfaceSchema.properties.ScanImageImagingInterface; -globalStateCopy.schema.source_data.properties.TiffImagingInterface = - TiffImagingInterfaceSchema.properties.TiffImagingInterface; -globalStateCopy.schema.source_data.properties.MiniscopeImagingInterface = - MiniscopeImagingInterfaceSchema.properties.MiniscopeImagingInterface; -globalStateCopy.schema.source_data.properties.SbxImagingInterface = - SbxImagingInterfaceSchema.properties.SbxImagingInterface; -globalStateCopy.schema.source_data.properties.CaimanSegmentationInterface = - CaimanSegmentationInterfaceSchema.properties.CaimanSegmentationInterface; -globalStateCopy.schema.source_data.properties.MCSRawRecordingInterface = - MCSRawRecordingInterfaceSchema.properties.MCSRawRecordingInterface; -globalStateCopy.schema.source_data.properties.MEArecRecordingInterface = - MEArecRecordingInterfaceSchema.properties.MEArecRecordingInterface; -globalStateCopy.schema.source_data.properties.PlexonRecordingInterface = - PlexonRecordingInterfaceSchema.properties.PlexonRecordingInterface; -globalStateCopy.schema.source_data.properties.PlexonSortingInterface = - PlexonSortingInterfaceSchema.properties.PlexonSortingInterface; -globalStateCopy.schema.source_data.properties.AxonaRecordingInterface = - AxonaRecordingInterfaceSchema.properties.AxonaRecordingInterface; -globalStateCopy.schema.source_data.properties.VideoInterface = VideoInterfaceSchema.properties.VideoInterface; -globalStateCopy.schema.source_data.properties.NeuralynxRecordingInterface = - NeuralynxRecordingInterfaceSchema.properties.NeuralynxRecordingInterface; -globalStateCopy.schema.source_data.properties.Suite2pSegmentationInterface = - Suite2pSegmentationInterfaceSchema.properties.Suite2pSegmentationInterface; -globalStateCopy.schema.source_data.properties.AlphaOmegaRecordingInterface = - AlphaOmegaRecordingInterfaceSchema.properties.AlphaOmegaRecordingInterface; -globalStateCopy.schema.source_data.properties.DeepLabCutInterface = - DeepLabCutInterfaceSchema.properties.DeepLabCutInterface; -globalStateCopy.schema.source_data.properties.SLEAPInterface = SLEAPInterfaceSchema.properties.SLEAPInterface; -globalStateCopy.schema.source_data.properties.FicTracDataInterface = - FicTracDataInterfaceSchema.properties.FicTracDataInterface; -globalStateCopy.schema.source_data.properties.AudioInterface = AudioInterfaceSchema.properties.AudioInterface; -globalStateCopy.schema.source_data.properties.MiniscopeBehaviorInterface = - MiniscopeBehaviorInterfaceSchema.properties.MiniscopeBehaviorInterface; -globalStateCopy.schema.source_data.properties.EDFRecordingInterface = - EDFRecordingInterfaceSchema.properties.EDFRecordingInterface; -globalStateCopy.schema.source_data.properties.SpikeGLXConverterPipe = - SpikeGLXConverterPipeSchema.properties.SpikeGLXConverterPipe; -globalStateCopy.schema.source_data.properties.BrukerTiffSinglePlaneConverter = - BrukerTiffSinglePlaneConverterSchema.properties.BrukerTiffSinglePlaneConverter; -globalStateCopy.schema.source_data.properties.BrukerTiffMultiPlaneConverter = - BrukerTiffMultiPlaneConverterSchema.properties.BrukerTiffMultiPlaneConverter; -globalStateCopy.schema.source_data.properties.MiniscopeConverter = - MiniscopeConverterSchema.properties.MiniscopeConverter; -globalStateCopy.schema.source_data.properties.CellExplorerRecordingInterface = - CellExplorerRecordingInterfaceSchema.properties.CellExplorerRecordingInterface; - -const results = globalStateCopy.results; -for (let sub in results) { - for (let ses in results[sub]) - results[sub][ses].source_data = { SpikeGLXNIDQInterface: { file_path: "/dummy/file/path" } }; -} - -export const All = PageTemplate.bind({}); -All.args = { activePage, globalState: globalStateCopy }; - -export const SpikeGLXRecordingInterface = PageTemplate.bind({}); -const SpikeGLXRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -SpikeGLXRecordingInterfaceGlobalCopy.interfaces.interface = SpikeGLXRecordingInterface; -SpikeGLXRecordingInterfaceGlobalCopy.schema.source_data = SpikeGLXRecordingInterfaceSchema; -SpikeGLXRecordingInterface.args = { activePage, globalState: SpikeGLXRecordingInterfaceGlobalCopy }; - -export const SpikeGLXNIDQInterface = PageTemplate.bind({}); -const SpikeGLXNIDQInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -SpikeGLXNIDQInterfaceGlobalCopy.interfaces.interface = SpikeGLXNIDQInterface; -SpikeGLXNIDQInterfaceGlobalCopy.schema.source_data = SpikeGLXNIDQInterfaceSchema; -SpikeGLXNIDQInterface.args = { activePage, globalState: SpikeGLXNIDQInterfaceGlobalCopy }; - -export const PhySortingInterface = PageTemplate.bind({}); -const PhySortingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -PhySortingInterfaceGlobalCopy.interfaces.interface = PhySortingInterface; -PhySortingInterfaceGlobalCopy.schema.source_data = PhySortingInterfaceSchema; -PhySortingInterface.args = { activePage, globalState: PhySortingInterfaceGlobalCopy }; - -export const NeuroScopeRecordingInterface = PageTemplate.bind({}); -const NeuroScopeRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -NeuroScopeRecordingInterfaceGlobalCopy.interfaces.interface = NeuroScopeRecordingInterface; -NeuroScopeRecordingInterfaceGlobalCopy.schema.source_data = NeuroScopeRecordingInterfaceSchema; -NeuroScopeRecordingInterface.args = { activePage, globalState: NeuroScopeRecordingInterfaceGlobalCopy }; - -export const NeuroScopeLFPInterface = PageTemplate.bind({}); -const NeuroScopeLFPInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -NeuroScopeLFPInterfaceGlobalCopy.interfaces.interface = NeuroScopeLFPInterface; -NeuroScopeLFPInterfaceGlobalCopy.schema.source_data = NeuroScopeLFPInterfaceSchema; -NeuroScopeLFPInterface.args = { activePage, globalState: NeuroScopeLFPInterfaceGlobalCopy }; - -export const NeuroScopeSortingInterface = PageTemplate.bind({}); -const NeuroScopeSortingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -NeuroScopeSortingInterfaceGlobalCopy.interfaces.interface = NeuroScopeSortingInterface; -NeuroScopeSortingInterfaceGlobalCopy.schema.source_data = NeuroScopeSortingInterfaceSchema; -NeuroScopeSortingInterface.args = { activePage, globalState: NeuroScopeSortingInterfaceGlobalCopy }; - -export const BiocamRecordingInterface = PageTemplate.bind({}); -const BiocamRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -BiocamRecordingInterfaceGlobalCopy.interfaces.interface = BiocamRecordingInterface; -BiocamRecordingInterfaceGlobalCopy.schema.source_data = BiocamRecordingInterfaceSchema; -BiocamRecordingInterface.args = { activePage, globalState: BiocamRecordingInterfaceGlobalCopy }; - -export const IntanRecordingInterface = PageTemplate.bind({}); -const IntanRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -IntanRecordingInterfaceGlobalCopy.interfaces.interface = IntanRecordingInterface; -IntanRecordingInterfaceGlobalCopy.schema.source_data = IntanRecordingInterfaceSchema; -IntanRecordingInterface.args = { activePage, globalState: IntanRecordingInterfaceGlobalCopy }; - -export const OpenEphysRecordingInterface = PageTemplate.bind({}); -const OpenEphysRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -OpenEphysRecordingInterfaceGlobalCopy.interfaces.interface = OpenEphysRecordingInterface; -OpenEphysRecordingInterfaceGlobalCopy.schema.source_data = OpenEphysRecordingInterfaceSchema; -OpenEphysRecordingInterface.args = { activePage, globalState: OpenEphysRecordingInterfaceGlobalCopy }; - -export const BlackrockRecordingInterface = PageTemplate.bind({}); -const BlackrockRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -BlackrockRecordingInterfaceGlobalCopy.interfaces.interface = BlackrockRecordingInterface; -BlackrockRecordingInterfaceGlobalCopy.schema.source_data = BlackrockRecordingInterfaceSchema; -BlackrockRecordingInterface.args = { activePage, globalState: BlackrockRecordingInterfaceGlobalCopy }; - -export const BlackrockSortingInterface = PageTemplate.bind({}); -const BlackrockSortingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -BlackrockSortingInterfaceGlobalCopy.interfaces.interface = BlackrockSortingInterface; -BlackrockSortingInterfaceGlobalCopy.schema.source_data = BlackrockSortingInterfaceSchema; -BlackrockSortingInterface.args = { activePage, globalState: BlackrockSortingInterfaceGlobalCopy }; - -export const CellExplorerSortingInterface = PageTemplate.bind({}); -const CellExplorerSortingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -CellExplorerSortingInterfaceGlobalCopy.interfaces.interface = CellExplorerSortingInterface; -CellExplorerSortingInterfaceGlobalCopy.schema.source_data = CellExplorerSortingInterfaceSchema; -CellExplorerSortingInterface.args = { activePage, globalState: CellExplorerSortingInterfaceGlobalCopy }; - -export const KiloSortSortingInterface = PageTemplate.bind({}); -const KiloSortSortingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -KiloSortSortingInterfaceGlobalCopy.interfaces.interface = KiloSortSortingInterface; -KiloSortSortingInterfaceGlobalCopy.schema.source_data = KiloSortSortingInterfaceSchema; -KiloSortSortingInterface.args = { activePage, globalState: KiloSortSortingInterfaceGlobalCopy }; - -export const TdtRecordingInterface = PageTemplate.bind({}); -const TdtRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -TdtRecordingInterfaceGlobalCopy.interfaces.interface = TdtRecordingInterface; -TdtRecordingInterfaceGlobalCopy.schema.source_data = TdtRecordingInterfaceSchema; -TdtRecordingInterface.args = { activePage, globalState: TdtRecordingInterfaceGlobalCopy }; - -export const Spike2RecordingInterface = PageTemplate.bind({}); -const Spike2RecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -Spike2RecordingInterfaceGlobalCopy.interfaces.interface = Spike2RecordingInterface; -Spike2RecordingInterfaceGlobalCopy.schema.source_data = Spike2RecordingInterfaceSchema; -Spike2RecordingInterface.args = { activePage, globalState: Spike2RecordingInterfaceGlobalCopy }; - -export const BrukerTiffSinglePlaneImagingInterface = PageTemplate.bind({}); -const BrukerTiffSinglePlaneImagingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -BrukerTiffSinglePlaneImagingInterfaceGlobalCopy.interfaces.interface = BrukerTiffSinglePlaneImagingInterface; -BrukerTiffSinglePlaneImagingInterfaceGlobalCopy.schema.source_data = BrukerTiffSinglePlaneImagingInterfaceSchema; -BrukerTiffSinglePlaneImagingInterface.args = { - activePage, - globalState: BrukerTiffSinglePlaneImagingInterfaceGlobalCopy, -}; - -export const ExtractSegmentationInterface = PageTemplate.bind({}); -const ExtractSegmentationInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -ExtractSegmentationInterfaceGlobalCopy.interfaces.interface = ExtractSegmentationInterface; -ExtractSegmentationInterfaceGlobalCopy.schema.source_data = ExtractSegmentationInterfaceSchema; -ExtractSegmentationInterface.args = { activePage, globalState: ExtractSegmentationInterfaceGlobalCopy }; - -export const CnmfeSegmentationInterface = PageTemplate.bind({}); -const CnmfeSegmentationInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -CnmfeSegmentationInterfaceGlobalCopy.interfaces.interface = CnmfeSegmentationInterface; -CnmfeSegmentationInterfaceGlobalCopy.schema.source_data = CnmfeSegmentationInterfaceSchema; -CnmfeSegmentationInterface.args = { activePage, globalState: CnmfeSegmentationInterfaceGlobalCopy }; - -export const BrukerTiffMultiPlaneImagingInterface = PageTemplate.bind({}); -const BrukerTiffMultiPlaneImagingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -BrukerTiffMultiPlaneImagingInterfaceGlobalCopy.interfaces.interface = BrukerTiffMultiPlaneImagingInterface; -BrukerTiffMultiPlaneImagingInterfaceGlobalCopy.schema.source_data = BrukerTiffMultiPlaneImagingInterfaceSchema; -BrukerTiffMultiPlaneImagingInterface.args = { activePage, globalState: BrukerTiffMultiPlaneImagingInterfaceGlobalCopy }; - -export const MicroManagerTiffImagingInterface = PageTemplate.bind({}); -const MicroManagerTiffImagingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -MicroManagerTiffImagingInterfaceGlobalCopy.interfaces.interface = MicroManagerTiffImagingInterface; -MicroManagerTiffImagingInterfaceGlobalCopy.schema.source_data = MicroManagerTiffImagingInterfaceSchema; -MicroManagerTiffImagingInterface.args = { activePage, globalState: MicroManagerTiffImagingInterfaceGlobalCopy }; - -export const ScanImageImagingInterface = PageTemplate.bind({}); -const ScanImageImagingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -ScanImageImagingInterfaceGlobalCopy.interfaces.interface = ScanImageImagingInterface; -ScanImageImagingInterfaceGlobalCopy.schema.source_data = ScanImageImagingInterfaceSchema; -ScanImageImagingInterface.args = { activePage, globalState: ScanImageImagingInterfaceGlobalCopy }; - -export const TiffImagingInterface = PageTemplate.bind({}); -const TiffImagingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -TiffImagingInterfaceGlobalCopy.interfaces.interface = TiffImagingInterface; -TiffImagingInterfaceGlobalCopy.schema.source_data = TiffImagingInterfaceSchema; -TiffImagingInterface.args = { activePage, globalState: TiffImagingInterfaceGlobalCopy }; - -export const MiniscopeImagingInterface = PageTemplate.bind({}); -const MiniscopeImagingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -MiniscopeImagingInterfaceGlobalCopy.interfaces.interface = MiniscopeImagingInterface; -MiniscopeImagingInterfaceGlobalCopy.schema.source_data = MiniscopeImagingInterfaceSchema; -MiniscopeImagingInterface.args = { activePage, globalState: MiniscopeImagingInterfaceGlobalCopy }; - -export const SbxImagingInterface = PageTemplate.bind({}); -const SbxImagingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -SbxImagingInterfaceGlobalCopy.interfaces.interface = SbxImagingInterface; -SbxImagingInterfaceGlobalCopy.schema.source_data = SbxImagingInterfaceSchema; -SbxImagingInterface.args = { activePage, globalState: SbxImagingInterfaceGlobalCopy }; - -export const CaimanSegmentationInterface = PageTemplate.bind({}); -const CaimanSegmentationInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -CaimanSegmentationInterfaceGlobalCopy.interfaces.interface = CaimanSegmentationInterface; -CaimanSegmentationInterfaceGlobalCopy.schema.source_data = CaimanSegmentationInterfaceSchema; -CaimanSegmentationInterface.args = { activePage, globalState: CaimanSegmentationInterfaceGlobalCopy }; - -export const MCSRawRecordingInterface = PageTemplate.bind({}); -const MCSRawRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -MCSRawRecordingInterfaceGlobalCopy.interfaces.interface = MCSRawRecordingInterface; -MCSRawRecordingInterfaceGlobalCopy.schema.source_data = MCSRawRecordingInterfaceSchema; -MCSRawRecordingInterface.args = { activePage, globalState: MCSRawRecordingInterfaceGlobalCopy }; - -export const MEArecRecordingInterface = PageTemplate.bind({}); -const MEArecRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -MEArecRecordingInterfaceGlobalCopy.interfaces.interface = MEArecRecordingInterface; -MEArecRecordingInterfaceGlobalCopy.schema.source_data = MEArecRecordingInterfaceSchema; -MEArecRecordingInterface.args = { activePage, globalState: MEArecRecordingInterfaceGlobalCopy }; - -export const PlexonRecordingInterface = PageTemplate.bind({}); -const PlexonRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -PlexonRecordingInterfaceGlobalCopy.interfaces.interface = PlexonRecordingInterface; -PlexonRecordingInterfaceGlobalCopy.schema.source_data = PlexonRecordingInterfaceSchema; -PlexonRecordingInterface.args = { activePage, globalState: PlexonRecordingInterfaceGlobalCopy }; - -export const PlexonSortingInterface = PageTemplate.bind({}); -const PlexonSortingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -PlexonSortingInterfaceGlobalCopy.interfaces.interface = PlexonSortingInterface; -PlexonSortingInterfaceGlobalCopy.schema.source_data = PlexonSortingInterfaceSchema; -PlexonSortingInterface.args = { activePage, globalState: PlexonSortingInterfaceGlobalCopy }; - -export const AxonaRecordingInterface = PageTemplate.bind({}); -const AxonaRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -AxonaRecordingInterfaceGlobalCopy.interfaces.interface = AxonaRecordingInterface; -AxonaRecordingInterfaceGlobalCopy.schema.source_data = AxonaRecordingInterfaceSchema; -AxonaRecordingInterface.args = { activePage, globalState: AxonaRecordingInterfaceGlobalCopy }; - -export const VideoInterface = PageTemplate.bind({}); -const VideoInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -VideoInterfaceGlobalCopy.interfaces.interface = VideoInterface; -VideoInterfaceGlobalCopy.schema.source_data = VideoInterfaceSchema; -VideoInterface.args = { activePage, globalState: VideoInterfaceGlobalCopy }; - -export const NeuralynxRecordingInterface = PageTemplate.bind({}); -const NeuralynxRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -NeuralynxRecordingInterfaceGlobalCopy.interfaces.interface = NeuralynxRecordingInterface; -NeuralynxRecordingInterfaceGlobalCopy.schema.source_data = NeuralynxRecordingInterfaceSchema; -NeuralynxRecordingInterface.args = { activePage, globalState: NeuralynxRecordingInterfaceGlobalCopy }; - -export const Suite2pSegmentationInterface = PageTemplate.bind({}); -const Suite2pSegmentationInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -Suite2pSegmentationInterfaceGlobalCopy.interfaces.interface = Suite2pSegmentationInterface; -Suite2pSegmentationInterfaceGlobalCopy.schema.source_data = Suite2pSegmentationInterfaceSchema; -Suite2pSegmentationInterface.args = { activePage, globalState: Suite2pSegmentationInterfaceGlobalCopy }; - -export const AlphaOmegaRecordingInterface = PageTemplate.bind({}); -const AlphaOmegaRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -AlphaOmegaRecordingInterfaceGlobalCopy.interfaces.interface = AlphaOmegaRecordingInterface; -AlphaOmegaRecordingInterfaceGlobalCopy.schema.source_data = AlphaOmegaRecordingInterfaceSchema; -AlphaOmegaRecordingInterface.args = { activePage, globalState: AlphaOmegaRecordingInterfaceGlobalCopy }; - -export const DeepLabCutInterface = PageTemplate.bind({}); -const DeepLabCutInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -DeepLabCutInterfaceGlobalCopy.interfaces.interface = DeepLabCutInterface; -DeepLabCutInterfaceGlobalCopy.schema.source_data = DeepLabCutInterfaceSchema; -DeepLabCutInterface.args = { activePage, globalState: DeepLabCutInterfaceGlobalCopy }; - -export const SLEAPInterface = PageTemplate.bind({}); -const SLEAPInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -SLEAPInterfaceGlobalCopy.interfaces.interface = SLEAPInterface; -SLEAPInterfaceGlobalCopy.schema.source_data = SLEAPInterfaceSchema; -SLEAPInterface.args = { activePage, globalState: SLEAPInterfaceGlobalCopy }; - -export const FicTracDataInterface = PageTemplate.bind({}); -const FicTracDataInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -FicTracDataInterfaceGlobalCopy.interfaces.interface = FicTracDataInterface; -FicTracDataInterfaceGlobalCopy.schema.source_data = FicTracDataInterfaceSchema; -FicTracDataInterface.args = { activePage, globalState: FicTracDataInterfaceGlobalCopy }; - -export const AudioInterface = PageTemplate.bind({}); -const AudioInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -AudioInterfaceGlobalCopy.interfaces.interface = AudioInterface; -AudioInterfaceGlobalCopy.schema.source_data = AudioInterfaceSchema; -AudioInterface.args = { activePage, globalState: AudioInterfaceGlobalCopy }; - -export const MiniscopeBehaviorInterface = PageTemplate.bind({}); -const MiniscopeBehaviorInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -MiniscopeBehaviorInterfaceGlobalCopy.interfaces.interface = MiniscopeBehaviorInterface; -MiniscopeBehaviorInterfaceGlobalCopy.schema.source_data = MiniscopeBehaviorInterfaceSchema; -MiniscopeBehaviorInterface.args = { activePage, globalState: MiniscopeBehaviorInterfaceGlobalCopy }; - -export const EDFRecordingInterface = PageTemplate.bind({}); -const EDFRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -EDFRecordingInterfaceGlobalCopy.interfaces.interface = EDFRecordingInterface; -EDFRecordingInterfaceGlobalCopy.schema.source_data = EDFRecordingInterfaceSchema; -EDFRecordingInterface.args = { activePage, globalState: EDFRecordingInterfaceGlobalCopy }; - -export const SpikeGLXConverterPipe = PageTemplate.bind({}); -const SpikeGLXConverterPipeGlobalCopy = JSON.parse(JSON.stringify(globalState)); -SpikeGLXConverterPipeGlobalCopy.interfaces.interface = SpikeGLXConverterPipe; -SpikeGLXConverterPipeGlobalCopy.schema.source_data = SpikeGLXConverterPipeSchema; -SpikeGLXConverterPipe.args = { activePage, globalState: SpikeGLXConverterPipeGlobalCopy }; - -export const BrukerTiffSinglePlaneConverter = PageTemplate.bind({}); -const BrukerTiffSinglePlaneConverterGlobalCopy = JSON.parse(JSON.stringify(globalState)); -BrukerTiffSinglePlaneConverterGlobalCopy.interfaces.interface = BrukerTiffSinglePlaneConverter; -BrukerTiffSinglePlaneConverterGlobalCopy.schema.source_data = BrukerTiffSinglePlaneConverterSchema; -BrukerTiffSinglePlaneConverter.args = { activePage, globalState: BrukerTiffSinglePlaneConverterGlobalCopy }; - -export const BrukerTiffMultiPlaneConverter = PageTemplate.bind({}); -const BrukerTiffMultiPlaneConverterGlobalCopy = JSON.parse(JSON.stringify(globalState)); -BrukerTiffMultiPlaneConverterGlobalCopy.interfaces.interface = BrukerTiffMultiPlaneConverter; -BrukerTiffMultiPlaneConverterGlobalCopy.schema.source_data = BrukerTiffMultiPlaneConverterSchema; -BrukerTiffMultiPlaneConverter.args = { activePage, globalState: BrukerTiffMultiPlaneConverterGlobalCopy }; - -export const MiniscopeConverter = PageTemplate.bind({}); -const MiniscopeConverterGlobalCopy = JSON.parse(JSON.stringify(globalState)); -MiniscopeConverterGlobalCopy.interfaces.interface = MiniscopeConverter; -MiniscopeConverterGlobalCopy.schema.source_data = MiniscopeConverterSchema; -MiniscopeConverter.args = { activePage, globalState: MiniscopeConverterGlobalCopy }; - -export const CellExplorerRecordingInterface = PageTemplate.bind({}); -const CellExplorerRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); -CellExplorerRecordingInterfaceGlobalCopy.interfaces.interface = CellExplorerRecordingInterface; -CellExplorerRecordingInterfaceGlobalCopy.schema.source_data = CellExplorerRecordingInterfaceSchema; -CellExplorerRecordingInterface.args = { activePage, globalState: CellExplorerRecordingInterfaceGlobalCopy }; +import { globalState, PageTemplate } from "./storyStates"; +import SpikeGLXRecordingInterfaceSchema from "../../../../../../schemas/json/generated/SpikeGLXRecordingInterface.json"; +import SpikeGLXNIDQInterfaceSchema from "../../../../../../schemas/json/generated/SpikeGLXNIDQInterface.json"; +import PhySortingInterfaceSchema from "../../../../../../schemas/json/generated/PhySortingInterface.json"; +import NeuroScopeRecordingInterfaceSchema from "../../../../../../schemas/json/generated/NeuroScopeRecordingInterface.json"; +import NeuroScopeLFPInterfaceSchema from "../../../../../../schemas/json/generated/NeuroScopeLFPInterface.json"; +import NeuroScopeSortingInterfaceSchema from "../../../../../../schemas/json/generated/NeuroScopeSortingInterface.json"; +import BiocamRecordingInterfaceSchema from "../../../../../../schemas/json/generated/BiocamRecordingInterface.json"; +import IntanRecordingInterfaceSchema from "../../../../../../schemas/json/generated/IntanRecordingInterface.json"; +import OpenEphysRecordingInterfaceSchema from "../../../../../../schemas/json/generated/OpenEphysRecordingInterface.json"; +import BlackrockRecordingInterfaceSchema from "../../../../../../schemas/json/generated/BlackrockRecordingInterface.json"; +import BlackrockSortingInterfaceSchema from "../../../../../../schemas/json/generated/BlackrockSortingInterface.json"; +import CellExplorerSortingInterfaceSchema from "../../../../../../schemas/json/generated/CellExplorerSortingInterface.json"; +import KiloSortSortingInterfaceSchema from "../../../../../../schemas/json/generated/KiloSortSortingInterface.json"; +import TdtRecordingInterfaceSchema from "../../../../../../schemas/json/generated/TdtRecordingInterface.json"; +import Spike2RecordingInterfaceSchema from "../../../../../../schemas/json/generated/Spike2RecordingInterface.json"; +import BrukerTiffSinglePlaneImagingInterfaceSchema from "../../../../../../schemas/json/generated/BrukerTiffSinglePlaneImagingInterface.json"; +import ExtractSegmentationInterfaceSchema from "../../../../../../schemas/json/generated/ExtractSegmentationInterface.json"; +import CnmfeSegmentationInterfaceSchema from "../../../../../../schemas/json/generated/CnmfeSegmentationInterface.json"; +import BrukerTiffMultiPlaneImagingInterfaceSchema from "../../../../../../schemas/json/generated/BrukerTiffMultiPlaneImagingInterface.json"; +import MicroManagerTiffImagingInterfaceSchema from "../../../../../../schemas/json/generated/MicroManagerTiffImagingInterface.json"; +import ScanImageImagingInterfaceSchema from "../../../../../../schemas/json/generated/ScanImageImagingInterface.json"; +import TiffImagingInterfaceSchema from "../../../../../../schemas/json/generated/TiffImagingInterface.json"; +import MiniscopeImagingInterfaceSchema from "../../../../../../schemas/json/generated/MiniscopeImagingInterface.json"; +import SbxImagingInterfaceSchema from "../../../../../../schemas/json/generated/SbxImagingInterface.json"; +import CaimanSegmentationInterfaceSchema from "../../../../../../schemas/json/generated/CaimanSegmentationInterface.json"; +import MCSRawRecordingInterfaceSchema from "../../../../../../schemas/json/generated/MCSRawRecordingInterface.json"; +import MEArecRecordingInterfaceSchema from "../../../../../../schemas/json/generated/MEArecRecordingInterface.json"; +import PlexonRecordingInterfaceSchema from "../../../../../../schemas/json/generated/PlexonRecordingInterface.json"; +import PlexonSortingInterfaceSchema from "../../../../../../schemas/json/generated/PlexonSortingInterface.json"; +import AxonaRecordingInterfaceSchema from "../../../../../../schemas/json/generated/AxonaRecordingInterface.json"; +import VideoInterfaceSchema from "../../../../../../schemas/json/generated/VideoInterface.json"; +import NeuralynxRecordingInterfaceSchema from "../../../../../../schemas/json/generated/NeuralynxRecordingInterface.json"; +import Suite2pSegmentationInterfaceSchema from "../../../../../../schemas/json/generated/Suite2pSegmentationInterface.json"; +import AlphaOmegaRecordingInterfaceSchema from "../../../../../../schemas/json/generated/AlphaOmegaRecordingInterface.json"; +import DeepLabCutInterfaceSchema from "../../../../../../schemas/json/generated/DeepLabCutInterface.json"; +import SLEAPInterfaceSchema from "../../../../../../schemas/json/generated/SLEAPInterface.json"; +import FicTracDataInterfaceSchema from "../../../../../../schemas/json/generated/FicTracDataInterface.json"; +import AudioInterfaceSchema from "../../../../../../schemas/json/generated/AudioInterface.json"; +import MiniscopeBehaviorInterfaceSchema from "../../../../../../schemas/json/generated/MiniscopeBehaviorInterface.json"; +import EDFRecordingInterfaceSchema from "../../../../../../schemas/json/generated/EDFRecordingInterface.json"; +import SpikeGLXConverterPipeSchema from "../../../../../../schemas/json/generated/SpikeGLXConverterPipe.json"; +import BrukerTiffSinglePlaneConverterSchema from "../../../../../../schemas/json/generated/BrukerTiffSinglePlaneConverter.json"; +import BrukerTiffMultiPlaneConverterSchema from "../../../../../../schemas/json/generated/BrukerTiffMultiPlaneConverter.json"; +import MiniscopeConverterSchema from "../../../../../../schemas/json/generated/MiniscopeConverter.json"; +import CellExplorerRecordingInterfaceSchema from "../../../../../../schemas/json/generated/CellExplorerRecordingInterface.json"; + +export default { + title: "Pages/Guided Mode/Source Data", + parameters: { + chromatic: { disableSnapshot: false }, + }, +}; + +const activePage = "//sourcedata"; + +const globalStateCopy = JSON.parse(JSON.stringify(globalState)); +globalStateCopy.schema.source_data.properties.SpikeGLXRecordingInterface = + SpikeGLXRecordingInterfaceSchema.properties.SpikeGLXRecordingInterface; +globalStateCopy.schema.source_data.properties.SpikeGLXNIDQInterface = + SpikeGLXNIDQInterfaceSchema.properties.SpikeGLXNIDQInterface; +globalStateCopy.schema.source_data.properties.PhySortingInterface = + PhySortingInterfaceSchema.properties.PhySortingInterface; +globalStateCopy.schema.source_data.properties.NeuroScopeRecordingInterface = + NeuroScopeRecordingInterfaceSchema.properties.NeuroScopeRecordingInterface; +globalStateCopy.schema.source_data.properties.NeuroScopeLFPInterface = + NeuroScopeLFPInterfaceSchema.properties.NeuroScopeLFPInterface; +globalStateCopy.schema.source_data.properties.NeuroScopeSortingInterface = + NeuroScopeSortingInterfaceSchema.properties.NeuroScopeSortingInterface; +globalStateCopy.schema.source_data.properties.BiocamRecordingInterface = + BiocamRecordingInterfaceSchema.properties.BiocamRecordingInterface; +globalStateCopy.schema.source_data.properties.IntanRecordingInterface = + IntanRecordingInterfaceSchema.properties.IntanRecordingInterface; +globalStateCopy.schema.source_data.properties.OpenEphysRecordingInterface = + OpenEphysRecordingInterfaceSchema.properties.OpenEphysRecordingInterface; +globalStateCopy.schema.source_data.properties.BlackrockRecordingInterface = + BlackrockRecordingInterfaceSchema.properties.BlackrockRecordingInterface; +globalStateCopy.schema.source_data.properties.BlackrockSortingInterface = + BlackrockSortingInterfaceSchema.properties.BlackrockSortingInterface; +globalStateCopy.schema.source_data.properties.CellExplorerSortingInterface = + CellExplorerSortingInterfaceSchema.properties.CellExplorerSortingInterface; +globalStateCopy.schema.source_data.properties.KiloSortSortingInterface = + KiloSortSortingInterfaceSchema.properties.KiloSortSortingInterface; +globalStateCopy.schema.source_data.properties.TdtRecordingInterface = + TdtRecordingInterfaceSchema.properties.TdtRecordingInterface; +globalStateCopy.schema.source_data.properties.Spike2RecordingInterface = + Spike2RecordingInterfaceSchema.properties.Spike2RecordingInterface; +globalStateCopy.schema.source_data.properties.BrukerTiffSinglePlaneImagingInterface = + BrukerTiffSinglePlaneImagingInterfaceSchema.properties.BrukerTiffSinglePlaneImagingInterface; +globalStateCopy.schema.source_data.properties.ExtractSegmentationInterface = + ExtractSegmentationInterfaceSchema.properties.ExtractSegmentationInterface; +globalStateCopy.schema.source_data.properties.CnmfeSegmentationInterface = + CnmfeSegmentationInterfaceSchema.properties.CnmfeSegmentationInterface; +globalStateCopy.schema.source_data.properties.BrukerTiffMultiPlaneImagingInterface = + BrukerTiffMultiPlaneImagingInterfaceSchema.properties.BrukerTiffMultiPlaneImagingInterface; +globalStateCopy.schema.source_data.properties.MicroManagerTiffImagingInterface = + MicroManagerTiffImagingInterfaceSchema.properties.MicroManagerTiffImagingInterface; +globalStateCopy.schema.source_data.properties.ScanImageImagingInterface = + ScanImageImagingInterfaceSchema.properties.ScanImageImagingInterface; +globalStateCopy.schema.source_data.properties.TiffImagingInterface = + TiffImagingInterfaceSchema.properties.TiffImagingInterface; +globalStateCopy.schema.source_data.properties.MiniscopeImagingInterface = + MiniscopeImagingInterfaceSchema.properties.MiniscopeImagingInterface; +globalStateCopy.schema.source_data.properties.SbxImagingInterface = + SbxImagingInterfaceSchema.properties.SbxImagingInterface; +globalStateCopy.schema.source_data.properties.CaimanSegmentationInterface = + CaimanSegmentationInterfaceSchema.properties.CaimanSegmentationInterface; +globalStateCopy.schema.source_data.properties.MCSRawRecordingInterface = + MCSRawRecordingInterfaceSchema.properties.MCSRawRecordingInterface; +globalStateCopy.schema.source_data.properties.MEArecRecordingInterface = + MEArecRecordingInterfaceSchema.properties.MEArecRecordingInterface; +globalStateCopy.schema.source_data.properties.PlexonRecordingInterface = + PlexonRecordingInterfaceSchema.properties.PlexonRecordingInterface; +globalStateCopy.schema.source_data.properties.PlexonSortingInterface = + PlexonSortingInterfaceSchema.properties.PlexonSortingInterface; +globalStateCopy.schema.source_data.properties.AxonaRecordingInterface = + AxonaRecordingInterfaceSchema.properties.AxonaRecordingInterface; +globalStateCopy.schema.source_data.properties.VideoInterface = VideoInterfaceSchema.properties.VideoInterface; +globalStateCopy.schema.source_data.properties.NeuralynxRecordingInterface = + NeuralynxRecordingInterfaceSchema.properties.NeuralynxRecordingInterface; +globalStateCopy.schema.source_data.properties.Suite2pSegmentationInterface = + Suite2pSegmentationInterfaceSchema.properties.Suite2pSegmentationInterface; +globalStateCopy.schema.source_data.properties.AlphaOmegaRecordingInterface = + AlphaOmegaRecordingInterfaceSchema.properties.AlphaOmegaRecordingInterface; +globalStateCopy.schema.source_data.properties.DeepLabCutInterface = + DeepLabCutInterfaceSchema.properties.DeepLabCutInterface; +globalStateCopy.schema.source_data.properties.SLEAPInterface = SLEAPInterfaceSchema.properties.SLEAPInterface; +globalStateCopy.schema.source_data.properties.FicTracDataInterface = + FicTracDataInterfaceSchema.properties.FicTracDataInterface; +globalStateCopy.schema.source_data.properties.AudioInterface = AudioInterfaceSchema.properties.AudioInterface; +globalStateCopy.schema.source_data.properties.MiniscopeBehaviorInterface = + MiniscopeBehaviorInterfaceSchema.properties.MiniscopeBehaviorInterface; +globalStateCopy.schema.source_data.properties.EDFRecordingInterface = + EDFRecordingInterfaceSchema.properties.EDFRecordingInterface; +globalStateCopy.schema.source_data.properties.SpikeGLXConverterPipe = + SpikeGLXConverterPipeSchema.properties.SpikeGLXConverterPipe; +globalStateCopy.schema.source_data.properties.BrukerTiffSinglePlaneConverter = + BrukerTiffSinglePlaneConverterSchema.properties.BrukerTiffSinglePlaneConverter; +globalStateCopy.schema.source_data.properties.BrukerTiffMultiPlaneConverter = + BrukerTiffMultiPlaneConverterSchema.properties.BrukerTiffMultiPlaneConverter; +globalStateCopy.schema.source_data.properties.MiniscopeConverter = + MiniscopeConverterSchema.properties.MiniscopeConverter; +globalStateCopy.schema.source_data.properties.CellExplorerRecordingInterface = + CellExplorerRecordingInterfaceSchema.properties.CellExplorerRecordingInterface; + +const results = globalStateCopy.results; +for (let sub in results) { + for (let ses in results[sub]) + results[sub][ses].source_data = { SpikeGLXNIDQInterface: { file_path: "/dummy/file/path" } }; +} + +export const All = PageTemplate.bind({}); +All.args = { activePage, globalState: globalStateCopy }; + +export const SpikeGLXRecordingInterface = PageTemplate.bind({}); +const SpikeGLXRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +SpikeGLXRecordingInterfaceGlobalCopy.interfaces.interface = SpikeGLXRecordingInterface; +SpikeGLXRecordingInterfaceGlobalCopy.schema.source_data = SpikeGLXRecordingInterfaceSchema; +SpikeGLXRecordingInterface.args = { activePage, globalState: SpikeGLXRecordingInterfaceGlobalCopy }; + +export const SpikeGLXNIDQInterface = PageTemplate.bind({}); +const SpikeGLXNIDQInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +SpikeGLXNIDQInterfaceGlobalCopy.interfaces.interface = SpikeGLXNIDQInterface; +SpikeGLXNIDQInterfaceGlobalCopy.schema.source_data = SpikeGLXNIDQInterfaceSchema; +SpikeGLXNIDQInterface.args = { activePage, globalState: SpikeGLXNIDQInterfaceGlobalCopy }; + +export const PhySortingInterface = PageTemplate.bind({}); +const PhySortingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +PhySortingInterfaceGlobalCopy.interfaces.interface = PhySortingInterface; +PhySortingInterfaceGlobalCopy.schema.source_data = PhySortingInterfaceSchema; +PhySortingInterface.args = { activePage, globalState: PhySortingInterfaceGlobalCopy }; + +export const NeuroScopeRecordingInterface = PageTemplate.bind({}); +const NeuroScopeRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +NeuroScopeRecordingInterfaceGlobalCopy.interfaces.interface = NeuroScopeRecordingInterface; +NeuroScopeRecordingInterfaceGlobalCopy.schema.source_data = NeuroScopeRecordingInterfaceSchema; +NeuroScopeRecordingInterface.args = { activePage, globalState: NeuroScopeRecordingInterfaceGlobalCopy }; + +export const NeuroScopeLFPInterface = PageTemplate.bind({}); +const NeuroScopeLFPInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +NeuroScopeLFPInterfaceGlobalCopy.interfaces.interface = NeuroScopeLFPInterface; +NeuroScopeLFPInterfaceGlobalCopy.schema.source_data = NeuroScopeLFPInterfaceSchema; +NeuroScopeLFPInterface.args = { activePage, globalState: NeuroScopeLFPInterfaceGlobalCopy }; + +export const NeuroScopeSortingInterface = PageTemplate.bind({}); +const NeuroScopeSortingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +NeuroScopeSortingInterfaceGlobalCopy.interfaces.interface = NeuroScopeSortingInterface; +NeuroScopeSortingInterfaceGlobalCopy.schema.source_data = NeuroScopeSortingInterfaceSchema; +NeuroScopeSortingInterface.args = { activePage, globalState: NeuroScopeSortingInterfaceGlobalCopy }; + +export const BiocamRecordingInterface = PageTemplate.bind({}); +const BiocamRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +BiocamRecordingInterfaceGlobalCopy.interfaces.interface = BiocamRecordingInterface; +BiocamRecordingInterfaceGlobalCopy.schema.source_data = BiocamRecordingInterfaceSchema; +BiocamRecordingInterface.args = { activePage, globalState: BiocamRecordingInterfaceGlobalCopy }; + +export const IntanRecordingInterface = PageTemplate.bind({}); +const IntanRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +IntanRecordingInterfaceGlobalCopy.interfaces.interface = IntanRecordingInterface; +IntanRecordingInterfaceGlobalCopy.schema.source_data = IntanRecordingInterfaceSchema; +IntanRecordingInterface.args = { activePage, globalState: IntanRecordingInterfaceGlobalCopy }; + +export const OpenEphysRecordingInterface = PageTemplate.bind({}); +const OpenEphysRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +OpenEphysRecordingInterfaceGlobalCopy.interfaces.interface = OpenEphysRecordingInterface; +OpenEphysRecordingInterfaceGlobalCopy.schema.source_data = OpenEphysRecordingInterfaceSchema; +OpenEphysRecordingInterface.args = { activePage, globalState: OpenEphysRecordingInterfaceGlobalCopy }; + +export const BlackrockRecordingInterface = PageTemplate.bind({}); +const BlackrockRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +BlackrockRecordingInterfaceGlobalCopy.interfaces.interface = BlackrockRecordingInterface; +BlackrockRecordingInterfaceGlobalCopy.schema.source_data = BlackrockRecordingInterfaceSchema; +BlackrockRecordingInterface.args = { activePage, globalState: BlackrockRecordingInterfaceGlobalCopy }; + +export const BlackrockSortingInterface = PageTemplate.bind({}); +const BlackrockSortingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +BlackrockSortingInterfaceGlobalCopy.interfaces.interface = BlackrockSortingInterface; +BlackrockSortingInterfaceGlobalCopy.schema.source_data = BlackrockSortingInterfaceSchema; +BlackrockSortingInterface.args = { activePage, globalState: BlackrockSortingInterfaceGlobalCopy }; + +export const CellExplorerSortingInterface = PageTemplate.bind({}); +const CellExplorerSortingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +CellExplorerSortingInterfaceGlobalCopy.interfaces.interface = CellExplorerSortingInterface; +CellExplorerSortingInterfaceGlobalCopy.schema.source_data = CellExplorerSortingInterfaceSchema; +CellExplorerSortingInterface.args = { activePage, globalState: CellExplorerSortingInterfaceGlobalCopy }; + +export const KiloSortSortingInterface = PageTemplate.bind({}); +const KiloSortSortingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +KiloSortSortingInterfaceGlobalCopy.interfaces.interface = KiloSortSortingInterface; +KiloSortSortingInterfaceGlobalCopy.schema.source_data = KiloSortSortingInterfaceSchema; +KiloSortSortingInterface.args = { activePage, globalState: KiloSortSortingInterfaceGlobalCopy }; + +export const TdtRecordingInterface = PageTemplate.bind({}); +const TdtRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +TdtRecordingInterfaceGlobalCopy.interfaces.interface = TdtRecordingInterface; +TdtRecordingInterfaceGlobalCopy.schema.source_data = TdtRecordingInterfaceSchema; +TdtRecordingInterface.args = { activePage, globalState: TdtRecordingInterfaceGlobalCopy }; + +export const Spike2RecordingInterface = PageTemplate.bind({}); +const Spike2RecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +Spike2RecordingInterfaceGlobalCopy.interfaces.interface = Spike2RecordingInterface; +Spike2RecordingInterfaceGlobalCopy.schema.source_data = Spike2RecordingInterfaceSchema; +Spike2RecordingInterface.args = { activePage, globalState: Spike2RecordingInterfaceGlobalCopy }; + +export const BrukerTiffSinglePlaneImagingInterface = PageTemplate.bind({}); +const BrukerTiffSinglePlaneImagingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +BrukerTiffSinglePlaneImagingInterfaceGlobalCopy.interfaces.interface = BrukerTiffSinglePlaneImagingInterface; +BrukerTiffSinglePlaneImagingInterfaceGlobalCopy.schema.source_data = BrukerTiffSinglePlaneImagingInterfaceSchema; +BrukerTiffSinglePlaneImagingInterface.args = { + activePage, + globalState: BrukerTiffSinglePlaneImagingInterfaceGlobalCopy, +}; + +export const ExtractSegmentationInterface = PageTemplate.bind({}); +const ExtractSegmentationInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +ExtractSegmentationInterfaceGlobalCopy.interfaces.interface = ExtractSegmentationInterface; +ExtractSegmentationInterfaceGlobalCopy.schema.source_data = ExtractSegmentationInterfaceSchema; +ExtractSegmentationInterface.args = { activePage, globalState: ExtractSegmentationInterfaceGlobalCopy }; + +export const CnmfeSegmentationInterface = PageTemplate.bind({}); +const CnmfeSegmentationInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +CnmfeSegmentationInterfaceGlobalCopy.interfaces.interface = CnmfeSegmentationInterface; +CnmfeSegmentationInterfaceGlobalCopy.schema.source_data = CnmfeSegmentationInterfaceSchema; +CnmfeSegmentationInterface.args = { activePage, globalState: CnmfeSegmentationInterfaceGlobalCopy }; + +export const BrukerTiffMultiPlaneImagingInterface = PageTemplate.bind({}); +const BrukerTiffMultiPlaneImagingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +BrukerTiffMultiPlaneImagingInterfaceGlobalCopy.interfaces.interface = BrukerTiffMultiPlaneImagingInterface; +BrukerTiffMultiPlaneImagingInterfaceGlobalCopy.schema.source_data = BrukerTiffMultiPlaneImagingInterfaceSchema; +BrukerTiffMultiPlaneImagingInterface.args = { activePage, globalState: BrukerTiffMultiPlaneImagingInterfaceGlobalCopy }; + +export const MicroManagerTiffImagingInterface = PageTemplate.bind({}); +const MicroManagerTiffImagingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +MicroManagerTiffImagingInterfaceGlobalCopy.interfaces.interface = MicroManagerTiffImagingInterface; +MicroManagerTiffImagingInterfaceGlobalCopy.schema.source_data = MicroManagerTiffImagingInterfaceSchema; +MicroManagerTiffImagingInterface.args = { activePage, globalState: MicroManagerTiffImagingInterfaceGlobalCopy }; + +export const ScanImageImagingInterface = PageTemplate.bind({}); +const ScanImageImagingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +ScanImageImagingInterfaceGlobalCopy.interfaces.interface = ScanImageImagingInterface; +ScanImageImagingInterfaceGlobalCopy.schema.source_data = ScanImageImagingInterfaceSchema; +ScanImageImagingInterface.args = { activePage, globalState: ScanImageImagingInterfaceGlobalCopy }; + +export const TiffImagingInterface = PageTemplate.bind({}); +const TiffImagingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +TiffImagingInterfaceGlobalCopy.interfaces.interface = TiffImagingInterface; +TiffImagingInterfaceGlobalCopy.schema.source_data = TiffImagingInterfaceSchema; +TiffImagingInterface.args = { activePage, globalState: TiffImagingInterfaceGlobalCopy }; + +export const MiniscopeImagingInterface = PageTemplate.bind({}); +const MiniscopeImagingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +MiniscopeImagingInterfaceGlobalCopy.interfaces.interface = MiniscopeImagingInterface; +MiniscopeImagingInterfaceGlobalCopy.schema.source_data = MiniscopeImagingInterfaceSchema; +MiniscopeImagingInterface.args = { activePage, globalState: MiniscopeImagingInterfaceGlobalCopy }; + +export const SbxImagingInterface = PageTemplate.bind({}); +const SbxImagingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +SbxImagingInterfaceGlobalCopy.interfaces.interface = SbxImagingInterface; +SbxImagingInterfaceGlobalCopy.schema.source_data = SbxImagingInterfaceSchema; +SbxImagingInterface.args = { activePage, globalState: SbxImagingInterfaceGlobalCopy }; + +export const CaimanSegmentationInterface = PageTemplate.bind({}); +const CaimanSegmentationInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +CaimanSegmentationInterfaceGlobalCopy.interfaces.interface = CaimanSegmentationInterface; +CaimanSegmentationInterfaceGlobalCopy.schema.source_data = CaimanSegmentationInterfaceSchema; +CaimanSegmentationInterface.args = { activePage, globalState: CaimanSegmentationInterfaceGlobalCopy }; + +export const MCSRawRecordingInterface = PageTemplate.bind({}); +const MCSRawRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +MCSRawRecordingInterfaceGlobalCopy.interfaces.interface = MCSRawRecordingInterface; +MCSRawRecordingInterfaceGlobalCopy.schema.source_data = MCSRawRecordingInterfaceSchema; +MCSRawRecordingInterface.args = { activePage, globalState: MCSRawRecordingInterfaceGlobalCopy }; + +export const MEArecRecordingInterface = PageTemplate.bind({}); +const MEArecRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +MEArecRecordingInterfaceGlobalCopy.interfaces.interface = MEArecRecordingInterface; +MEArecRecordingInterfaceGlobalCopy.schema.source_data = MEArecRecordingInterfaceSchema; +MEArecRecordingInterface.args = { activePage, globalState: MEArecRecordingInterfaceGlobalCopy }; + +export const PlexonRecordingInterface = PageTemplate.bind({}); +const PlexonRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +PlexonRecordingInterfaceGlobalCopy.interfaces.interface = PlexonRecordingInterface; +PlexonRecordingInterfaceGlobalCopy.schema.source_data = PlexonRecordingInterfaceSchema; +PlexonRecordingInterface.args = { activePage, globalState: PlexonRecordingInterfaceGlobalCopy }; + +export const PlexonSortingInterface = PageTemplate.bind({}); +const PlexonSortingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +PlexonSortingInterfaceGlobalCopy.interfaces.interface = PlexonSortingInterface; +PlexonSortingInterfaceGlobalCopy.schema.source_data = PlexonSortingInterfaceSchema; +PlexonSortingInterface.args = { activePage, globalState: PlexonSortingInterfaceGlobalCopy }; + +export const AxonaRecordingInterface = PageTemplate.bind({}); +const AxonaRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +AxonaRecordingInterfaceGlobalCopy.interfaces.interface = AxonaRecordingInterface; +AxonaRecordingInterfaceGlobalCopy.schema.source_data = AxonaRecordingInterfaceSchema; +AxonaRecordingInterface.args = { activePage, globalState: AxonaRecordingInterfaceGlobalCopy }; + +export const VideoInterface = PageTemplate.bind({}); +const VideoInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +VideoInterfaceGlobalCopy.interfaces.interface = VideoInterface; +VideoInterfaceGlobalCopy.schema.source_data = VideoInterfaceSchema; +VideoInterface.args = { activePage, globalState: VideoInterfaceGlobalCopy }; + +export const NeuralynxRecordingInterface = PageTemplate.bind({}); +const NeuralynxRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +NeuralynxRecordingInterfaceGlobalCopy.interfaces.interface = NeuralynxRecordingInterface; +NeuralynxRecordingInterfaceGlobalCopy.schema.source_data = NeuralynxRecordingInterfaceSchema; +NeuralynxRecordingInterface.args = { activePage, globalState: NeuralynxRecordingInterfaceGlobalCopy }; + +export const Suite2pSegmentationInterface = PageTemplate.bind({}); +const Suite2pSegmentationInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +Suite2pSegmentationInterfaceGlobalCopy.interfaces.interface = Suite2pSegmentationInterface; +Suite2pSegmentationInterfaceGlobalCopy.schema.source_data = Suite2pSegmentationInterfaceSchema; +Suite2pSegmentationInterface.args = { activePage, globalState: Suite2pSegmentationInterfaceGlobalCopy }; + +export const AlphaOmegaRecordingInterface = PageTemplate.bind({}); +const AlphaOmegaRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +AlphaOmegaRecordingInterfaceGlobalCopy.interfaces.interface = AlphaOmegaRecordingInterface; +AlphaOmegaRecordingInterfaceGlobalCopy.schema.source_data = AlphaOmegaRecordingInterfaceSchema; +AlphaOmegaRecordingInterface.args = { activePage, globalState: AlphaOmegaRecordingInterfaceGlobalCopy }; + +export const DeepLabCutInterface = PageTemplate.bind({}); +const DeepLabCutInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +DeepLabCutInterfaceGlobalCopy.interfaces.interface = DeepLabCutInterface; +DeepLabCutInterfaceGlobalCopy.schema.source_data = DeepLabCutInterfaceSchema; +DeepLabCutInterface.args = { activePage, globalState: DeepLabCutInterfaceGlobalCopy }; + +export const SLEAPInterface = PageTemplate.bind({}); +const SLEAPInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +SLEAPInterfaceGlobalCopy.interfaces.interface = SLEAPInterface; +SLEAPInterfaceGlobalCopy.schema.source_data = SLEAPInterfaceSchema; +SLEAPInterface.args = { activePage, globalState: SLEAPInterfaceGlobalCopy }; + +export const FicTracDataInterface = PageTemplate.bind({}); +const FicTracDataInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +FicTracDataInterfaceGlobalCopy.interfaces.interface = FicTracDataInterface; +FicTracDataInterfaceGlobalCopy.schema.source_data = FicTracDataInterfaceSchema; +FicTracDataInterface.args = { activePage, globalState: FicTracDataInterfaceGlobalCopy }; + +export const AudioInterface = PageTemplate.bind({}); +const AudioInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +AudioInterfaceGlobalCopy.interfaces.interface = AudioInterface; +AudioInterfaceGlobalCopy.schema.source_data = AudioInterfaceSchema; +AudioInterface.args = { activePage, globalState: AudioInterfaceGlobalCopy }; + +export const MiniscopeBehaviorInterface = PageTemplate.bind({}); +const MiniscopeBehaviorInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +MiniscopeBehaviorInterfaceGlobalCopy.interfaces.interface = MiniscopeBehaviorInterface; +MiniscopeBehaviorInterfaceGlobalCopy.schema.source_data = MiniscopeBehaviorInterfaceSchema; +MiniscopeBehaviorInterface.args = { activePage, globalState: MiniscopeBehaviorInterfaceGlobalCopy }; + +export const EDFRecordingInterface = PageTemplate.bind({}); +const EDFRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +EDFRecordingInterfaceGlobalCopy.interfaces.interface = EDFRecordingInterface; +EDFRecordingInterfaceGlobalCopy.schema.source_data = EDFRecordingInterfaceSchema; +EDFRecordingInterface.args = { activePage, globalState: EDFRecordingInterfaceGlobalCopy }; + +export const SpikeGLXConverterPipe = PageTemplate.bind({}); +const SpikeGLXConverterPipeGlobalCopy = JSON.parse(JSON.stringify(globalState)); +SpikeGLXConverterPipeGlobalCopy.interfaces.interface = SpikeGLXConverterPipe; +SpikeGLXConverterPipeGlobalCopy.schema.source_data = SpikeGLXConverterPipeSchema; +SpikeGLXConverterPipe.args = { activePage, globalState: SpikeGLXConverterPipeGlobalCopy }; + +export const BrukerTiffSinglePlaneConverter = PageTemplate.bind({}); +const BrukerTiffSinglePlaneConverterGlobalCopy = JSON.parse(JSON.stringify(globalState)); +BrukerTiffSinglePlaneConverterGlobalCopy.interfaces.interface = BrukerTiffSinglePlaneConverter; +BrukerTiffSinglePlaneConverterGlobalCopy.schema.source_data = BrukerTiffSinglePlaneConverterSchema; +BrukerTiffSinglePlaneConverter.args = { activePage, globalState: BrukerTiffSinglePlaneConverterGlobalCopy }; + +export const BrukerTiffMultiPlaneConverter = PageTemplate.bind({}); +const BrukerTiffMultiPlaneConverterGlobalCopy = JSON.parse(JSON.stringify(globalState)); +BrukerTiffMultiPlaneConverterGlobalCopy.interfaces.interface = BrukerTiffMultiPlaneConverter; +BrukerTiffMultiPlaneConverterGlobalCopy.schema.source_data = BrukerTiffMultiPlaneConverterSchema; +BrukerTiffMultiPlaneConverter.args = { activePage, globalState: BrukerTiffMultiPlaneConverterGlobalCopy }; + +export const MiniscopeConverter = PageTemplate.bind({}); +const MiniscopeConverterGlobalCopy = JSON.parse(JSON.stringify(globalState)); +MiniscopeConverterGlobalCopy.interfaces.interface = MiniscopeConverter; +MiniscopeConverterGlobalCopy.schema.source_data = MiniscopeConverterSchema; +MiniscopeConverter.args = { activePage, globalState: MiniscopeConverterGlobalCopy }; + +export const CellExplorerRecordingInterface = PageTemplate.bind({}); +const CellExplorerRecordingInterfaceGlobalCopy = JSON.parse(JSON.stringify(globalState)); +CellExplorerRecordingInterfaceGlobalCopy.interfaces.interface = CellExplorerRecordingInterface; +CellExplorerRecordingInterfaceGlobalCopy.schema.source_data = CellExplorerRecordingInterfaceSchema; +CellExplorerRecordingInterface.args = { activePage, globalState: CellExplorerRecordingInterfaceGlobalCopy }; diff --git a/src/electron/renderer/src/stories/pages/guided-mode/Structure.stories.js b/src/electron/renderer/src/stories/pages/guided-mode/Structure.stories.js index 342b83ecc..49691f589 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/Structure.stories.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/Structure.stories.js @@ -1,14 +1,14 @@ -import { globalState, PageTemplate } from "./storyStates"; - -export default { - title: "Pages/Guided Mode/Structure", - parameters: { - chromatic: { disableSnapshot: false }, - }, -}; - -export const Default = PageTemplate.bind({}); -Default.args = { - activePage: "//structure", - globalState, -}; +import { globalState, PageTemplate } from "./storyStates"; + +export default { + title: "Pages/Guided Mode/Structure", + parameters: { + chromatic: { disableSnapshot: false }, + }, +}; + +export const Default = PageTemplate.bind({}); +Default.args = { + activePage: "//structure", + globalState, +}; diff --git a/src/electron/renderer/src/stories/pages/guided-mode/Subjects.stories.js b/src/electron/renderer/src/stories/pages/guided-mode/Subjects.stories.js index ffdbf3161..168b31f62 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/Subjects.stories.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/Subjects.stories.js @@ -1,14 +1,14 @@ -import { globalState, PageTemplate } from "./storyStates"; - -export default { - title: "Pages/Guided Mode/Subjects", - parameters: { - chromatic: { disableSnapshot: false }, - }, -}; - -export const Default = PageTemplate.bind({}); -Default.args = { - activePage: "//subjects", - globalState, -}; +import { globalState, PageTemplate } from "./storyStates"; + +export default { + title: "Pages/Guided Mode/Subjects", + parameters: { + chromatic: { disableSnapshot: false }, + }, +}; + +export const Default = PageTemplate.bind({}); +Default.args = { + activePage: "//subjects", + globalState, +}; diff --git a/src/electron/renderer/src/stories/pages/guided-mode/Upload.stories.js b/src/electron/renderer/src/stories/pages/guided-mode/Upload.stories.js index e6733eb46..4eb65b575 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/Upload.stories.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/Upload.stories.js @@ -1,14 +1,14 @@ -import { globalState, PageTemplate } from "./storyStates"; - -export default { - title: "Pages/Guided Mode/Upload", - parameters: { - chromatic: { disableSnapshot: false }, - }, -}; - -export const Default = PageTemplate.bind({}); -Default.args = { - activePage: "//upload", - globalState, -}; +import { globalState, PageTemplate } from "./storyStates"; + +export default { + title: "Pages/Guided Mode/Upload", + parameters: { + chromatic: { disableSnapshot: false }, + }, +}; + +export const Default = PageTemplate.bind({}); +Default.args = { + activePage: "//upload", + globalState, +}; diff --git a/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedMetadata.js b/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedMetadata.js index ee1e60e15..c1b1592dc 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedMetadata.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedMetadata.js @@ -1,600 +1,600 @@ -import { JSONSchemaForm, getSchema } from "../../../JSONSchemaForm.js"; - -import { InstanceManager } from "../../../InstanceManager.js"; -import { ManagedPage } from "./ManagedPage.js"; -import { Modal } from "../../../Modal"; - -import { validateOnChange } from "../../../../validation/index.js"; -import { - resolveGlobalOverrides, - resolveMetadata, - getInfoFromId, - drillSchemaProperties, - resolveFromPath, -} from "./utils"; - -import Swal from "sweetalert2"; -import { SimpleTable } from "../../../SimpleTable.js"; -import { onThrow } from "../../../../errors"; -import { merge } from "../../utils"; -import { NWBFilePreview } from "../../../preview/NWBFilePreview.js"; -import { header, tempPropertyKey } from "../../../forms/utils"; - -import { createGlobalFormModal } from "../../../forms/GlobalFormModal"; -import { Button } from "../../../Button.js"; - -import globalIcon from "../../../assets/global.svg?raw"; - -const parentTableRenderConfig = { - Electrodes: (metadata) => { - metadata.schema.description = "Download, modify, and re-upload data to change the electrode information."; - return true; - }, - Units: (metadata) => { - metadata.truncated = true; - metadata.schema.description = "Update unit information directly on your source data."; - return true; - }, -}; - -function getAggregateRequirements(path) { - const electrodeSchema = getSchema(path, this.schema); - return Object.values(electrodeSchema.properties).reduce((set, schema) => { - schema.items.required.forEach((item) => set.add(item)); - return set; - }, new Set()); -} - -const tableRenderConfig = { - "*": (metadata) => new SimpleTable(metadata), - ElectrodeColumns: function (metadata) { - const aggregateRequirements = getAggregateRequirements.call(this, ["Ecephys", "Electrodes"]); - - return new SimpleTable({ - ...metadata, - editable: { - name: (value) => !aggregateRequirements.has(value), - data_type: (_, row) => !aggregateRequirements.has(row.name), - __row_remove: (_, row) => !aggregateRequirements.has(row.name), - }, - }); - }, - UnitColumns: function (metadata) { - metadata.editable = false; - metadata.schema.description = "Update unit information directly on your source data."; - - return true; - - // const aggregateRequirements = getAggregateRequirements.call(this, ["Ecephys", "Units"]); - // - // return new SimpleTable({ - // ...metadata, - // contextOptions: { - // row: { - // add: false, - // remove: false, - // }, - // }, - // editable: { - // name: (value) => !aggregateRequirements.has(value), - // data_type: (_, row) => !aggregateRequirements.has(row.name), - // }, - // }); - }, -}; - -const imagingPlaneKey = "imaging_plane"; -const propsToIgnore = { - NWBFile: { - session_id: true, - source_script: true, - source_script_file_name: true, - identifier: true, - }, - Subject: { - subject_id: true, - }, - Ophys: { - "*": { - starting_time: true, - rate: true, - conversion: true, - offset: true, - unit: true, - control: true, - comments: true, - control_description: true, - }, - ImagingPlane: { - [imagingPlaneKey]: true, - manifold: true, - }, - TwoPhotonSeries: { - [imagingPlaneKey]: true, - format: true, - starting_frame: true, - control: true, - control_description: true, - comments: true, - resolution: true, - dimension: true, - device: true, - }, - }, - Ecephys: { - ElectricalSeries: true, - ElectricalSeriesLF: true, - ElectricalSeriesAP: true, - ElectricalSeriesNIDQ: true, - Units: { - "*": { - UnitColumns: { - "*": { - data_type: true, // Do not show data_type - }, - }, - }, - }, - }, - Icephys: true, // Always ignore icephys metadata (for now) - Behavior: true, // Always ignore behavior metadata (for now) - "ndx-dandi-icephys": true, -}; - -import { preprocessMetadataSchema } from "../../../../../../../schemas/base-metadata.schema"; -import { - createTable, - getEditableItems, - isPatternProperties, - isAdditionalProperties, -} from "../../../JSONSchemaInput.js"; -import { html } from "lit"; - -export class GuidedMetadataPage extends ManagedPage { - constructor(...args) { - super(...args); - this.style.height = "100%"; // Fix main section - } - - beforeSave = () => { - merge(this.localState.results, this.info.globalState.results); - }; - - form; - - #globalButton = new Button({ - icon: globalIcon, - label: "Edit Default Metadata", - onClick: () => { - this.#globalModal.form.results = structuredClone(this.info.globalState.project); - this.#globalModal.open = true; - }, - }); - - workflow = { - multiple_sessions: { - elements: [this.#globalButton], - }, - }; - - header = { - controls: [this.#globalButton], - subtitle: "Edit all metadata for this conversion at the session level", - }; - - footer = { - onNext: async () => { - await this.save(); // Save in case the conversion fails - for (let { form } of this.forms) await form.validate(); // Will throw an error in the callback - return this.to(1); // Will trigger preview conversion if necessary - }, - }; - - #globalModal = null; - - connectedCallback() { - super.connectedCallback(); - - // Provide HARDCODED global schema for metadata properties (not automatically abstracting across sessions)... - const schema = preprocessMetadataSchema(undefined, true); - - const toRemove = structuredClone(propsToIgnore); - toRemove.Subject = true; // Do not edit subject defaults - - const modal = (this.#globalModal = createGlobalFormModal.call(this, { - header: "Default Metadata", - propsToRemove: toRemove, - schema, - hasInstances: true, - mergeFunction: function (globalResolved, globals) { - merge(globalResolved, globals); - return resolveGlobalOverrides(this.subject, globals); - }, - formProps: { - validateOnChange, - }, - })); - document.body.append(modal); - } - - disconnectedCallback() { - super.disconnectedCallback(); - if (this.#globalModal) this.#globalModal.remove(); - } - - createForm = ({ subject, session, info }) => { - const hasMultipleSessions = this.workflow.multiple_sessions.value; - - // const results = createResults({ subject, info }, this.info.globalState); - - const { globalState } = this.info; - - const results = info.metadata; // Edited form info - - // Define the appropriate global metadata to fill empty values in the form - const aggregateGlobalMetadata = resolveGlobalOverrides(subject, globalState, hasMultipleSessions); - - // Define the correct instance identifier - const instanceId = `sub-${subject}/ses-${session}`; - - // Ignore specific metadata in the form by removing their schema value - const schema = preprocessMetadataSchema(globalState.schema.metadata[subject][session]); - delete schema.description; - - resolveMetadata(subject, session, globalState); - - const additionalPropertiesToRetitle = ["Ophys.ImageSegmentation"]; - - const patternPropsToRetitle = ["Ophys.Fluorescence", "Ophys.DfOverF", "Ophys.SegmentationImages"]; - - console.log("schema", structuredClone(schema), structuredClone(results)); - - const ophys = schema.properties.Ophys; - if (ophys) { - drillSchemaProperties( - schema, - (path, schema, target, isPatternProperties, parentSchema) => { - if (path[0] === "Ophys") { - const name = path.slice(-1)[0]; - - if (isPatternProperties) schema.minItems = schema.maxItems = null; // Do not allow more than on the results - - if (schema.type === "array") { - if (name !== "Device" && target) { - // Set most Ophys tables to have minItems / maxItems equal (i.e. no editing possible) - if (name in target) schema.minItems = schema.maxItems = null; - // Remove Ophys property requirement if left initially undefined - else { - target[name] = []; // Initialize empty array - if (parentSchema.required.includes(name)) - parentSchema.required = parentSchema.required.filter((n) => n !== name); - } - } - } - } - }, - results - ); - } - - console.log("schema", structuredClone(schema), structuredClone(results)); - - delete results.__generated; // Ignore generated results. NOTE: See if this fails - - // Create the form - const form = new JSONSchemaForm({ - identifier: instanceId, - schema, - results, - globals: aggregateGlobalMetadata, - - ignore: propsToIgnore, - onOverride: (name) => { - this.notify(`${header(name)} has been overridden with a global value.`, "warning", 3000); - }, - - transformErrors: (error) => { - // JSON Schema Exceptions - if (error.message.includes('does not conform to the "date-time" format.')) return false; - if (error.message.includes('not allowed to have the additional property "Ecephys".')) return false; // NOTE: Remove after including Ecephys metadata - }, - - groups: [ - { - name: "Subject Age", - properties: [ - ["Subject", "age"], - ["Subject", "date_of_birth"], - ], - link: true, - conditional: true, - }, - { - name: "Institutional Info", - properties: [ - ["NWBFile", "institution"], - ["NWBFile", "lab"], - ], - }, - - // For C. Elegans - { - properties: [ - ["Subject", "sex"], - ["Subject", "species"], - ], - link: true, - }, - ], - - // deferLoading: true, - onLoaded: () => { - this.#nLoaded++; - this.#checkAllLoaded(); - }, - - onUpdate: () => (this.unsavedUpdates = "conversions"), - - validateOnChange, - onlyRequired: false, - onStatusChange: (state) => this.manager.updateState(`sub-${subject}/ses-${session}`, state), - - renderCustomHTML: function (name, inputSchema, localPath, { onUpdate, onThrow }) { - if (name === "TwoPhotonSeries" && (!this.value || !this.value.length)) return null; - if (name === "Device" && (!this.value || !this.value.length)) return null; - if (name === "ElectrodeGroup" && (!this.value || !this.value.length)) return null; - - const isAdditional = isAdditionalProperties(this.pattern); - const isPattern = isPatternProperties(this.pattern); - - if (isAdditional || isPattern) { - // One table with nested tables for each property - const data = getEditableItems(this.value, this.pattern, { name, schema: this.schema }).reduce( - (acc, { key, value }) => { - acc[key] = value; - return acc; - }, - {} - ); - - const nProps = Object.keys(data).length; - - const schemaCopy = { ...inputSchema }; - - if (additionalPropertiesToRetitle.includes(this.form.base.join("."))) { - inputSchema.title = ""; - - return Object.entries(data).map(([name, value]) => { - const mockInput = { - schema: { - type: "array", - items: { - type: "object", - additionalProperties: true, - }, - }, - renderTable: this.renderTable, - value, - form: { - ignore: this.form.ignore, - }, - }; - - const table = createTable.call(mockInput, [...localPath], { - onUpdate: (localPath, value) => - onUpdate([name, ...localPath], value, true, { - willTimeout: false, - onError: (e) => e, - onWarning: (e) => e, - }), - onThrow: onThrow, - }); - - return html` -
      -

      ${header(name)}

      - ${table} -
      - `; - }); - } - - if (patternPropsToRetitle.includes(this.form.base.join("."))) { - inputSchema.title = "Plane Metadata
      "; - - return html`
      - ${Object.entries(data) - .map(([name, value]) => { - const createNestedTable = (value, pattern, schema) => { - const mockInput = { - schema: { - type: "object", - items: schema, - - // Transfer a subset of item schema values - minItems: schema.minItems, - maxItems: schema.maxItems, - }, - - renderTable: this.renderTable, - value, - pattern: pattern, - form: { - ignore: this.form.ignore, - }, - }; - - return html` -
      - ${nProps > 1 ? html`

      ${header(name)}

      ` : ""} - ${createTable.call(mockInput, [...localPath], { - overrides: { - schema: { - items: { - order: ["name", "description"], - additionalProperties: false, - }, - }, - ignore: { - [tempPropertyKey]: true, - }, - }, - onUpdate: (localPath, value) => - onUpdate([name, ...localPath], value, true, { - willTimeout: false, - onError: (e) => e, - onWarning: (e) => e, - }), - onThrow: onThrow, - })} -
      - `; - }; - - if (isAdditional) { - const data = value.reduce((acc, item) => { - const name = item.name; - acc[name] = item; - return acc; - }, {}); - - return createNestedTable(data, undefined, { - type: "object", - items: { - type: "object", - additionalProperties: true, - }, - }); - } - - return Object.entries(schemaCopy.patternProperties).map(([pattern, schema]) => { - return createNestedTable(value, pattern, schema); - }); - }) - .flat()} -
      `; - } - } - }, - - renderTable: function (name, metadata, fullPath) { - const updatedSchema = structuredClone(metadata.schema); - metadata.schema = updatedSchema; - - const parentName = fullPath[fullPath.length - 1]; - - const tableConfig = - tableRenderConfig[name] ?? parentTableRenderConfig[parentName] ?? tableRenderConfig["*"] ?? true; - if (typeof tableConfig === "function") - return tableConfig.call(form, metadata, [...fullPath, name], this); - else return tableConfig; - }, - onThrow, - }); - - return { - subject, - session, - form, - }; - }; - - #nLoaded = 0; - #loaded = false; - - #checkAllLoaded = () => { - if (this.#nLoaded === this.forms.length) this.#onLoaded(); - }; - - #onLoaded = () => { - this.#loaded = true; - Swal.close(); - }; - - #resetLoadState() { - this.#loaded = false; - this.#nLoaded = 0; - } - - render() { - this.#resetLoadState(); // Reset on each render - - this.localState = { results: structuredClone(this.info.globalState.results ?? {}) }; - - this.forms = this.mapSessions(this.createForm, this.localState.results); - - let instances = {}; - this.forms.forEach(({ subject, session, form }) => { - if (!instances[`sub-${subject}`]) instances[`sub-${subject}`] = {}; - instances[`sub-${subject}`][`ses-${session}`] = form; - }); - - this.manager = new InstanceManager({ - header: "Sessions", - instanceType: "Session", - instances, - - controls: [ - { - name: "Preview", - primary: true, - onClick: async (key) => { - const { subject, session } = getInfoFromId(key); - - const results = await this.runConversions( - { stub_test: true }, - [ - { - subject, - session, - globalState: merge(this.localState, structuredClone(this.info.globalState)), - }, - ], - { title: "Running conversion preview" } - ).catch(() => {}); - - if (!results) return; - - const modal = new Modal({ - header: `Conversion Preview: ${key}`, - open: true, - onClose: () => modal.remove(), - width: "100%", - height: "100%", - }); - - const { project } = this.info.globalState; - - modal.append(new NWBFilePreview({ project: project.name, files: results, inspect: true })); - document.body.append(modal); - }, - }, - - // Only save the currently selected session - { - name: "Save", - onClick: async (id) => { - const ogCallback = this.beforeSave; - this.beforeSave = () => { - const { subject, session } = getInfoFromId(id); - - const local = this.localState.results[subject][session]; - const global = this.info.globalState.results[subject][session]; - - merge(local, global); - - this.notify(`Session ${id} metadata saved!`); - }; - await this.save(); - this.beforeSave = ogCallback; - }, - }, - ], - }); - - return this.manager; - } -} - -customElements.get("nwbguide-guided-metadata-page") || - customElements.define("nwbguide-guided-metadata-page", GuidedMetadataPage); +import { JSONSchemaForm, getSchema } from "../../../JSONSchemaForm.js"; + +import { InstanceManager } from "../../../InstanceManager.js"; +import { ManagedPage } from "./ManagedPage.js"; +import { Modal } from "../../../Modal"; + +import { validateOnChange } from "../../../../validation/index.js"; +import { + resolveGlobalOverrides, + resolveMetadata, + getInfoFromId, + drillSchemaProperties, + resolveFromPath, +} from "./utils"; + +import Swal from "sweetalert2"; +import { SimpleTable } from "../../../SimpleTable.js"; +import { onThrow } from "../../../../errors"; +import { merge } from "../../utils"; +import { NWBFilePreview } from "../../../preview/NWBFilePreview.js"; +import { header, tempPropertyKey } from "../../../forms/utils"; + +import { createGlobalFormModal } from "../../../forms/GlobalFormModal"; +import { Button } from "../../../Button.js"; + +import globalIcon from "../../../assets/global.svg?raw"; + +const parentTableRenderConfig = { + Electrodes: (metadata) => { + metadata.schema.description = "Download, modify, and re-upload data to change the electrode information."; + return true; + }, + Units: (metadata) => { + metadata.truncated = true; + metadata.schema.description = "Update unit information directly on your source data."; + return true; + }, +}; + +function getAggregateRequirements(path) { + const electrodeSchema = getSchema(path, this.schema); + return Object.values(electrodeSchema.properties).reduce((set, schema) => { + schema.items.required.forEach((item) => set.add(item)); + return set; + }, new Set()); +} + +const tableRenderConfig = { + "*": (metadata) => new SimpleTable(metadata), + ElectrodeColumns: function (metadata) { + const aggregateRequirements = getAggregateRequirements.call(this, ["Ecephys", "Electrodes"]); + + return new SimpleTable({ + ...metadata, + editable: { + name: (value) => !aggregateRequirements.has(value), + data_type: (_, row) => !aggregateRequirements.has(row.name), + __row_remove: (_, row) => !aggregateRequirements.has(row.name), + }, + }); + }, + UnitColumns: function (metadata) { + metadata.editable = false; + metadata.schema.description = "Update unit information directly on your source data."; + + return true; + + // const aggregateRequirements = getAggregateRequirements.call(this, ["Ecephys", "Units"]); + // + // return new SimpleTable({ + // ...metadata, + // contextOptions: { + // row: { + // add: false, + // remove: false, + // }, + // }, + // editable: { + // name: (value) => !aggregateRequirements.has(value), + // data_type: (_, row) => !aggregateRequirements.has(row.name), + // }, + // }); + }, +}; + +const imagingPlaneKey = "imaging_plane"; +const propsToIgnore = { + NWBFile: { + session_id: true, + source_script: true, + source_script_file_name: true, + identifier: true, + }, + Subject: { + subject_id: true, + }, + Ophys: { + "*": { + starting_time: true, + rate: true, + conversion: true, + offset: true, + unit: true, + control: true, + comments: true, + control_description: true, + }, + ImagingPlane: { + [imagingPlaneKey]: true, + manifold: true, + }, + TwoPhotonSeries: { + [imagingPlaneKey]: true, + format: true, + starting_frame: true, + control: true, + control_description: true, + comments: true, + resolution: true, + dimension: true, + device: true, + }, + }, + Ecephys: { + ElectricalSeries: true, + ElectricalSeriesLF: true, + ElectricalSeriesAP: true, + ElectricalSeriesNIDQ: true, + Units: { + "*": { + UnitColumns: { + "*": { + data_type: true, // Do not show data_type + }, + }, + }, + }, + }, + Icephys: true, // Always ignore icephys metadata (for now) + Behavior: true, // Always ignore behavior metadata (for now) + "ndx-dandi-icephys": true, +}; + +import { preprocessMetadataSchema } from "../../../../../../../schemas/base-metadata.schema"; +import { + createTable, + getEditableItems, + isPatternProperties, + isAdditionalProperties, +} from "../../../JSONSchemaInput.js"; +import { html } from "lit"; + +export class GuidedMetadataPage extends ManagedPage { + constructor(...args) { + super(...args); + this.style.height = "100%"; // Fix main section + } + + beforeSave = () => { + merge(this.localState.results, this.info.globalState.results); + }; + + form; + + #globalButton = new Button({ + icon: globalIcon, + label: "Edit Default Metadata", + onClick: () => { + this.#globalModal.form.results = structuredClone(this.info.globalState.project); + this.#globalModal.open = true; + }, + }); + + workflow = { + multiple_sessions: { + elements: [this.#globalButton], + }, + }; + + header = { + controls: [this.#globalButton], + subtitle: "Edit all metadata for this conversion at the session level", + }; + + footer = { + onNext: async () => { + await this.save(); // Save in case the conversion fails + for (let { form } of this.forms) await form.validate(); // Will throw an error in the callback + return this.to(1); // Will trigger preview conversion if necessary + }, + }; + + #globalModal = null; + + connectedCallback() { + super.connectedCallback(); + + // Provide HARDCODED global schema for metadata properties (not automatically abstracting across sessions)... + const schema = preprocessMetadataSchema(undefined, true); + + const toRemove = structuredClone(propsToIgnore); + toRemove.Subject = true; // Do not edit subject defaults + + const modal = (this.#globalModal = createGlobalFormModal.call(this, { + header: "Default Metadata", + propsToRemove: toRemove, + schema, + hasInstances: true, + mergeFunction: function (globalResolved, globals) { + merge(globalResolved, globals); + return resolveGlobalOverrides(this.subject, globals); + }, + formProps: { + validateOnChange, + }, + })); + document.body.append(modal); + } + + disconnectedCallback() { + super.disconnectedCallback(); + if (this.#globalModal) this.#globalModal.remove(); + } + + createForm = ({ subject, session, info }) => { + const hasMultipleSessions = this.workflow.multiple_sessions.value; + + // const results = createResults({ subject, info }, this.info.globalState); + + const { globalState } = this.info; + + const results = info.metadata; // Edited form info + + // Define the appropriate global metadata to fill empty values in the form + const aggregateGlobalMetadata = resolveGlobalOverrides(subject, globalState, hasMultipleSessions); + + // Define the correct instance identifier + const instanceId = `sub-${subject}/ses-${session}`; + + // Ignore specific metadata in the form by removing their schema value + const schema = preprocessMetadataSchema(globalState.schema.metadata[subject][session]); + delete schema.description; + + resolveMetadata(subject, session, globalState); + + const additionalPropertiesToRetitle = ["Ophys.ImageSegmentation"]; + + const patternPropsToRetitle = ["Ophys.Fluorescence", "Ophys.DfOverF", "Ophys.SegmentationImages"]; + + console.log("schema", structuredClone(schema), structuredClone(results)); + + const ophys = schema.properties.Ophys; + if (ophys) { + drillSchemaProperties( + schema, + (path, schema, target, isPatternProperties, parentSchema) => { + if (path[0] === "Ophys") { + const name = path.slice(-1)[0]; + + if (isPatternProperties) schema.minItems = schema.maxItems = null; // Do not allow more than on the results + + if (schema.type === "array") { + if (name !== "Device" && target) { + // Set most Ophys tables to have minItems / maxItems equal (i.e. no editing possible) + if (name in target) schema.minItems = schema.maxItems = null; + // Remove Ophys property requirement if left initially undefined + else { + target[name] = []; // Initialize empty array + if (parentSchema.required.includes(name)) + parentSchema.required = parentSchema.required.filter((n) => n !== name); + } + } + } + } + }, + results + ); + } + + console.log("schema", structuredClone(schema), structuredClone(results)); + + delete results.__generated; // Ignore generated results. NOTE: See if this fails + + // Create the form + const form = new JSONSchemaForm({ + identifier: instanceId, + schema, + results, + globals: aggregateGlobalMetadata, + + ignore: propsToIgnore, + onOverride: (name) => { + this.notify(`${header(name)} has been overridden with a global value.`, "warning", 3000); + }, + + transformErrors: (error) => { + // JSON Schema Exceptions + if (error.message.includes('does not conform to the "date-time" format.')) return false; + if (error.message.includes('not allowed to have the additional property "Ecephys".')) return false; // NOTE: Remove after including Ecephys metadata + }, + + groups: [ + { + name: "Subject Age", + properties: [ + ["Subject", "age"], + ["Subject", "date_of_birth"], + ], + link: true, + conditional: true, + }, + { + name: "Institutional Info", + properties: [ + ["NWBFile", "institution"], + ["NWBFile", "lab"], + ], + }, + + // For C. Elegans + { + properties: [ + ["Subject", "sex"], + ["Subject", "species"], + ], + link: true, + }, + ], + + // deferLoading: true, + onLoaded: () => { + this.#nLoaded++; + this.#checkAllLoaded(); + }, + + onUpdate: () => (this.unsavedUpdates = "conversions"), + + validateOnChange, + onlyRequired: false, + onStatusChange: (state) => this.manager.updateState(`sub-${subject}/ses-${session}`, state), + + renderCustomHTML: function (name, inputSchema, localPath, { onUpdate, onThrow }) { + if (name === "TwoPhotonSeries" && (!this.value || !this.value.length)) return null; + if (name === "Device" && (!this.value || !this.value.length)) return null; + if (name === "ElectrodeGroup" && (!this.value || !this.value.length)) return null; + + const isAdditional = isAdditionalProperties(this.pattern); + const isPattern = isPatternProperties(this.pattern); + + if (isAdditional || isPattern) { + // One table with nested tables for each property + const data = getEditableItems(this.value, this.pattern, { name, schema: this.schema }).reduce( + (acc, { key, value }) => { + acc[key] = value; + return acc; + }, + {} + ); + + const nProps = Object.keys(data).length; + + const schemaCopy = { ...inputSchema }; + + if (additionalPropertiesToRetitle.includes(this.form.base.join("."))) { + inputSchema.title = ""; + + return Object.entries(data).map(([name, value]) => { + const mockInput = { + schema: { + type: "array", + items: { + type: "object", + additionalProperties: true, + }, + }, + renderTable: this.renderTable, + value, + form: { + ignore: this.form.ignore, + }, + }; + + const table = createTable.call(mockInput, [...localPath], { + onUpdate: (localPath, value) => + onUpdate([name, ...localPath], value, true, { + willTimeout: false, + onError: (e) => e, + onWarning: (e) => e, + }), + onThrow: onThrow, + }); + + return html` +
      +

      ${header(name)}

      + ${table} +
      + `; + }); + } + + if (patternPropsToRetitle.includes(this.form.base.join("."))) { + inputSchema.title = "Plane Metadata
      "; + + return html`
      + ${Object.entries(data) + .map(([name, value]) => { + const createNestedTable = (value, pattern, schema) => { + const mockInput = { + schema: { + type: "object", + items: schema, + + // Transfer a subset of item schema values + minItems: schema.minItems, + maxItems: schema.maxItems, + }, + + renderTable: this.renderTable, + value, + pattern: pattern, + form: { + ignore: this.form.ignore, + }, + }; + + return html` +
      + ${nProps > 1 ? html`

      ${header(name)}

      ` : ""} + ${createTable.call(mockInput, [...localPath], { + overrides: { + schema: { + items: { + order: ["name", "description"], + additionalProperties: false, + }, + }, + ignore: { + [tempPropertyKey]: true, + }, + }, + onUpdate: (localPath, value) => + onUpdate([name, ...localPath], value, true, { + willTimeout: false, + onError: (e) => e, + onWarning: (e) => e, + }), + onThrow: onThrow, + })} +
      + `; + }; + + if (isAdditional) { + const data = value.reduce((acc, item) => { + const name = item.name; + acc[name] = item; + return acc; + }, {}); + + return createNestedTable(data, undefined, { + type: "object", + items: { + type: "object", + additionalProperties: true, + }, + }); + } + + return Object.entries(schemaCopy.patternProperties).map(([pattern, schema]) => { + return createNestedTable(value, pattern, schema); + }); + }) + .flat()} +
      `; + } + } + }, + + renderTable: function (name, metadata, fullPath) { + const updatedSchema = structuredClone(metadata.schema); + metadata.schema = updatedSchema; + + const parentName = fullPath[fullPath.length - 1]; + + const tableConfig = + tableRenderConfig[name] ?? parentTableRenderConfig[parentName] ?? tableRenderConfig["*"] ?? true; + if (typeof tableConfig === "function") + return tableConfig.call(form, metadata, [...fullPath, name], this); + else return tableConfig; + }, + onThrow, + }); + + return { + subject, + session, + form, + }; + }; + + #nLoaded = 0; + #loaded = false; + + #checkAllLoaded = () => { + if (this.#nLoaded === this.forms.length) this.#onLoaded(); + }; + + #onLoaded = () => { + this.#loaded = true; + Swal.close(); + }; + + #resetLoadState() { + this.#loaded = false; + this.#nLoaded = 0; + } + + render() { + this.#resetLoadState(); // Reset on each render + + this.localState = { results: structuredClone(this.info.globalState.results ?? {}) }; + + this.forms = this.mapSessions(this.createForm, this.localState.results); + + let instances = {}; + this.forms.forEach(({ subject, session, form }) => { + if (!instances[`sub-${subject}`]) instances[`sub-${subject}`] = {}; + instances[`sub-${subject}`][`ses-${session}`] = form; + }); + + this.manager = new InstanceManager({ + header: "Sessions", + instanceType: "Session", + instances, + + controls: [ + { + name: "Preview", + primary: true, + onClick: async (key) => { + const { subject, session } = getInfoFromId(key); + + const results = await this.runConversions( + { stub_test: true }, + [ + { + subject, + session, + globalState: merge(this.localState, structuredClone(this.info.globalState)), + }, + ], + { title: "Running conversion preview" } + ).catch(() => {}); + + if (!results) return; + + const modal = new Modal({ + header: `Conversion Preview: ${key}`, + open: true, + onClose: () => modal.remove(), + width: "100%", + height: "100%", + }); + + const { project } = this.info.globalState; + + modal.append(new NWBFilePreview({ project: project.name, files: results, inspect: true })); + document.body.append(modal); + }, + }, + + // Only save the currently selected session + { + name: "Save", + onClick: async (id) => { + const ogCallback = this.beforeSave; + this.beforeSave = () => { + const { subject, session } = getInfoFromId(id); + + const local = this.localState.results[subject][session]; + const global = this.info.globalState.results[subject][session]; + + merge(local, global); + + this.notify(`Session ${id} metadata saved!`); + }; + await this.save(); + this.beforeSave = ogCallback; + }, + }, + ], + }); + + return this.manager; + } +} + +customElements.get("nwbguide-guided-metadata-page") || + customElements.define("nwbguide-guided-metadata-page", GuidedMetadataPage); diff --git a/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedPathExpansion.js b/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedPathExpansion.js index 922331770..d3a6946d9 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedPathExpansion.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedPathExpansion.js @@ -1,449 +1,449 @@ -import { html } from "lit"; -import { Page } from "../../Page.js"; - -// For Multi-Select Form -import { JSONSchemaForm, getSchema } from "../../../JSONSchemaForm.js"; -import { run } from "../options/utils.js"; -import { onThrow } from "../../../../errors"; - -import pathExpansionSchema from "../../../../../../../schemas/json/path-expansion.schema.json" assert { type: "json" }; -import { merge } from "../../utils"; -import { List } from "../../../List"; -import { fs } from "../../../../electron/index.js"; -import { Button } from "../../../Button.js"; -import { Modal } from "../../../Modal"; -import { header } from "../../../forms/utils"; - -import autocompleteIcon from "../../../assets/inspect.svg?raw"; - -const propOrder = ["path", "subject_id", "session_id"]; - -export async function autocompleteFormatString(path) { - let notification; - - const { base_directory } = path.reduce((acc, key) => acc[key] ?? {}, this.form.resolved); - - const schema = getSchema(path, this.info.globalState.schema.source_data); - - const isFile = "file_path" in schema.properties; - const pathType = isFile ? "file" : "directory"; - - const description = isFile ? schema.properties.file_path.description : schema.properties.folder_path.description; - - const notify = (message, type) => { - if (notification) this.dismiss(notification); - return (notification = this.notify(message, type)); - }; - - if (!base_directory) { - const message = `Please fill out the base directory for ${header(path[0])} before attempting auto-completion.`; - notify(message, "error"); - throw new Error(message); - } - - const modal = new Modal({ - header: "Autocomplete Format String", - }); - - const content = document.createElement("div"); - Object.assign(content.style, { - padding: "25px", - }); - - const form = new JSONSchemaForm({ - validateEmptyValues: false, - schema: { - type: "object", - properties: { - path: { - type: "string", - title: `Example ${isFile ? "File" : "Folder"}`, - format: pathType, - description: description ?? `Provide an example ${pathType} for the selected interface`, - }, - subject_id: { - type: "string", - description: "The subject ID in the above entry", - }, - session_id: { - type: "string", - description: "The session ID in the above entry", - }, - }, - required: propOrder, - order: propOrder, - }, - validateOnChange: async (name, parent) => { - const value = parent[name]; - - if (name === "path") { - const toUpdate = ["subject_id", "session_id"]; - toUpdate.forEach((key) => form.getFormElement([key]).requestUpdate()); - - if (value) { - if (fs.lstatSync(value).isSymbolicLink()) - return [ - { - type: "error", - message: "This feature does not support symbolic links. Please provide a valid path.", - }, - ]; - - if (base_directory) { - if (!value.includes(base_directory)) - return [ - { - type: "error", - message: - "The provided path must include the base directory.
      This is likely due to the target being contained in a symlink, which is unsupported by this feature.", - }, - ]; - } - - const errors = []; - for (let key in parent) { - if (key === name) continue; - if (!value.includes(parent[key])) - errors.push({ - type: "error", - message: `${header(name)} not found in the updated path.`, - }); - } - } - } else { - if (!parent.path) return; - if (!value) return; - - if (!parent.path.includes(value)) - return [ - { - type: "error", - message: `${header(name)} not found in the provided path.`, - }, - ]; - } - }, - }); - - content.append(form); - modal.append(content); - - modal.onClose = async () => notify("Format String Path was not completed.", "error"); - - return new Promise((resolve) => { - const button = new Button({ - label: "Submit", - primary: true, - onClick: async () => { - await form.validate().catch((e) => { - notify(e.message, "error"); - throw e; - }); - - const results = await run("locate/autocomplete", { - base_directory, - additional_metadata: {}, - ...form.results, - }); - const input = this.form.getFormElement([...path, "format_string_path"]); - input.updateData(results.format_string); - this.save(); - resolve(results.format_string); - }, - }); - - modal.footer = button; - - modal.open = true; - - document.body.append(modal); - }).finally(() => { - modal.remove(); - }); -} - -export class GuidedPathExpansionPage extends Page { - #notification; - - constructor(...args) { - super(...args); - } - - header = { - subtitle: "Automatic source data detection for multiple subjects / sessions", - }; - - #initialize = () => (this.localState = merge(this.info.globalState.structure, { results: {} })); - - workflow = { - subject_id: {}, - session_id: {}, - base_directory: {}, - locate_data: { - skip: () => { - this.#initialize(); - const globalState = this.info.globalState; - merge({ structure: this.localState }, globalState); // Merge the actual entries into the structure - - // Force single subject/session if not keeping existing data - // if (!globalState.results) { - - const subject_id = this.workflow.subject_id.value; - const session_id = this.workflow.session_id.value; - - // Map existing results to new subject information (if available) - const existingResults = Object.values(Object.values(globalState.results ?? {})[0] ?? {})[0] ?? {}; - - const existingMetadata = existingResults.metadata ?? {}; - const existingSourceData = existingResults.source_data; - - const source_data = {}; - for (let key in globalState.interfaces) { - const existing = existingSourceData?.[key]; - if (existing) source_data[key] = existing ?? {}; - } - - const sub_id = subject_id ?? ""; - const ses_id = session_id ?? ""; - - // Skip if results already exist without manual IDs - if ((!subject_id || !session_id) && globalState.results) return; - // Otherwise reset the results to the new subject/session - else { - globalState.results = {}; - - globalState.results[sub_id] = {}; - - const metadata = structuredClone(existingMetadata); - if (!metadata.NWBFile) metadata.NWBFile = {}; - if (!metadata.Subject) metadata.Subject = {}; - metadata.NWBFile.session_id = ses_id; - metadata.Subject.subject_id = sub_id; - - globalState.results[sub_id][ses_id] = { source_data, metadata }; - } - - this.save({}, false); // Ensure this structure is saved - }, - }, - }; - - beforeSave = async () => { - const globalState = this.info.globalState; - merge({ structure: this.localState }, globalState); // Merge the actual entries into the structure - - const structure = globalState.structure.results; - - await this.form.validate(); - - const globalBaseDirectory = this.workflow.base_directory.value; - - const finalStructure = {}; - for (let key in structure) { - const entry = { ...structure[key] }; - const fstring = entry.format_string_path; - if (!fstring) continue; - if (fstring.split(".").length > 1) entry.file_path = fstring; - else entry.folder_path = fstring; - delete entry.format_string_path; - - if (!entry.base_directory && globalBaseDirectory) entry.base_directory = globalBaseDirectory; - - finalStructure[key] = entry; - } - - if (Object.keys(finalStructure).length === 0) { - const message = - "Please configure at least one interface.
      Otherwise, revisit Pipeline Workflow to update your configuration."; - this.#notification = this.notify(message, "error"); - throw message; - } - - const results = await run(`locate`, finalStructure, { title: "Locating Data" }).catch((error) => { - this.notify(error.message, "error"); - throw error; - }); - - const subjects = Object.keys(results); - if (subjects.length === 0) { - if (this.#notification) this.dismiss(this.#notification); - const message = "No subjects found with the current configuration. Please try again."; - this.#notification = this.notify(message, "error"); - throw message; - } - - // globalState.results = {} // Clear existing results - - // Save an overall results object organized by subject and session - merge({ results }, globalState); - - const globalResults = globalState.results; - - for (let sub in globalResults) { - const subRef = results[sub]; - if (!subRef) - delete globalResults[sub]; // Delete removed subjects - else { - for (let ses in globalResults[sub]) { - const sesRef = subRef[ses]; - - if (!sesRef) - delete globalResults[sub][ses]; // Delete removed sessions - else { - const globalSesRef = globalResults[sub][ses]; - - for (let name in globalSesRef.source_data) { - if (!sesRef.source_data[name]) delete globalSesRef.source_data[name]; // Delete removed interfaces - } - } - } - - if (Object.keys(globalResults[sub]).length === 0) delete globalResults[sub]; // Delete empty subjects - } - } - }; - - footer = { - onNext: async () => { - await this.save(); // Save in case the request fails - - await this.form.validate(); - - return this.to(1); - }, - }; - - localState = {}; - - render() { - const structureState = this.#initialize(); - - // Require properties for all sources - const generatedSchema = { type: "object", properties: {}, additionalProperties: false }; - const controls = {}; - - const baseDirectory = this.workflow.base_directory.value; - const globals = (structureState.globals = {}); - - for (let key in this.info.globalState.interfaces) { - generatedSchema.properties[key] = { type: "object", ...pathExpansionSchema }; - - if (baseDirectory) globals[key] = { base_directory: baseDirectory }; - - controls[key] = { - format_string_path: [ - new Button({ - label: "Autocomplete", - icon: autocompleteIcon, - buttonStyles: { - width: "max-content", - }, - onClick: async () => autocompleteFormatString.call(this, [key]), - }), - ], - }; - } - structureState.schema = generatedSchema; - - const form = (this.form = new JSONSchemaForm({ - ...structureState, - onThrow, - validateEmptyValues: null, - - controls, - - // NOTE: These are custom coupled form inputs - onUpdate: (path, value) => { - this.unsavedUpdates = "conversions"; - - const parentPath = [...path]; - const name = parentPath.pop(); - - if (name === "base_directory") { - form.getFormElement([...parentPath, "base_directory"]).value = value; // Update value pre-emptively - const input = form.getFormElement([...parentPath, "format_string_path"]); - if (input.value) input.updateData(input.value, true); - } - }, - validateOnChange: async (name, parent, parentPath) => { - const value = parent[name]; - - if (fs) { - const baseDir = form.getFormElement([...parentPath, "base_directory"]); - if (name === "format_string_path") { - if (value && baseDir && !baseDir.value) { - return [ - { - message: html`A base directory must be provided to locate your files.`, - type: "error", - }, - ]; - } - - const base_directory = [...parentPath, "base_directory"].reduce( - (acc, key) => acc[key], - this.form.resolved - ); - - if (!base_directory) return true; // Do not calculate if base is not found - - const entry = { base_directory }; - - if (value.split(".").length > 1) entry.file_path = value; - else entry.folder_path = value; - - const interfaceName = parentPath.slice(-1)[0]; - - const results = await run(`locate`, { [interfaceName]: entry }, { swal: false }).catch( - (error) => { - this.notify(error.message, "error"); - throw error; - } - ); - - const resolved = []; - - for (let sub in results) { - for (let ses in results[sub]) { - const source_data = results[sub][ses].source_data[interfaceName]; - const path = source_data.file_path ?? source_data.folder_path; - resolved.push(path.slice(base_directory.length + 1)); - } - } - - if (resolved.length === 0) - return [ - { - message: html`No source files found using the provided information.`, - type: "warning", - }, - ]; - - return [ - { - message: html`

      Source Files Found

      - ${base_directory} - ${new List({ - items: resolved.map((path) => { - return { value: path }; - }), - editable: false, - })}`, - type: "info", - }, - ]; - } - } - }, - })); - - form.style.width = "100%"; - - return form; - } -} - -customElements.get("nwbguide-guided-pathexpansion-page") || - customElements.define("nwbguide-guided-pathexpansion-page", GuidedPathExpansionPage); +import { html } from "lit"; +import { Page } from "../../Page.js"; + +// For Multi-Select Form +import { JSONSchemaForm, getSchema } from "../../../JSONSchemaForm.js"; +import { run } from "../options/utils.js"; +import { onThrow } from "../../../../errors"; + +import pathExpansionSchema from "../../../../../../../schemas/json/path-expansion.schema.json" assert { type: "json" }; +import { merge } from "../../utils"; +import { List } from "../../../List"; +import { fs } from "../../../../electron/index.js"; +import { Button } from "../../../Button.js"; +import { Modal } from "../../../Modal"; +import { header } from "../../../forms/utils"; + +import autocompleteIcon from "../../../assets/inspect.svg?raw"; + +const propOrder = ["path", "subject_id", "session_id"]; + +export async function autocompleteFormatString(path) { + let notification; + + const { base_directory } = path.reduce((acc, key) => acc[key] ?? {}, this.form.resolved); + + const schema = getSchema(path, this.info.globalState.schema.source_data); + + const isFile = "file_path" in schema.properties; + const pathType = isFile ? "file" : "directory"; + + const description = isFile ? schema.properties.file_path.description : schema.properties.folder_path.description; + + const notify = (message, type) => { + if (notification) this.dismiss(notification); + return (notification = this.notify(message, type)); + }; + + if (!base_directory) { + const message = `Please fill out the base directory for ${header(path[0])} before attempting auto-completion.`; + notify(message, "error"); + throw new Error(message); + } + + const modal = new Modal({ + header: "Autocomplete Format String", + }); + + const content = document.createElement("div"); + Object.assign(content.style, { + padding: "25px", + }); + + const form = new JSONSchemaForm({ + validateEmptyValues: false, + schema: { + type: "object", + properties: { + path: { + type: "string", + title: `Example ${isFile ? "File" : "Folder"}`, + format: pathType, + description: description ?? `Provide an example ${pathType} for the selected interface`, + }, + subject_id: { + type: "string", + description: "The subject ID in the above entry", + }, + session_id: { + type: "string", + description: "The session ID in the above entry", + }, + }, + required: propOrder, + order: propOrder, + }, + validateOnChange: async (name, parent) => { + const value = parent[name]; + + if (name === "path") { + const toUpdate = ["subject_id", "session_id"]; + toUpdate.forEach((key) => form.getFormElement([key]).requestUpdate()); + + if (value) { + if (fs.lstatSync(value).isSymbolicLink()) + return [ + { + type: "error", + message: "This feature does not support symbolic links. Please provide a valid path.", + }, + ]; + + if (base_directory) { + if (!value.includes(base_directory)) + return [ + { + type: "error", + message: + "The provided path must include the base directory.
      This is likely due to the target being contained in a symlink, which is unsupported by this feature.", + }, + ]; + } + + const errors = []; + for (let key in parent) { + if (key === name) continue; + if (!value.includes(parent[key])) + errors.push({ + type: "error", + message: `${header(name)} not found in the updated path.`, + }); + } + } + } else { + if (!parent.path) return; + if (!value) return; + + if (!parent.path.includes(value)) + return [ + { + type: "error", + message: `${header(name)} not found in the provided path.`, + }, + ]; + } + }, + }); + + content.append(form); + modal.append(content); + + modal.onClose = async () => notify("Format String Path was not completed.", "error"); + + return new Promise((resolve) => { + const button = new Button({ + label: "Submit", + primary: true, + onClick: async () => { + await form.validate().catch((e) => { + notify(e.message, "error"); + throw e; + }); + + const results = await run("locate/autocomplete", { + base_directory, + additional_metadata: {}, + ...form.results, + }); + const input = this.form.getFormElement([...path, "format_string_path"]); + input.updateData(results.format_string); + this.save(); + resolve(results.format_string); + }, + }); + + modal.footer = button; + + modal.open = true; + + document.body.append(modal); + }).finally(() => { + modal.remove(); + }); +} + +export class GuidedPathExpansionPage extends Page { + #notification; + + constructor(...args) { + super(...args); + } + + header = { + subtitle: "Automatic source data detection for multiple subjects / sessions", + }; + + #initialize = () => (this.localState = merge(this.info.globalState.structure, { results: {} })); + + workflow = { + subject_id: {}, + session_id: {}, + base_directory: {}, + locate_data: { + skip: () => { + this.#initialize(); + const globalState = this.info.globalState; + merge({ structure: this.localState }, globalState); // Merge the actual entries into the structure + + // Force single subject/session if not keeping existing data + // if (!globalState.results) { + + const subject_id = this.workflow.subject_id.value; + const session_id = this.workflow.session_id.value; + + // Map existing results to new subject information (if available) + const existingResults = Object.values(Object.values(globalState.results ?? {})[0] ?? {})[0] ?? {}; + + const existingMetadata = existingResults.metadata ?? {}; + const existingSourceData = existingResults.source_data; + + const source_data = {}; + for (let key in globalState.interfaces) { + const existing = existingSourceData?.[key]; + if (existing) source_data[key] = existing ?? {}; + } + + const sub_id = subject_id ?? ""; + const ses_id = session_id ?? ""; + + // Skip if results already exist without manual IDs + if ((!subject_id || !session_id) && globalState.results) return; + // Otherwise reset the results to the new subject/session + else { + globalState.results = {}; + + globalState.results[sub_id] = {}; + + const metadata = structuredClone(existingMetadata); + if (!metadata.NWBFile) metadata.NWBFile = {}; + if (!metadata.Subject) metadata.Subject = {}; + metadata.NWBFile.session_id = ses_id; + metadata.Subject.subject_id = sub_id; + + globalState.results[sub_id][ses_id] = { source_data, metadata }; + } + + this.save({}, false); // Ensure this structure is saved + }, + }, + }; + + beforeSave = async () => { + const globalState = this.info.globalState; + merge({ structure: this.localState }, globalState); // Merge the actual entries into the structure + + const structure = globalState.structure.results; + + await this.form.validate(); + + const globalBaseDirectory = this.workflow.base_directory.value; + + const finalStructure = {}; + for (let key in structure) { + const entry = { ...structure[key] }; + const fstring = entry.format_string_path; + if (!fstring) continue; + if (fstring.split(".").length > 1) entry.file_path = fstring; + else entry.folder_path = fstring; + delete entry.format_string_path; + + if (!entry.base_directory && globalBaseDirectory) entry.base_directory = globalBaseDirectory; + + finalStructure[key] = entry; + } + + if (Object.keys(finalStructure).length === 0) { + const message = + "Please configure at least one interface.
      Otherwise, revisit Pipeline Workflow to update your configuration."; + this.#notification = this.notify(message, "error"); + throw message; + } + + const results = await run(`locate`, finalStructure, { title: "Locating Data" }).catch((error) => { + this.notify(error.message, "error"); + throw error; + }); + + const subjects = Object.keys(results); + if (subjects.length === 0) { + if (this.#notification) this.dismiss(this.#notification); + const message = "No subjects found with the current configuration. Please try again."; + this.#notification = this.notify(message, "error"); + throw message; + } + + // globalState.results = {} // Clear existing results + + // Save an overall results object organized by subject and session + merge({ results }, globalState); + + const globalResults = globalState.results; + + for (let sub in globalResults) { + const subRef = results[sub]; + if (!subRef) + delete globalResults[sub]; // Delete removed subjects + else { + for (let ses in globalResults[sub]) { + const sesRef = subRef[ses]; + + if (!sesRef) + delete globalResults[sub][ses]; // Delete removed sessions + else { + const globalSesRef = globalResults[sub][ses]; + + for (let name in globalSesRef.source_data) { + if (!sesRef.source_data[name]) delete globalSesRef.source_data[name]; // Delete removed interfaces + } + } + } + + if (Object.keys(globalResults[sub]).length === 0) delete globalResults[sub]; // Delete empty subjects + } + } + }; + + footer = { + onNext: async () => { + await this.save(); // Save in case the request fails + + await this.form.validate(); + + return this.to(1); + }, + }; + + localState = {}; + + render() { + const structureState = this.#initialize(); + + // Require properties for all sources + const generatedSchema = { type: "object", properties: {}, additionalProperties: false }; + const controls = {}; + + const baseDirectory = this.workflow.base_directory.value; + const globals = (structureState.globals = {}); + + for (let key in this.info.globalState.interfaces) { + generatedSchema.properties[key] = { type: "object", ...pathExpansionSchema }; + + if (baseDirectory) globals[key] = { base_directory: baseDirectory }; + + controls[key] = { + format_string_path: [ + new Button({ + label: "Autocomplete", + icon: autocompleteIcon, + buttonStyles: { + width: "max-content", + }, + onClick: async () => autocompleteFormatString.call(this, [key]), + }), + ], + }; + } + structureState.schema = generatedSchema; + + const form = (this.form = new JSONSchemaForm({ + ...structureState, + onThrow, + validateEmptyValues: null, + + controls, + + // NOTE: These are custom coupled form inputs + onUpdate: (path, value) => { + this.unsavedUpdates = "conversions"; + + const parentPath = [...path]; + const name = parentPath.pop(); + + if (name === "base_directory") { + form.getFormElement([...parentPath, "base_directory"]).value = value; // Update value pre-emptively + const input = form.getFormElement([...parentPath, "format_string_path"]); + if (input.value) input.updateData(input.value, true); + } + }, + validateOnChange: async (name, parent, parentPath) => { + const value = parent[name]; + + if (fs) { + const baseDir = form.getFormElement([...parentPath, "base_directory"]); + if (name === "format_string_path") { + if (value && baseDir && !baseDir.value) { + return [ + { + message: html`A base directory must be provided to locate your files.`, + type: "error", + }, + ]; + } + + const base_directory = [...parentPath, "base_directory"].reduce( + (acc, key) => acc[key], + this.form.resolved + ); + + if (!base_directory) return true; // Do not calculate if base is not found + + const entry = { base_directory }; + + if (value.split(".").length > 1) entry.file_path = value; + else entry.folder_path = value; + + const interfaceName = parentPath.slice(-1)[0]; + + const results = await run(`locate`, { [interfaceName]: entry }, { swal: false }).catch( + (error) => { + this.notify(error.message, "error"); + throw error; + } + ); + + const resolved = []; + + for (let sub in results) { + for (let ses in results[sub]) { + const source_data = results[sub][ses].source_data[interfaceName]; + const path = source_data.file_path ?? source_data.folder_path; + resolved.push(path.slice(base_directory.length + 1)); + } + } + + if (resolved.length === 0) + return [ + { + message: html`No source files found using the provided information.`, + type: "warning", + }, + ]; + + return [ + { + message: html`

      Source Files Found

      + ${base_directory} + ${new List({ + items: resolved.map((path) => { + return { value: path }; + }), + editable: false, + })}`, + type: "info", + }, + ]; + } + } + }, + })); + + form.style.width = "100%"; + + return form; + } +} + +customElements.get("nwbguide-guided-pathexpansion-page") || + customElements.define("nwbguide-guided-pathexpansion-page", GuidedPathExpansionPage); diff --git a/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedSourceData.js b/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedSourceData.js index 9fca8680c..2a2f787ae 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedSourceData.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedSourceData.js @@ -1,384 +1,384 @@ -import Swal from "sweetalert2"; -import { isStorybook } from "../../../../dependencies/globals"; -import { JSONSchemaForm } from "../../../JSONSchemaForm.js"; -import { InstanceManager } from "../../../InstanceManager.js"; -import { ManagedPage } from "./ManagedPage.js"; -import { onThrow } from "../../../../errors"; -import { merge, sanitize } from "../../utils"; -import preprocessSourceDataSchema from "../../../../../../../schemas/source-data.schema"; - -import { createGlobalFormModal } from "../../../forms/GlobalFormModal"; -import { header } from "../../../forms/utils"; -import { Button } from "../../../Button.js"; - -import globalIcon from "../../../assets/global.svg?raw"; - -import { baseUrl } from "../../../../server/globals"; - -import { run } from "../options/utils.js"; -import { getInfoFromId } from "./utils"; -import { Modal } from "../../../Modal"; - -const propsToIgnore = { - "*": { - verbose: true, - es_key: true, - exclude_shanks: true, - load_sync_channel: true, - stream_id: true, // NOTE: May be desired for other interfaces - nsx_override: true, - combined: true, - plane_no: true, - }, -}; - -export class GuidedSourceDataPage extends ManagedPage { - constructor(...args) { - super(...args); - this.style.height = "100%"; // Fix main section - } - - beforeSave = () => { - merge(this.localState, this.info.globalState); - }; - - #globalButton = new Button({ - icon: globalIcon, - label: "Edit Default Values", - onClick: () => { - this.#globalModal.form.results = structuredClone(this.info.globalState.project.SourceData ?? {}); - this.#globalModal.open = true; - }, - }); - - header = { - controls: [this.#globalButton], - subtitle: - "Specify the file and folder locations on your local system for each interface, as well as any additional details that might be required.", - }; - - workflow = { - multiple_sessions: { - elements: [this.#globalButton], - }, - }; - - footer = { - onNext: async () => { - await this.save(); // Save in case the conversion fails - - for (let { form } of this.forms) await form.validate(); // Will throw an error in the callback - - // const previousResults = this.info.globalState.metadata.results - - let stillFireSwal = true; - const fireSwal = () => { - Swal.fire({ - title: "Getting metadata for source data", - html: "Please wait...", - allowEscapeKey: false, - allowOutsideClick: false, - heightAuto: false, - backdrop: "rgba(0,0,0, 0.4)", - timerProgressBar: false, - didOpen: () => { - Swal.showLoading(); - }, - }); - }; - - setTimeout(() => { - if (stillFireSwal) fireSwal(); - }); - - await Promise.all( - Object.values(this.forms).map(async ({ subject, session, form }) => { - const info = this.info.globalState.results[subject][session]; - - // NOTE: This clears all user-defined results - const result = await fetch(`${baseUrl}/neuroconv/metadata`, { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - source_data: sanitize(structuredClone(form.resolved)), // Use resolved values, including global source data - interfaces: this.info.globalState.interfaces, - }), - }) - .then((res) => res.json()) - .catch((error) => { - Swal.close(); - stillFireSwal = false; - this.notify(`Critical Error: ${error.message}`, "error", 4000); - throw error; - }); - - Swal.close(); - - if (isStorybook) return; - - if (result.message) { - const [type, ...splitText] = result.message.split(":"); - const text = splitText.length - ? splitText.join(":").replaceAll("<", "<").replaceAll(">", ">") - : result.traceback - ? `
      ${result.traceback.trim().split("\n").slice(-2)[0].trim()}
      ` - : ""; - - const message = `

      Request Failed

      ${type}

      ${text}

      `; - this.notify(message, "error"); - throw result; - } - - const { results: metadata, schema } = result; - - // Merge arrays from generated pipeline data - if (info.metadata.__generated) { - const generated = info.metadata.__generated; - info.metadata = merge(merge(generated, metadata, { arrays: true }), info.metadata); - } - - // Merge new results with old metadata - else merge(metadata, info.metadata); - - // Mirror structure with metadata schema - const schemaGlobal = this.info.globalState.schema; - if (!schemaGlobal.metadata) schemaGlobal.metadata = {}; - if (!schemaGlobal.metadata[subject]) schemaGlobal.metadata[subject] = {}; - schemaGlobal.metadata[subject][session] = schema; - }) - ); - - await this.save(undefined, false); // Just save new raw values - - return this.to(1); - }, - }; - - createForm = ({ subject, session, info }) => { - const hasMultipleSessions = this.workflow.multiple_sessions.value; - - const instanceId = `sub-${subject}/ses-${session}`; - - const schema = structuredClone(this.info.globalState.schema.source_data); - delete schema.description; - - const form = new JSONSchemaForm({ - identifier: instanceId, - schema: preprocessSourceDataSchema(schema), - results: info.source_data, - emptyMessage: "No source data required for this session.", - ignore: propsToIgnore, - globals: hasMultipleSessions ? this.info.globalState.project.SourceData : undefined, - onOverride: (name) => { - this.notify(`${header(name)} has been overridden with a global value.`, "warning", 3000); - }, - // onlyRequired: true, - onUpdate: () => (this.unsavedUpdates = "conversions"), - onStatusChange: (state) => this.manager.updateState(instanceId, state), - onThrow, - }); - - form.style.height = "100%"; - - return { - subject, - session, - form, - }; - }; - - #globalModal = null; - - connectedCallback() { - super.connectedCallback(); - - const schema = structuredClone(this.info.globalState.schema.source_data); - delete schema.description; - - const modal = (this.#globalModal = createGlobalFormModal.call(this, { - header: "Global Source Data", - propsToRemove: { - "*": { - ...propsToIgnore["*"], - folder_path: true, - file_path: true, - // NOTE: Still keeping plural path specifications for now - }, - }, - key: "SourceData", - schema, - hasInstances: true, - })); - document.body.append(modal); - } - - disconnectedCallback() { - super.disconnectedCallback(); - if (this.#globalModal) this.#globalModal.remove(); - } - - updated() { - const dashboard = document.querySelector("nwb-dashboard"); - const page = dashboard.page; - } - - render() { - this.localState = { results: structuredClone(this.info.globalState.results ?? {}) }; - - this.forms = this.mapSessions(this.createForm, this.localState.results); - - let instances = {}; - this.forms.forEach(({ subject, session, form }) => { - if (!instances[`sub-${subject}`]) instances[`sub-${subject}`] = {}; - instances[`sub-${subject}`][`ses-${session}`] = form; - }); - - this.manager = new InstanceManager({ - header: "Sessions", - // instanceType: 'Session', - instances, - controls: [ - { - name: "Check Alignment", - primary: true, - onClick: async (id) => { - const { globalState } = this.info; - - const { subject, session } = getInfoFromId(id); - - const souceCopy = structuredClone(globalState.results[subject][session].source_data); - - const sessionInfo = { - interfaces: globalState.interfaces, - source_data: merge(globalState.project.SourceData, souceCopy), - }; - - const results = await run("alignment", sessionInfo, { - title: "Checking Alignment", - message: "Please wait...", - }); - - const header = document.createElement("div"); - const h2 = document.createElement("h2"); - Object.assign(h2.style, { - marginBottom: "10px", - }); - h2.innerText = `Alignment Preview: ${subject}/${session}`; - const warning = document.createElement("small"); - warning.innerHTML = - "Warning: This is just a preview. We do not currently have the features implemented to change the alignment of your interfaces."; - header.append(h2, warning); - - const modal = new Modal({ - header, - }); - - document.body.append(modal); - - const content = document.createElement("div"); - Object.assign(content.style, { - display: "flex", - flexDirection: "column", - gap: "20px", - padding: "20px", - }); - - modal.append(content); - - const flatTimes = Object.values(results) - .map((interfaceTimestamps) => { - return [interfaceTimestamps[0], interfaceTimestamps.slice(-1)[0]]; - }) - .flat() - .filter((timestamp) => !isNaN(timestamp)); - - const minTime = Math.min(...flatTimes); - const maxTime = Math.max(...flatTimes); - - const normalizeTime = (time) => (time - minTime) / (maxTime - minTime); - const normalizeTimePct = (time) => `${normalizeTime(time) * 100}%`; - - for (let name in results) { - const container = document.createElement("div"); - const label = document.createElement("label"); - label.innerText = name; - container.append(label); - - const data = results[name]; - - const barContainer = document.createElement("div"); - Object.assign(barContainer.style, { - height: "10px", - width: "100%", - marginTop: "5px", - border: "1px solid lightgray", - position: "relative", - }); - - if (data.length) { - const firstTime = data[0]; - const lastTime = data[data.length - 1]; - - label.innerText += ` (${firstTime.toFixed(2)} - ${lastTime.toFixed(2)} sec)`; - - const firstTimePct = normalizeTimePct(firstTime); - const lastTimePct = normalizeTimePct(lastTime); - - const width = `calc(${lastTimePct} - ${firstTimePct})`; - - const bar = document.createElement("div"); - - Object.assign(bar.style, { - position: "absolute", - - left: firstTimePct, - width: width, - height: "100%", - background: "blue", - }); - - barContainer.append(bar); - } else { - barContainer.style.background = - "repeating-linear-gradient(45deg, lightgray, lightgray 10px, white 10px, white 20px)"; - } - - container.append(barContainer); - - content.append(container); - } - - modal.open = true; - }, - }, - ], - // onAdded: (path) => { - - // let details = this.getDetails(path) - - // const info = this.addSession(details) - - // const form = this.createForm({ - // ...details, - // info - // }) - - // this.forms.push(form) - - // return { - // key: `sub-${details.subject}/ses-${details.session}`, - // value: form.form - // } - // }, - // onRemoved: (_, path) => { - // let details = this.getDetails(path) - // this.removeSession(details) - // } - }); - - return this.manager; - } -} - -customElements.get("nwbguide-guided-sourcedata-page") || - customElements.define("nwbguide-guided-sourcedata-page", GuidedSourceDataPage); +import Swal from "sweetalert2"; +import { isStorybook } from "../../../../dependencies/globals"; +import { JSONSchemaForm } from "../../../JSONSchemaForm.js"; +import { InstanceManager } from "../../../InstanceManager.js"; +import { ManagedPage } from "./ManagedPage.js"; +import { onThrow } from "../../../../errors"; +import { merge, sanitize } from "../../utils"; +import preprocessSourceDataSchema from "../../../../../../../schemas/source-data.schema"; + +import { createGlobalFormModal } from "../../../forms/GlobalFormModal"; +import { header } from "../../../forms/utils"; +import { Button } from "../../../Button.js"; + +import globalIcon from "../../../assets/global.svg?raw"; + +import { baseUrl } from "../../../../server/globals"; + +import { run } from "../options/utils.js"; +import { getInfoFromId } from "./utils"; +import { Modal } from "../../../Modal"; + +const propsToIgnore = { + "*": { + verbose: true, + es_key: true, + exclude_shanks: true, + load_sync_channel: true, + stream_id: true, // NOTE: May be desired for other interfaces + nsx_override: true, + combined: true, + plane_no: true, + }, +}; + +export class GuidedSourceDataPage extends ManagedPage { + constructor(...args) { + super(...args); + this.style.height = "100%"; // Fix main section + } + + beforeSave = () => { + merge(this.localState, this.info.globalState); + }; + + #globalButton = new Button({ + icon: globalIcon, + label: "Edit Default Values", + onClick: () => { + this.#globalModal.form.results = structuredClone(this.info.globalState.project.SourceData ?? {}); + this.#globalModal.open = true; + }, + }); + + header = { + controls: [this.#globalButton], + subtitle: + "Specify the file and folder locations on your local system for each interface, as well as any additional details that might be required.", + }; + + workflow = { + multiple_sessions: { + elements: [this.#globalButton], + }, + }; + + footer = { + onNext: async () => { + await this.save(); // Save in case the conversion fails + + for (let { form } of this.forms) await form.validate(); // Will throw an error in the callback + + // const previousResults = this.info.globalState.metadata.results + + let stillFireSwal = true; + const fireSwal = () => { + Swal.fire({ + title: "Getting metadata for source data", + html: "Please wait...", + allowEscapeKey: false, + allowOutsideClick: false, + heightAuto: false, + backdrop: "rgba(0,0,0, 0.4)", + timerProgressBar: false, + didOpen: () => { + Swal.showLoading(); + }, + }); + }; + + setTimeout(() => { + if (stillFireSwal) fireSwal(); + }); + + await Promise.all( + Object.values(this.forms).map(async ({ subject, session, form }) => { + const info = this.info.globalState.results[subject][session]; + + // NOTE: This clears all user-defined results + const result = await fetch(`${baseUrl}/neuroconv/metadata`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + source_data: sanitize(structuredClone(form.resolved)), // Use resolved values, including global source data + interfaces: this.info.globalState.interfaces, + }), + }) + .then((res) => res.json()) + .catch((error) => { + Swal.close(); + stillFireSwal = false; + this.notify(`Critical Error: ${error.message}`, "error", 4000); + throw error; + }); + + Swal.close(); + + if (isStorybook) return; + + if (result.message) { + const [type, ...splitText] = result.message.split(":"); + const text = splitText.length + ? splitText.join(":").replaceAll("<", "<").replaceAll(">", ">") + : result.traceback + ? `
      ${result.traceback.trim().split("\n").slice(-2)[0].trim()}
      ` + : ""; + + const message = `

      Request Failed

      ${type}

      ${text}

      `; + this.notify(message, "error"); + throw result; + } + + const { results: metadata, schema } = result; + + // Merge arrays from generated pipeline data + if (info.metadata.__generated) { + const generated = info.metadata.__generated; + info.metadata = merge(merge(generated, metadata, { arrays: true }), info.metadata); + } + + // Merge new results with old metadata + else merge(metadata, info.metadata); + + // Mirror structure with metadata schema + const schemaGlobal = this.info.globalState.schema; + if (!schemaGlobal.metadata) schemaGlobal.metadata = {}; + if (!schemaGlobal.metadata[subject]) schemaGlobal.metadata[subject] = {}; + schemaGlobal.metadata[subject][session] = schema; + }) + ); + + await this.save(undefined, false); // Just save new raw values + + return this.to(1); + }, + }; + + createForm = ({ subject, session, info }) => { + const hasMultipleSessions = this.workflow.multiple_sessions.value; + + const instanceId = `sub-${subject}/ses-${session}`; + + const schema = structuredClone(this.info.globalState.schema.source_data); + delete schema.description; + + const form = new JSONSchemaForm({ + identifier: instanceId, + schema: preprocessSourceDataSchema(schema), + results: info.source_data, + emptyMessage: "No source data required for this session.", + ignore: propsToIgnore, + globals: hasMultipleSessions ? this.info.globalState.project.SourceData : undefined, + onOverride: (name) => { + this.notify(`${header(name)} has been overridden with a global value.`, "warning", 3000); + }, + // onlyRequired: true, + onUpdate: () => (this.unsavedUpdates = "conversions"), + onStatusChange: (state) => this.manager.updateState(instanceId, state), + onThrow, + }); + + form.style.height = "100%"; + + return { + subject, + session, + form, + }; + }; + + #globalModal = null; + + connectedCallback() { + super.connectedCallback(); + + const schema = structuredClone(this.info.globalState.schema.source_data); + delete schema.description; + + const modal = (this.#globalModal = createGlobalFormModal.call(this, { + header: "Global Source Data", + propsToRemove: { + "*": { + ...propsToIgnore["*"], + folder_path: true, + file_path: true, + // NOTE: Still keeping plural path specifications for now + }, + }, + key: "SourceData", + schema, + hasInstances: true, + })); + document.body.append(modal); + } + + disconnectedCallback() { + super.disconnectedCallback(); + if (this.#globalModal) this.#globalModal.remove(); + } + + updated() { + const dashboard = document.querySelector("nwb-dashboard"); + const page = dashboard.page; + } + + render() { + this.localState = { results: structuredClone(this.info.globalState.results ?? {}) }; + + this.forms = this.mapSessions(this.createForm, this.localState.results); + + let instances = {}; + this.forms.forEach(({ subject, session, form }) => { + if (!instances[`sub-${subject}`]) instances[`sub-${subject}`] = {}; + instances[`sub-${subject}`][`ses-${session}`] = form; + }); + + this.manager = new InstanceManager({ + header: "Sessions", + // instanceType: 'Session', + instances, + controls: [ + { + name: "Check Alignment", + primary: true, + onClick: async (id) => { + const { globalState } = this.info; + + const { subject, session } = getInfoFromId(id); + + const souceCopy = structuredClone(globalState.results[subject][session].source_data); + + const sessionInfo = { + interfaces: globalState.interfaces, + source_data: merge(globalState.project.SourceData, souceCopy), + }; + + const results = await run("alignment", sessionInfo, { + title: "Checking Alignment", + message: "Please wait...", + }); + + const header = document.createElement("div"); + const h2 = document.createElement("h2"); + Object.assign(h2.style, { + marginBottom: "10px", + }); + h2.innerText = `Alignment Preview: ${subject}/${session}`; + const warning = document.createElement("small"); + warning.innerHTML = + "Warning: This is just a preview. We do not currently have the features implemented to change the alignment of your interfaces."; + header.append(h2, warning); + + const modal = new Modal({ + header, + }); + + document.body.append(modal); + + const content = document.createElement("div"); + Object.assign(content.style, { + display: "flex", + flexDirection: "column", + gap: "20px", + padding: "20px", + }); + + modal.append(content); + + const flatTimes = Object.values(results) + .map((interfaceTimestamps) => { + return [interfaceTimestamps[0], interfaceTimestamps.slice(-1)[0]]; + }) + .flat() + .filter((timestamp) => !isNaN(timestamp)); + + const minTime = Math.min(...flatTimes); + const maxTime = Math.max(...flatTimes); + + const normalizeTime = (time) => (time - minTime) / (maxTime - minTime); + const normalizeTimePct = (time) => `${normalizeTime(time) * 100}%`; + + for (let name in results) { + const container = document.createElement("div"); + const label = document.createElement("label"); + label.innerText = name; + container.append(label); + + const data = results[name]; + + const barContainer = document.createElement("div"); + Object.assign(barContainer.style, { + height: "10px", + width: "100%", + marginTop: "5px", + border: "1px solid lightgray", + position: "relative", + }); + + if (data.length) { + const firstTime = data[0]; + const lastTime = data[data.length - 1]; + + label.innerText += ` (${firstTime.toFixed(2)} - ${lastTime.toFixed(2)} sec)`; + + const firstTimePct = normalizeTimePct(firstTime); + const lastTimePct = normalizeTimePct(lastTime); + + const width = `calc(${lastTimePct} - ${firstTimePct})`; + + const bar = document.createElement("div"); + + Object.assign(bar.style, { + position: "absolute", + + left: firstTimePct, + width: width, + height: "100%", + background: "blue", + }); + + barContainer.append(bar); + } else { + barContainer.style.background = + "repeating-linear-gradient(45deg, lightgray, lightgray 10px, white 10px, white 20px)"; + } + + container.append(barContainer); + + content.append(container); + } + + modal.open = true; + }, + }, + ], + // onAdded: (path) => { + + // let details = this.getDetails(path) + + // const info = this.addSession(details) + + // const form = this.createForm({ + // ...details, + // info + // }) + + // this.forms.push(form) + + // return { + // key: `sub-${details.subject}/ses-${details.session}`, + // value: form.form + // } + // }, + // onRemoved: (_, path) => { + // let details = this.getDetails(path) + // this.removeSession(details) + // } + }); + + return this.manager; + } +} + +customElements.get("nwbguide-guided-sourcedata-page") || + customElements.define("nwbguide-guided-sourcedata-page", GuidedSourceDataPage); diff --git a/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedStructure.js b/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedStructure.js index 0cfa26dec..cda4756ab 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedStructure.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/data/GuidedStructure.js @@ -1,192 +1,192 @@ -import { html } from "lit"; -import { Page } from "../../Page.js"; - -// For Multi-Select Form -import { Button } from "../../../Button.js"; -import { supportedInterfaces } from "../../../../globals"; -import { Search } from "../../../Search.js"; -import { Modal } from "../../../Modal"; -import { List } from "../../../List"; -import { baseUrl } from "../../../../server/globals"; -import { ready } from "../../../../../../../schemas/interfaces.info"; - -const defaultEmptyMessage = "No formats selected"; - -const categories = [ - { - test: /.*Interface.*/, - value: "Single-Stream Interfaces", - }, - { - test: /.*Converter.*/, - value: "Multi-Stream Converters", - }, -]; - -export class GuidedStructurePage extends Page { - constructor(...args) { - super(...args); - - // Handle Search Bar Interactions - this.search.list.style.position = "unset"; - this.search.onSelect = (item) => { - this.list.add(item); - this.searchModal.toggle(false); - }; - - this.addButton.innerText = "Add Format"; - this.addButton.onClick = () => { - this.search.shadowRoot.querySelector("input").focus(); - this.searchModal.toggle(true); - }; - - this.searchModal.appendChild(this.search); - } - - header = { - subtitle: "List all the data formats in your dataset.", - }; - - search = new Search({ - disabledLabel: "Not supported", - headerStyles: { - padding: "15px", - }, - }); - - list = new List({ emptyMessage: defaultEmptyMessage }); - - addButton = new Button(); - - searchModal = new Modal({ - width: "100%", - height: "100%", - }); - - getSchema = async () => { - const interfaces = { ...this.list.object }; - - const schema = - Object.keys(interfaces).length === 0 - ? {} - : await fetch(`${baseUrl}/neuroconv/schema`, { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify(interfaces), - }).then((res) => res.json()); - - let schemas = this.info.globalState.schema; - if (!schemas) schemas = this.info.globalState.schema = {}; - - schemas.source_data = schema; - this.unsavedUpdates = true; - }; - - beforeSave = async () => { - const interfaces = (this.info.globalState.interfaces = { ...this.list.object }); - - // Remove or reassign extra interfaces in results - if (this.info.globalState.results) { - this.mapSessions(({ info }) => { - const metadata = [info.source_data]; - metadata.forEach((results) => { - Object.keys(results).forEach((key) => { - if (!interfaces[key]) { - const renamed = this.list.items.find((item) => item.originalKey === key); - if (renamed) results[renamed.key] = results[key]; - delete results[key]; - } - }); - }); - }); - } - - await this.save(undefined, false); // Interim save, in case the schema request fails - await this.getSchema(); - }; - - footer = { - onNext: async () => { - if (!this.info.globalState.schema) await this.getSchema(); // Initialize schema - return this.to(1); - }, - }; - - async updated() { - const { interfaces = {} } = this.info.globalState; - - this.list.emptyMessage = "Loading valid formats..."; - - const interfaceInfo = await ready.interfaces; - - this.search.options = Object.entries(interfaceInfo).map(([key, value]) => { - const displayName = key.trim(); - - const interfaceName = value.name; - - const category = categories.find(({ test }) => test.test(interfaceName))?.value; - - const structuredKeywords = { - suffixes: value.suffixes ?? [], - }; - - return { - ...value, // Contains label and name already (extra metadata) - key: displayName, - value: interfaceName, - structuredKeywords, - category, - disabled: !supportedInterfaces.includes(interfaceName), - }; - }); - - this.list.emptyMessage = defaultEmptyMessage; - - const items = []; - - for (const [key, name] of Object.entries(interfaces)) { - let found = this.search.options?.find((item) => item.value === name); - - // If not found, spoof based on the key and names provided previously - if (!found) { - found = { - key, - label: name.replace("Interface", ""), - value: name, - }; - } - - items.push({ ...found, key }); - } - - const ogList = this.list; - - this.list = new List({ - items, - emptyMessage: defaultEmptyMessage, - onChange: () => (this.unsavedUpdates = "conversions"), - }); - - this.list.style.display = "inline-block"; - - ogList.replaceWith(this.list); - - this.addButton.removeAttribute("hidden"); - super.updated(); // Call if updating data - } - - render() { - // Reset list - this.addButton.setAttribute("hidden", ""); - - return html` -
      - ${this.list} ${this.addButton} -
      - ${this.searchModal} - `; - } -} - -customElements.get("nwbguide-guided-structure-page") || - customElements.define("nwbguide-guided-structure-page", GuidedStructurePage); +import { html } from "lit"; +import { Page } from "../../Page.js"; + +// For Multi-Select Form +import { Button } from "../../../Button.js"; +import { supportedInterfaces } from "../../../../globals"; +import { Search } from "../../../Search.js"; +import { Modal } from "../../../Modal"; +import { List } from "../../../List"; +import { baseUrl } from "../../../../server/globals"; +import { ready } from "../../../../../../../schemas/interfaces.info"; + +const defaultEmptyMessage = "No formats selected"; + +const categories = [ + { + test: /.*Interface.*/, + value: "Single-Stream Interfaces", + }, + { + test: /.*Converter.*/, + value: "Multi-Stream Converters", + }, +]; + +export class GuidedStructurePage extends Page { + constructor(...args) { + super(...args); + + // Handle Search Bar Interactions + this.search.list.style.position = "unset"; + this.search.onSelect = (item) => { + this.list.add(item); + this.searchModal.toggle(false); + }; + + this.addButton.innerText = "Add Format"; + this.addButton.onClick = () => { + this.search.shadowRoot.querySelector("input").focus(); + this.searchModal.toggle(true); + }; + + this.searchModal.appendChild(this.search); + } + + header = { + subtitle: "List all the data formats in your dataset.", + }; + + search = new Search({ + disabledLabel: "Not supported", + headerStyles: { + padding: "15px", + }, + }); + + list = new List({ emptyMessage: defaultEmptyMessage }); + + addButton = new Button(); + + searchModal = new Modal({ + width: "100%", + height: "100%", + }); + + getSchema = async () => { + const interfaces = { ...this.list.object }; + + const schema = + Object.keys(interfaces).length === 0 + ? {} + : await fetch(`${baseUrl}/neuroconv/schema`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(interfaces), + }).then((res) => res.json()); + + let schemas = this.info.globalState.schema; + if (!schemas) schemas = this.info.globalState.schema = {}; + + schemas.source_data = schema; + this.unsavedUpdates = true; + }; + + beforeSave = async () => { + const interfaces = (this.info.globalState.interfaces = { ...this.list.object }); + + // Remove or reassign extra interfaces in results + if (this.info.globalState.results) { + this.mapSessions(({ info }) => { + const metadata = [info.source_data]; + metadata.forEach((results) => { + Object.keys(results).forEach((key) => { + if (!interfaces[key]) { + const renamed = this.list.items.find((item) => item.originalKey === key); + if (renamed) results[renamed.key] = results[key]; + delete results[key]; + } + }); + }); + }); + } + + await this.save(undefined, false); // Interim save, in case the schema request fails + await this.getSchema(); + }; + + footer = { + onNext: async () => { + if (!this.info.globalState.schema) await this.getSchema(); // Initialize schema + return this.to(1); + }, + }; + + async updated() { + const { interfaces = {} } = this.info.globalState; + + this.list.emptyMessage = "Loading valid formats..."; + + const interfaceInfo = await ready.interfaces; + + this.search.options = Object.entries(interfaceInfo).map(([key, value]) => { + const displayName = key.trim(); + + const interfaceName = value.name; + + const category = categories.find(({ test }) => test.test(interfaceName))?.value; + + const structuredKeywords = { + suffixes: value.suffixes ?? [], + }; + + return { + ...value, // Contains label and name already (extra metadata) + key: displayName, + value: interfaceName, + structuredKeywords, + category, + disabled: !supportedInterfaces.includes(interfaceName), + }; + }); + + this.list.emptyMessage = defaultEmptyMessage; + + const items = []; + + for (const [key, name] of Object.entries(interfaces)) { + let found = this.search.options?.find((item) => item.value === name); + + // If not found, spoof based on the key and names provided previously + if (!found) { + found = { + key, + label: name.replace("Interface", ""), + value: name, + }; + } + + items.push({ ...found, key }); + } + + const ogList = this.list; + + this.list = new List({ + items, + emptyMessage: defaultEmptyMessage, + onChange: () => (this.unsavedUpdates = "conversions"), + }); + + this.list.style.display = "inline-block"; + + ogList.replaceWith(this.list); + + this.addButton.removeAttribute("hidden"); + super.updated(); // Call if updating data + } + + render() { + // Reset list + this.addButton.setAttribute("hidden", ""); + + return html` +
      + ${this.list} ${this.addButton} +
      + ${this.searchModal} + `; + } +} + +customElements.get("nwbguide-guided-structure-page") || + customElements.define("nwbguide-guided-structure-page", GuidedStructurePage); diff --git a/src/electron/renderer/src/stories/pages/guided-mode/data/ManagedPage.js b/src/electron/renderer/src/stories/pages/guided-mode/data/ManagedPage.js index 6c9459815..2990efdf3 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/data/ManagedPage.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/data/ManagedPage.js @@ -1,21 +1,21 @@ -import { Page } from "../../Page"; - -export class ManagedPage extends Page { - constructor(...args) { - super(...args); - } - - getDetails = (path) => { - let details = {}; - if (path.length !== 2) throw new Error("Path must have {subject}/{session} form."); - try { - const subSplit = path[0].split("-"); - const sesSplit = path[1].split("-"); - details.subject = subSplit.length === 2 ? subSplit[1] : subSplit[0]; - details.session = sesSplit.length === 2 ? sesSplit[1] : sesSplit[0]; - } catch (error) { - throw new Error("Path must have {subject}/{session} form."); - } - return details; - }; -} +import { Page } from "../../Page"; + +export class ManagedPage extends Page { + constructor(...args) { + super(...args); + } + + getDetails = (path) => { + let details = {}; + if (path.length !== 2) throw new Error("Path must have {subject}/{session} form."); + try { + const subSplit = path[0].split("-"); + const sesSplit = path[1].split("-"); + details.subject = subSplit.length === 2 ? subSplit[1] : subSplit[0]; + details.session = sesSplit.length === 2 ? sesSplit[1] : sesSplit[0]; + } catch (error) { + throw new Error("Path must have {subject}/{session} form."); + } + return details; + }; +} diff --git a/src/electron/renderer/src/stories/pages/guided-mode/data/utils.js b/src/electron/renderer/src/stories/pages/guided-mode/data/utils.js index 45fc8355b..f2c4fcf70 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/data/utils.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/data/utils.js @@ -1,126 +1,126 @@ -import { getEditableItems } from "../../../JSONSchemaInput.js"; -import { merge } from "../../utils"; - -// Merge project-wide data into metadata -export function populateWithProjectMetadata(info, globalState) { - const copy = structuredClone(info); - const toMerge = Object.entries(globalState.project).filter(([_, value]) => value && typeof value === "object"); - toMerge.forEach(([key, value]) => { - let internalMetadata = copy[key]; - if (!copy[key]) internalMetadata = copy[key] = {}; - for (let key in value) { - if (!(key in internalMetadata)) internalMetadata[key] = value[key]; // Prioritize existing results (cannot override with new information...) - } - }); - - return copy; -} - -export const getInfoFromId = (key) => { - let [subject, session] = key.split("/"); - if (subject.startsWith("sub-")) subject = subject.slice(4); - if (session.startsWith("ses-")) session = session.slice(4); - - return { subject, session }; -}; - -export function resolveGlobalOverrides(subject, globalState, resolveMultiSessionOverrides = true) { - const subjectMetadataCopy = { ...(globalState.subjects?.[subject] ?? {}) }; - delete subjectMetadataCopy.sessions; // Remove extra key from metadata - - if (resolveMultiSessionOverrides) { - const overrides = structuredClone(globalState.project ?? {}); // Copy project-wide metadata - - merge(subjectMetadataCopy, overrides.Subject ?? (overrides.Subject = {})); // Ensure Subject exists - - return overrides; - } - - return { Subject: subjectMetadataCopy }; -} - -const isPatternResult = Symbol("ispatternresult"); - -export function resolveFromPath(path, target) { - return path.reduce((acc, key) => { - if (!acc) return; - if (acc[isPatternResult]) return acc; - if (key in acc) return acc[key]; - else { - const items = getEditableItems(acc, true, { name: key }); - const object = items.reduce((acc, { key, value }) => (acc[key] = value), {}); - object[isPatternResult] = true; - return object; - } - }, target); -} - -export function drillSchemaProperties(schema = {}, callback, target, path = [], inPatternProperties = false) { - const properties = schema.properties ?? {}; - - const patternProperties = schema.patternProperties ?? {}; - - for (let regexp in patternProperties) { - const info = patternProperties[regexp]; - const updatedPath = [...path, regexp]; - callback(updatedPath, info, undefined, true); - drillSchemaProperties(info, callback, undefined, updatedPath, true, schema); - } - - for (let name in properties) { - const info = properties[name]; - - if (name === "definitions") continue; - - const updatedPath = [...path, name]; - - callback(updatedPath, info, target, undefined, schema); - - drillSchemaProperties(info, callback, target?.[name], updatedPath, inPatternProperties); - } - - return schema; -} - -export function resolveProperties(properties = {}, target, globals = {}) { - if ("properties" in properties && "type" in properties) properties = properties.properties; // Correct for when a schema is passed instead - - for (let name in properties) { - const info = properties[name]; - - const props = info.properties; - - if (!(name in target)) { - if (target.__disabled?.[name]) continue; // Skip disabled properties - - if (props) target[name] = {}; // Regisiter new interfaces in results - // if (info.type === "array") target[name] = []; // Auto-populate arrays (NOTE: Breaks PyNWB when adding to TwoPhotonSeries field...) - - // Apply global or default value if empty - if (name in globals) target[name] = globals[name]; - else if (info.default) target[name] = info.default; - } - - if (target[name]) resolveProperties(props, target[name], globals[name]); - } - - return target; -} - -// Explicitly resolve the results for a particular session (from both GUIDE-defined globals and the NWB Schema) -export function resolveMetadata(subject, session, globalState) { - const overrides = resolveGlobalOverrides(subject, globalState); // Unique per-subject (but not sessions) - const metadata = globalState.results[subject][session].metadata; - const results = structuredClone(metadata); // Copy the metadata results from the form - const schema = globalState.schema.metadata[subject][session]; - resolveProperties(schema, results, overrides); - return results; -} - -export function createResults({ subject, info }, globalState) { - const results = populateWithProjectMetadata(info.metadata, globalState); - const subjectGlobalsCopy = { ...globalState.subjects[subject] }; - delete subjectGlobalsCopy.sessions; // Remove extra key from metadata - merge(subjectGlobalsCopy, results.Subject); - return results; -} +import { getEditableItems } from "../../../JSONSchemaInput.js"; +import { merge } from "../../utils"; + +// Merge project-wide data into metadata +export function populateWithProjectMetadata(info, globalState) { + const copy = structuredClone(info); + const toMerge = Object.entries(globalState.project).filter(([_, value]) => value && typeof value === "object"); + toMerge.forEach(([key, value]) => { + let internalMetadata = copy[key]; + if (!copy[key]) internalMetadata = copy[key] = {}; + for (let key in value) { + if (!(key in internalMetadata)) internalMetadata[key] = value[key]; // Prioritize existing results (cannot override with new information...) + } + }); + + return copy; +} + +export const getInfoFromId = (key) => { + let [subject, session] = key.split("/"); + if (subject.startsWith("sub-")) subject = subject.slice(4); + if (session.startsWith("ses-")) session = session.slice(4); + + return { subject, session }; +}; + +export function resolveGlobalOverrides(subject, globalState, resolveMultiSessionOverrides = true) { + const subjectMetadataCopy = { ...(globalState.subjects?.[subject] ?? {}) }; + delete subjectMetadataCopy.sessions; // Remove extra key from metadata + + if (resolveMultiSessionOverrides) { + const overrides = structuredClone(globalState.project ?? {}); // Copy project-wide metadata + + merge(subjectMetadataCopy, overrides.Subject ?? (overrides.Subject = {})); // Ensure Subject exists + + return overrides; + } + + return { Subject: subjectMetadataCopy }; +} + +const isPatternResult = Symbol("ispatternresult"); + +export function resolveFromPath(path, target) { + return path.reduce((acc, key) => { + if (!acc) return; + if (acc[isPatternResult]) return acc; + if (key in acc) return acc[key]; + else { + const items = getEditableItems(acc, true, { name: key }); + const object = items.reduce((acc, { key, value }) => (acc[key] = value), {}); + object[isPatternResult] = true; + return object; + } + }, target); +} + +export function drillSchemaProperties(schema = {}, callback, target, path = [], inPatternProperties = false) { + const properties = schema.properties ?? {}; + + const patternProperties = schema.patternProperties ?? {}; + + for (let regexp in patternProperties) { + const info = patternProperties[regexp]; + const updatedPath = [...path, regexp]; + callback(updatedPath, info, undefined, true); + drillSchemaProperties(info, callback, undefined, updatedPath, true, schema); + } + + for (let name in properties) { + const info = properties[name]; + + if (name === "definitions") continue; + + const updatedPath = [...path, name]; + + callback(updatedPath, info, target, undefined, schema); + + drillSchemaProperties(info, callback, target?.[name], updatedPath, inPatternProperties); + } + + return schema; +} + +export function resolveProperties(properties = {}, target, globals = {}) { + if ("properties" in properties && "type" in properties) properties = properties.properties; // Correct for when a schema is passed instead + + for (let name in properties) { + const info = properties[name]; + + const props = info.properties; + + if (!(name in target)) { + if (target.__disabled?.[name]) continue; // Skip disabled properties + + if (props) target[name] = {}; // Regisiter new interfaces in results + // if (info.type === "array") target[name] = []; // Auto-populate arrays (NOTE: Breaks PyNWB when adding to TwoPhotonSeries field...) + + // Apply global or default value if empty + if (name in globals) target[name] = globals[name]; + else if (info.default) target[name] = info.default; + } + + if (target[name]) resolveProperties(props, target[name], globals[name]); + } + + return target; +} + +// Explicitly resolve the results for a particular session (from both GUIDE-defined globals and the NWB Schema) +export function resolveMetadata(subject, session, globalState) { + const overrides = resolveGlobalOverrides(subject, globalState); // Unique per-subject (but not sessions) + const metadata = globalState.results[subject][session].metadata; + const results = structuredClone(metadata); // Copy the metadata results from the form + const schema = globalState.schema.metadata[subject][session]; + resolveProperties(schema, results, overrides); + return results; +} + +export function createResults({ subject, info }, globalState) { + const results = populateWithProjectMetadata(info.metadata, globalState); + const subjectGlobalsCopy = { ...globalState.subjects[subject] }; + delete subjectGlobalsCopy.sessions; // Remove extra key from metadata + merge(subjectGlobalsCopy, results.Subject); + return results; +} diff --git a/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedInspectorPage.js b/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedInspectorPage.js index 73e9b12cf..56c73a217 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedInspectorPage.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedInspectorPage.js @@ -1,267 +1,267 @@ -import { html } from "lit"; -import { Page } from "../../Page.js"; - -import { unsafeSVG } from "lit/directives/unsafe-svg.js"; -import folderOpenSVG from "../../../assets/folder_open.svg?raw"; - -import { electron } from "../../../../electron/index.js"; -import { getSharedPath, removeFilePaths, truncateFilePaths } from "../../../preview/NWBFilePreview.js"; -const { ipcRenderer } = electron; -import { until } from "lit/directives/until.js"; -import { run } from "./utils"; -import { InspectorList, InspectorLegend } from "../../../preview/inspector/InspectorList.js"; -import { getStubArray } from "./GuidedStubPreview.js"; -import { InstanceManager } from "../../../InstanceManager.js"; -import { getMessageType } from "../../../../validation/index.js"; - -import { Button } from "../../../Button.js"; - -import { download } from "../../inspect/utils.js"; -import { createProgressPopup } from "../../../utils/progress.js"; -import { resolve } from "../../../../promises"; - -const filter = (list, toFilter) => { - return list.filter((item) => { - return Object.entries(toFilter) - .map(([key, strOrArray]) => { - return Array.isArray(strOrArray) - ? strOrArray.map((str) => item[key].includes(str)) - : item[key].includes(strOrArray); - }) - .flat() - .every(Boolean); - }); -}; - -const emptyMessage = "No issues detected in these files!"; - -export class GuidedInspectorPage extends Page { - constructor(...args) { - super(...args); - this.style.height = "100%"; // Fix main section - - Object.assign(this.style, { - display: "grid", - gridTemplateRows: "calc(100% - 120px) 1fr", - rowGap: "10px", - }); - } - - workflow = { - multiple_sessions: {}, - }; - - headerButtons = [ - new Button({ - label: "JSON", - primary: true, - }), - - new Button({ - label: "Text", - primary: true, - }), - ]; - - header = { - subtitle: `The NWB Inspector has scanned your files for adherence to best practices.`, - controls: () => [ - ...this.headerButtons, - html` { - if (ipcRenderer) - ipcRenderer.send( - "showItemInFolder", - getSharedPath(getStubArray(this.info.globalState.preview.stubs).map(({ file }) => file)) - ); - }} - >${unsafeSVG(folderOpenSVG)}`, - ], - }; - - // NOTE: We may want to trigger this whenever (1) this page is visited AND (2) data has been changed. - footer = {}; - - #toggleRendered; - #rendered; - #updateRendered = (force) => - force || this.#rendered === true - ? (this.#rendered = new Promise( - (resolve) => (this.#toggleRendered = () => resolve((this.#rendered = true))) - )) - : this.#rendered; - - get rendered() { - return resolve(this.#rendered, () => true); - } - - getStatus = (list) => { - return list.reduce((acc, messageInfo) => { - const res = getMessageType(messageInfo); - if (acc === "error") return acc; - else return res; - }, "valid"); - }; - - updated() { - const [downloadJSONButton, downloadTextButton] = this.headerButtons; - - downloadJSONButton.onClick = () => - download("nwb-inspector-report.json", { - header: this.report.header, - messages: this.report.messages, - }); - - downloadTextButton.onClick = () => download("nwb-inspector-report.txt", this.report.text); - } - - render() { - this.#updateRendered(true); - - const { globalState } = this.info; - const { stubs, inspector } = globalState.preview; - - const legendProps = { multiple: this.workflow.multiple_sessions.value }; - - const options = {}; // NOTE: Currently options are handled on the Python end until exposed to the user - const title = "Inspecting your file"; - - const fileArr = Object.entries(stubs) - .map(([subject, v]) => - Object.entries(v).map(([session, info]) => { - return { subject, session, info }; - }) - ) - .flat(); - return html` - ${until( - (async () => { - if (fileArr.length <= 1) { - this.report = inspector; - - if (!this.report) { - const result = await run( - "inspect_file", - { nwbfile_path: fileArr[0].info.file, ...options }, - { title } - ).catch((error) => { - this.notify(error.message, "error"); - return null; - }); - - if (!result) return "Failed to generate inspector report."; - - this.report = globalState.preview.inspector = { - ...result, - messages: removeFilePaths(result.messages), - }; - } - - if (!inspector) await this.save(); - - const items = this.report.messages; - - const list = new InspectorList({ items, emptyMessage }); - - Object.assign(list.style, { - height: "100%", - }); - - return html`${list}${new InspectorLegend(legendProps)}`; - } - - const path = getSharedPath(fileArr.map(({ info }) => info.file)); - - this.report = inspector; - if (!this.report) { - const swalOpts = await createProgressPopup({ title: `${title}s` }); - - const { close: closeProgressPopup } = swalOpts; - - const result = await run( - "inspect_folder", - { path, ...options, request_id: swalOpts.id }, - swalOpts - ).catch((error) => { - this.notify(error.message, "error"); - closeProgressPopup(); - return null; - }); - - if (!result) return "Failed to generate inspector report."; - - closeProgressPopup(); - - this.report = globalState.preview.inspector = { - ...result, - messages: truncateFilePaths(result.messages, path), - }; - } - - if (!inspector) await this.save(); - - const messages = this.report.messages; - const items = truncateFilePaths(messages, path); - - const _instances = fileArr.map(({ subject, session, info }) => { - const file_path = [`sub-${subject}`, `sub-${subject}_ses-${session}`]; - const filtered = removeFilePaths(filter(items, { file_path })); - - const display = () => new InspectorList({ items: filtered, emptyMessage }); - display.status = this.getStatus(filtered); - - return { - subject, - session, - display, - }; - }); - - const instances = _instances.reduce((acc, { subject, session, display }) => { - const subLabel = `sub-${subject}`; - if (!acc[`sub-${subject}`]) acc[subLabel] = {}; - acc[subLabel][`ses-${session}`] = display; - return acc; - }, {}); - - Object.keys(instances).forEach((subLabel) => { - // const subItems = filter(items, { file_path: `${subLabel}${nodePath.sep}${subLabel}_ses-` }); // NOTE: This will not run on web-only now - const subItems = filter(items, { file_path: `${subLabel}_ses-` }); // NOTE: This will not run on web-only now - const path = getSharedPath(subItems.map((item) => item.file_path)); - const filtered = truncateFilePaths(subItems, path); - - const display = () => new InspectorList({ items: filtered, emptyMessage }); - display.status = this.getStatus(filtered); - - instances[subLabel] = { - ["All Files"]: display, - ...instances[subLabel], - }; - }); - - const allDisplay = () => new InspectorList({ items, emptyMessage }); - allDisplay.status = this.getStatus(items); - - const allInstances = { - ["All Files"]: allDisplay, - ...instances, - }; - - const manager = new InstanceManager({ - instances: allInstances, - }); - - return html`${manager}${new InspectorLegend(legendProps)}`; - })().finally(() => { - this.#toggleRendered(); - }), - "Loading inspector report..." - )} - `; - } -} - -customElements.get("nwbguide-guided-inspector-page") || - customElements.define("nwbguide-guided-inspector-page", GuidedInspectorPage); +import { html } from "lit"; +import { Page } from "../../Page.js"; + +import { unsafeSVG } from "lit/directives/unsafe-svg.js"; +import folderOpenSVG from "../../../assets/folder_open.svg?raw"; + +import { electron } from "../../../../electron/index.js"; +import { getSharedPath, removeFilePaths, truncateFilePaths } from "../../../preview/NWBFilePreview.js"; +const { ipcRenderer } = electron; +import { until } from "lit/directives/until.js"; +import { run } from "./utils"; +import { InspectorList, InspectorLegend } from "../../../preview/inspector/InspectorList.js"; +import { getStubArray } from "./GuidedStubPreview.js"; +import { InstanceManager } from "../../../InstanceManager.js"; +import { getMessageType } from "../../../../validation/index.js"; + +import { Button } from "../../../Button.js"; + +import { download } from "../../inspect/utils.js"; +import { createProgressPopup } from "../../../utils/progress.js"; +import { resolve } from "../../../../promises"; + +const filter = (list, toFilter) => { + return list.filter((item) => { + return Object.entries(toFilter) + .map(([key, strOrArray]) => { + return Array.isArray(strOrArray) + ? strOrArray.map((str) => item[key].includes(str)) + : item[key].includes(strOrArray); + }) + .flat() + .every(Boolean); + }); +}; + +const emptyMessage = "No issues detected in these files!"; + +export class GuidedInspectorPage extends Page { + constructor(...args) { + super(...args); + this.style.height = "100%"; // Fix main section + + Object.assign(this.style, { + display: "grid", + gridTemplateRows: "calc(100% - 120px) 1fr", + rowGap: "10px", + }); + } + + workflow = { + multiple_sessions: {}, + }; + + headerButtons = [ + new Button({ + label: "JSON", + primary: true, + }), + + new Button({ + label: "Text", + primary: true, + }), + ]; + + header = { + subtitle: `The NWB Inspector has scanned your files for adherence to best practices.`, + controls: () => [ + ...this.headerButtons, + html` { + if (ipcRenderer) + ipcRenderer.send( + "showItemInFolder", + getSharedPath(getStubArray(this.info.globalState.preview.stubs).map(({ file }) => file)) + ); + }} + >${unsafeSVG(folderOpenSVG)}`, + ], + }; + + // NOTE: We may want to trigger this whenever (1) this page is visited AND (2) data has been changed. + footer = {}; + + #toggleRendered; + #rendered; + #updateRendered = (force) => + force || this.#rendered === true + ? (this.#rendered = new Promise( + (resolve) => (this.#toggleRendered = () => resolve((this.#rendered = true))) + )) + : this.#rendered; + + get rendered() { + return resolve(this.#rendered, () => true); + } + + getStatus = (list) => { + return list.reduce((acc, messageInfo) => { + const res = getMessageType(messageInfo); + if (acc === "error") return acc; + else return res; + }, "valid"); + }; + + updated() { + const [downloadJSONButton, downloadTextButton] = this.headerButtons; + + downloadJSONButton.onClick = () => + download("nwb-inspector-report.json", { + header: this.report.header, + messages: this.report.messages, + }); + + downloadTextButton.onClick = () => download("nwb-inspector-report.txt", this.report.text); + } + + render() { + this.#updateRendered(true); + + const { globalState } = this.info; + const { stubs, inspector } = globalState.preview; + + const legendProps = { multiple: this.workflow.multiple_sessions.value }; + + const options = {}; // NOTE: Currently options are handled on the Python end until exposed to the user + const title = "Inspecting your file"; + + const fileArr = Object.entries(stubs) + .map(([subject, v]) => + Object.entries(v).map(([session, info]) => { + return { subject, session, info }; + }) + ) + .flat(); + return html` + ${until( + (async () => { + if (fileArr.length <= 1) { + this.report = inspector; + + if (!this.report) { + const result = await run( + "inspect_file", + { nwbfile_path: fileArr[0].info.file, ...options }, + { title } + ).catch((error) => { + this.notify(error.message, "error"); + return null; + }); + + if (!result) return "Failed to generate inspector report."; + + this.report = globalState.preview.inspector = { + ...result, + messages: removeFilePaths(result.messages), + }; + } + + if (!inspector) await this.save(); + + const items = this.report.messages; + + const list = new InspectorList({ items, emptyMessage }); + + Object.assign(list.style, { + height: "100%", + }); + + return html`${list}${new InspectorLegend(legendProps)}`; + } + + const path = getSharedPath(fileArr.map(({ info }) => info.file)); + + this.report = inspector; + if (!this.report) { + const swalOpts = await createProgressPopup({ title: `${title}s` }); + + const { close: closeProgressPopup } = swalOpts; + + const result = await run( + "inspect_folder", + { path, ...options, request_id: swalOpts.id }, + swalOpts + ).catch((error) => { + this.notify(error.message, "error"); + closeProgressPopup(); + return null; + }); + + if (!result) return "Failed to generate inspector report."; + + closeProgressPopup(); + + this.report = globalState.preview.inspector = { + ...result, + messages: truncateFilePaths(result.messages, path), + }; + } + + if (!inspector) await this.save(); + + const messages = this.report.messages; + const items = truncateFilePaths(messages, path); + + const _instances = fileArr.map(({ subject, session, info }) => { + const file_path = [`sub-${subject}`, `sub-${subject}_ses-${session}`]; + const filtered = removeFilePaths(filter(items, { file_path })); + + const display = () => new InspectorList({ items: filtered, emptyMessage }); + display.status = this.getStatus(filtered); + + return { + subject, + session, + display, + }; + }); + + const instances = _instances.reduce((acc, { subject, session, display }) => { + const subLabel = `sub-${subject}`; + if (!acc[`sub-${subject}`]) acc[subLabel] = {}; + acc[subLabel][`ses-${session}`] = display; + return acc; + }, {}); + + Object.keys(instances).forEach((subLabel) => { + // const subItems = filter(items, { file_path: `${subLabel}${nodePath.sep}${subLabel}_ses-` }); // NOTE: This will not run on web-only now + const subItems = filter(items, { file_path: `${subLabel}_ses-` }); // NOTE: This will not run on web-only now + const path = getSharedPath(subItems.map((item) => item.file_path)); + const filtered = truncateFilePaths(subItems, path); + + const display = () => new InspectorList({ items: filtered, emptyMessage }); + display.status = this.getStatus(filtered); + + instances[subLabel] = { + ["All Files"]: display, + ...instances[subLabel], + }; + }); + + const allDisplay = () => new InspectorList({ items, emptyMessage }); + allDisplay.status = this.getStatus(items); + + const allInstances = { + ["All Files"]: allDisplay, + ...instances, + }; + + const manager = new InstanceManager({ + instances: allInstances, + }); + + return html`${manager}${new InspectorLegend(legendProps)}`; + })().finally(() => { + this.#toggleRendered(); + }), + "Loading inspector report..." + )} + `; + } +} + +customElements.get("nwbguide-guided-inspector-page") || + customElements.define("nwbguide-guided-inspector-page", GuidedInspectorPage); diff --git a/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedStubPreview.js b/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedStubPreview.js index 39635033c..4f3a2b861 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedStubPreview.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedStubPreview.js @@ -1,57 +1,57 @@ -import { html } from "lit"; -import { Page } from "../../Page.js"; - -import { unsafeSVG } from "lit/directives/unsafe-svg.js"; -import folderOpenSVG from "../../../assets/folder_open.svg?raw"; - -import { electron } from "../../../../electron/index.js"; -import { NWBFilePreview, getSharedPath } from "../../../preview/NWBFilePreview.js"; -const { ipcRenderer } = electron; - -export const getStubArray = (stubs) => - Object.values(stubs) - .map((item) => Object.values(item)) - .flat(); - -export class GuidedStubPreviewPage extends Page { - constructor(...args) { - super(...args); - this.style.height = "100%"; // Fix main section - } - - header = { - subtitle: `Preview file contents on truncated files using the Neurosift application`, - controls: () => - html` { - if (ipcRenderer) - ipcRenderer.send( - "showItemInFolder", - getSharedPath(getStubArray(this.info.globalState.preview.stubs).map((item) => item.file)) - ); - }} - >${unsafeSVG(folderOpenSVG)}`, - }; - - // NOTE: We may want to trigger this whenever (1) this page is visited AND (2) data has been changed. - footer = { - next: "Run Conversion", - onNext: async () => { - await this.save(); // Save in case the conversion fails - return this.to(1); // Will trigger conversion if necessary - }, - }; - - render() { - const { preview, project } = this.info.globalState; - - return preview.stubs - ? new NWBFilePreview({ project: project.name, files: preview.stubs }) - : html`

      Your conversion preview failed. Please try again.

      `; - } -} - -customElements.get("nwbguide-guided-stub-review-page") || - customElements.define("nwbguide-guided-stub-review-page", GuidedStubPreviewPage); +import { html } from "lit"; +import { Page } from "../../Page.js"; + +import { unsafeSVG } from "lit/directives/unsafe-svg.js"; +import folderOpenSVG from "../../../assets/folder_open.svg?raw"; + +import { electron } from "../../../../electron/index.js"; +import { NWBFilePreview, getSharedPath } from "../../../preview/NWBFilePreview.js"; +const { ipcRenderer } = electron; + +export const getStubArray = (stubs) => + Object.values(stubs) + .map((item) => Object.values(item)) + .flat(); + +export class GuidedStubPreviewPage extends Page { + constructor(...args) { + super(...args); + this.style.height = "100%"; // Fix main section + } + + header = { + subtitle: `Preview file contents on truncated files using the Neurosift application`, + controls: () => + html` { + if (ipcRenderer) + ipcRenderer.send( + "showItemInFolder", + getSharedPath(getStubArray(this.info.globalState.preview.stubs).map((item) => item.file)) + ); + }} + >${unsafeSVG(folderOpenSVG)}`, + }; + + // NOTE: We may want to trigger this whenever (1) this page is visited AND (2) data has been changed. + footer = { + next: "Run Conversion", + onNext: async () => { + await this.save(); // Save in case the conversion fails + return this.to(1); // Will trigger conversion if necessary + }, + }; + + render() { + const { preview, project } = this.info.globalState; + + return preview.stubs + ? new NWBFilePreview({ project: project.name, files: preview.stubs }) + : html`

      Your conversion preview failed. Please try again.

      `; + } +} + +customElements.get("nwbguide-guided-stub-review-page") || + customElements.define("nwbguide-guided-stub-review-page", GuidedStubPreviewPage); diff --git a/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedUpload.js b/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedUpload.js index ad3d54216..70e35bfc0 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedUpload.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/options/GuidedUpload.js @@ -1,204 +1,204 @@ -import { html } from "lit"; -import { JSONSchemaForm } from "../../../JSONSchemaForm.js"; -import { Page } from "../../Page.js"; -import { onThrow } from "../../../../errors"; -import { merge } from "../../utils"; -import Swal from "sweetalert2"; -import dandiUploadSchema, { ready, regenerateDandisets } from "../../../../../../../schemas/dandi-upload.schema"; -import { createDandiset, uploadToDandi } from "../../uploads/UploadsPage.js"; -import { until } from "lit/directives/until.js"; - -import { Button } from "../../../Button.js"; - -import keyIcon from "../../../assets/key.svg?raw"; - -import { validate } from "../../uploads/utils"; -import { global } from "../../../../progress/index.js"; - -import dandiGlobalSchema from "../../../../../../../schemas/json/dandi/global.json"; -import { createFormModal } from "../../../forms/GlobalFormModal"; -import { validateDANDIApiKey } from "../../../../validation/dandi"; -import { resolve } from "../../../../promises"; - -export class GuidedUploadPage extends Page { - constructor(...args) { - super(...args); - } - - form; - - beforeSave = () => { - const globalState = this.info.globalState; - const isNewDandiset = globalState.upload?.dandiset !== this.localState.dandiset; - merge({ upload: this.localState }, globalState); // Merge the local and global states - if (isNewDandiset) delete globalState.upload.results; // Clear the preview results entirely if a new Dandiset - }; - - header = { - subtitle: "Configure your upload to the DANDI Archive", - controls: [ - new Button({ - icon: keyIcon, - label: "API Keys", - onClick: () => { - this.globalModal.form.results = structuredClone(global.data.DANDI?.api_keys ?? {}); - this.globalModal.open = true; - }, - }), - ], - }; - - workflow = { - upload_to_dandi: { - condition: (v) => v === false, - skip: true, - }, - }; - - globalModal = null; - #saveNotification; - - connectedCallback() { - super.connectedCallback(); - - const modal = (this.globalModal = createFormModal.call(this, { - header: "DANDI API Keys", - schema: dandiGlobalSchema.properties.api_keys, - onSave: async (form) => { - const apiKeys = form.resolved; - - if (this.#saveNotification) this.dismiss(this.#saveNotification); - - if (!Object.keys(apiKeys).length) { - this.#saveNotification = this.notify("No API keys were provided", "error"); - return null; - } - - // Ensure values exist - const globalDandiData = global.data.DANDI ?? (global.data.DANDI = {}); - if (!globalDandiData.api_keys) globalDandiData.api_keys = {}; - merge(apiKeys, globalDandiData.api_keys); - - global.save(); - await regenerateDandisets(); - const input = this.form.getFormElement(["dandiset"]); - input.requestUpdate(); - }, - formProps: { - validateOnChange: async (name, parent) => { - const value = parent[name]; - if (name.includes("api_key")) return await validateDANDIApiKey(value, name.includes("staging")); - }, - }, - })); - document.body.append(modal); - } - - disconnectedCallback() { - super.disconnectedCallback(); - if (this.globalModal) this.globalModal.remove(); - } - - footer = { - next: "Upload", - onNext: async () => { - await this.save(); // Save in case the conversion fails - - const globalState = this.info.globalState; - const globalUploadInfo = globalState.upload; - - await this.form.validate(); // Will throw an error in the callback - - // Catch if Dandiset is already uploaded - if ("results" in globalUploadInfo) { - const result = await Swal.fire({ - title: "This pipeline has already uploaded to DANDI", - html: "Would you like to reupload the latest files?", - icon: "warning", - showCancelButton: true, - confirmButtonColor: "#3085d6", - confirmButtonText: "Continue with Reupload", - cancelButtonText: "Skip Upload", - }); - - if (!result || !result.isConfirmed) return this.to(1); - } - - globalUploadInfo.results = await uploadToDandi.call(this, { - ...globalUploadInfo.info, - project: globalState.project.name, - }); - - this.unsavedUpdates = true; - - return this.to(1); - }, - }; - - #toggleRendered; - #rendered; - #updateRendered = (force) => - force || this.#rendered === true - ? (this.#rendered = new Promise( - (resolve) => (this.#toggleRendered = () => resolve((this.#rendered = true))) - )) - : this.#rendered; - - get rendered() { - return resolve(this.#rendered, () => true); - } - - async updated() { - await this.rendered; - } - - render() { - this.#updateRendered(true); - - const state = (this.localState = structuredClone(this.info.globalState.upload ?? { info: {} })); - - const promise = ready.cpus - .then(() => ready.dandisets) - .then(() => { - return (this.form = new JSONSchemaForm({ - schema: dandiUploadSchema, - results: state.info, - controls: { - dandiset: [ - new Button({ - label: "Create New Dandiset", - buttonStyles: { - width: "max-content", - }, - onClick: async () => { - await createDandiset.call(this, { title: this.form.resolved.dandiset }); - this.requestUpdate(); - }, - }), - ], - }, - onUpdate: () => (this.unsavedUpdates = true), - onThrow, - validateOnChange: validate, - })); - }) - .catch((error) => html`

      ${error}

      `); - - // Confirm that one api key exists - promise.then(() => { - const api_keys = global.data.DANDI?.api_keys; - if (!api_keys || !Object.keys(api_keys).length) this.globalModal.open = true; - }); - - const untilResult = until(promise, html`Loading form contents...`); - - promise.then(() => { - this.#toggleRendered(); - }); - - return untilResult; - } -} - -customElements.get("nwbguide-guided-upload-page") || - customElements.define("nwbguide-guided-upload-page", GuidedUploadPage); +import { html } from "lit"; +import { JSONSchemaForm } from "../../../JSONSchemaForm.js"; +import { Page } from "../../Page.js"; +import { onThrow } from "../../../../errors"; +import { merge } from "../../utils"; +import Swal from "sweetalert2"; +import dandiUploadSchema, { ready, regenerateDandisets } from "../../../../../../../schemas/dandi-upload.schema"; +import { createDandiset, uploadToDandi } from "../../uploads/UploadsPage.js"; +import { until } from "lit/directives/until.js"; + +import { Button } from "../../../Button.js"; + +import keyIcon from "../../../assets/key.svg?raw"; + +import { validate } from "../../uploads/utils"; +import { global } from "../../../../progress/index.js"; + +import dandiGlobalSchema from "../../../../../../../schemas/json/dandi/global.json"; +import { createFormModal } from "../../../forms/GlobalFormModal"; +import { validateDANDIApiKey } from "../../../../validation/dandi"; +import { resolve } from "../../../../promises"; + +export class GuidedUploadPage extends Page { + constructor(...args) { + super(...args); + } + + form; + + beforeSave = () => { + const globalState = this.info.globalState; + const isNewDandiset = globalState.upload?.dandiset !== this.localState.dandiset; + merge({ upload: this.localState }, globalState); // Merge the local and global states + if (isNewDandiset) delete globalState.upload.results; // Clear the preview results entirely if a new Dandiset + }; + + header = { + subtitle: "Configure your upload to the DANDI Archive", + controls: [ + new Button({ + icon: keyIcon, + label: "API Keys", + onClick: () => { + this.globalModal.form.results = structuredClone(global.data.DANDI?.api_keys ?? {}); + this.globalModal.open = true; + }, + }), + ], + }; + + workflow = { + upload_to_dandi: { + condition: (v) => v === false, + skip: true, + }, + }; + + globalModal = null; + #saveNotification; + + connectedCallback() { + super.connectedCallback(); + + const modal = (this.globalModal = createFormModal.call(this, { + header: "DANDI API Keys", + schema: dandiGlobalSchema.properties.api_keys, + onSave: async (form) => { + const apiKeys = form.resolved; + + if (this.#saveNotification) this.dismiss(this.#saveNotification); + + if (!Object.keys(apiKeys).length) { + this.#saveNotification = this.notify("No API keys were provided", "error"); + return null; + } + + // Ensure values exist + const globalDandiData = global.data.DANDI ?? (global.data.DANDI = {}); + if (!globalDandiData.api_keys) globalDandiData.api_keys = {}; + merge(apiKeys, globalDandiData.api_keys); + + global.save(); + await regenerateDandisets(); + const input = this.form.getFormElement(["dandiset"]); + input.requestUpdate(); + }, + formProps: { + validateOnChange: async (name, parent) => { + const value = parent[name]; + if (name.includes("api_key")) return await validateDANDIApiKey(value, name.includes("staging")); + }, + }, + })); + document.body.append(modal); + } + + disconnectedCallback() { + super.disconnectedCallback(); + if (this.globalModal) this.globalModal.remove(); + } + + footer = { + next: "Upload", + onNext: async () => { + await this.save(); // Save in case the conversion fails + + const globalState = this.info.globalState; + const globalUploadInfo = globalState.upload; + + await this.form.validate(); // Will throw an error in the callback + + // Catch if Dandiset is already uploaded + if ("results" in globalUploadInfo) { + const result = await Swal.fire({ + title: "This pipeline has already uploaded to DANDI", + html: "Would you like to reupload the latest files?", + icon: "warning", + showCancelButton: true, + confirmButtonColor: "#3085d6", + confirmButtonText: "Continue with Reupload", + cancelButtonText: "Skip Upload", + }); + + if (!result || !result.isConfirmed) return this.to(1); + } + + globalUploadInfo.results = await uploadToDandi.call(this, { + ...globalUploadInfo.info, + project: globalState.project.name, + }); + + this.unsavedUpdates = true; + + return this.to(1); + }, + }; + + #toggleRendered; + #rendered; + #updateRendered = (force) => + force || this.#rendered === true + ? (this.#rendered = new Promise( + (resolve) => (this.#toggleRendered = () => resolve((this.#rendered = true))) + )) + : this.#rendered; + + get rendered() { + return resolve(this.#rendered, () => true); + } + + async updated() { + await this.rendered; + } + + render() { + this.#updateRendered(true); + + const state = (this.localState = structuredClone(this.info.globalState.upload ?? { info: {} })); + + const promise = ready.cpus + .then(() => ready.dandisets) + .then(() => { + return (this.form = new JSONSchemaForm({ + schema: dandiUploadSchema, + results: state.info, + controls: { + dandiset: [ + new Button({ + label: "Create New Dandiset", + buttonStyles: { + width: "max-content", + }, + onClick: async () => { + await createDandiset.call(this, { title: this.form.resolved.dandiset }); + this.requestUpdate(); + }, + }), + ], + }, + onUpdate: () => (this.unsavedUpdates = true), + onThrow, + validateOnChange: validate, + })); + }) + .catch((error) => html`

      ${error}

      `); + + // Confirm that one api key exists + promise.then(() => { + const api_keys = global.data.DANDI?.api_keys; + if (!api_keys || !Object.keys(api_keys).length) this.globalModal.open = true; + }); + + const untilResult = until(promise, html`Loading form contents...`); + + promise.then(() => { + this.#toggleRendered(); + }); + + return untilResult; + } +} + +customElements.get("nwbguide-guided-upload-page") || + customElements.define("nwbguide-guided-upload-page", GuidedUploadPage); diff --git a/src/electron/renderer/src/stories/pages/guided-mode/options/utils.js b/src/electron/renderer/src/stories/pages/guided-mode/options/utils.js index 664d5b815..3cc8bca53 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/options/utils.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/options/utils.js @@ -1,106 +1,106 @@ -import Swal from "sweetalert2"; -import { sanitize } from "../../utils"; -import { baseUrl } from "../../../../server/globals"; - -export const openProgressSwal = (options, callback) => { - return new Promise((resolve) => { - Swal.fire({ - title: "Requesting data from server", - allowEscapeKey: false, - allowOutsideClick: false, - showConfirmButton: false, - heightAuto: false, - backdrop: "rgba(0,0,0, 0.4)", - timerProgressBar: false, - didOpen: () => { - Swal.showLoading(); - resolve(Swal); - }, - ...options, - }).then((result) => callback?.(result)); - }); -}; - -export const run = async (url, payload, options = {}) => { - let internalSwal; - - if (options.swal === false) { - } else if (!options.swal || options.swal === true) { - if (!("showCancelButton" in options)) { - options.showCancelButton = true; - options.customClass = { actions: "swal-conversion-actions" }; - } - - const cancelController = new AbortController(); - - options.fetch = { - signal: cancelController.signal, - }; - - const popup = (internalSwal = await openProgressSwal(options, (result) => { - if (!result.isConfirmed) cancelController.abort(); - }).then(async (swal) => { - if (options.onOpen) await options.onOpen(swal); - return swal; - })); - - const element = popup.getHtmlContainer(); - - const actions = popup.getActions(); - const loader = actions.querySelector(".swal2-loader"); - const container = document.createElement("div"); - container.append(loader); - - const notDisplayed = element.style.display === "none"; - - Object.assign(element.style, { - marginTop: notDisplayed ? "" : "0", - display: "unset", - }); - - Object.assign(container.style, { - marginTop: notDisplayed ? "" : "25px", - display: "flex", - flexDirection: "column", - alignItems: "center", - justifyContent: "center", - marginBottom: "25px", - }); - - element.appendChild(container); - - element.insertAdjacentHTML("beforeend", `
      `); - } - - if (!("base" in options)) options.base = "/neuroconv"; - if (options.base[0] !== "/") options.base = `/${options.base}`; - - // Clear private keys from being passed - payload = sanitize(structuredClone(payload)); - - const results = await fetch(`${baseUrl}${options.base || ""}/${url}`, { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify(payload), - ...(options.fetch ?? {}), - }).then((res) => res.json()); - - if (internalSwal) Swal.close(); - - if (results?.message) throw new Error(`Request to ${url} failed: ${results.message}`); - - return results || true; -}; - -export const runConversion = async (info, options = {}) => - run(`convert`, info, { - title: "Running the conversion", - onError: (results) => { - if (results.message.includes("already exists")) { - return "File already exists. Please specify another location to store the conversion results"; - } else { - return "Conversion failed with current metadata. Please try again."; - } - }, - ...options, - }); +import Swal from "sweetalert2"; +import { sanitize } from "../../utils"; +import { baseUrl } from "../../../../server/globals"; + +export const openProgressSwal = (options, callback) => { + return new Promise((resolve) => { + Swal.fire({ + title: "Requesting data from server", + allowEscapeKey: false, + allowOutsideClick: false, + showConfirmButton: false, + heightAuto: false, + backdrop: "rgba(0,0,0, 0.4)", + timerProgressBar: false, + didOpen: () => { + Swal.showLoading(); + resolve(Swal); + }, + ...options, + }).then((result) => callback?.(result)); + }); +}; + +export const run = async (url, payload, options = {}) => { + let internalSwal; + + if (options.swal === false) { + } else if (!options.swal || options.swal === true) { + if (!("showCancelButton" in options)) { + options.showCancelButton = true; + options.customClass = { actions: "swal-conversion-actions" }; + } + + const cancelController = new AbortController(); + + options.fetch = { + signal: cancelController.signal, + }; + + const popup = (internalSwal = await openProgressSwal(options, (result) => { + if (!result.isConfirmed) cancelController.abort(); + }).then(async (swal) => { + if (options.onOpen) await options.onOpen(swal); + return swal; + })); + + const element = popup.getHtmlContainer(); + + const actions = popup.getActions(); + const loader = actions.querySelector(".swal2-loader"); + const container = document.createElement("div"); + container.append(loader); + + const notDisplayed = element.style.display === "none"; + + Object.assign(element.style, { + marginTop: notDisplayed ? "" : "0", + display: "unset", + }); + + Object.assign(container.style, { + marginTop: notDisplayed ? "" : "25px", + display: "flex", + flexDirection: "column", + alignItems: "center", + justifyContent: "center", + marginBottom: "25px", + }); + + element.appendChild(container); + + element.insertAdjacentHTML("beforeend", `
      `); + } + + if (!("base" in options)) options.base = "/neuroconv"; + if (options.base[0] !== "/") options.base = `/${options.base}`; + + // Clear private keys from being passed + payload = sanitize(structuredClone(payload)); + + const results = await fetch(`${baseUrl}${options.base || ""}/${url}`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(payload), + ...(options.fetch ?? {}), + }).then((res) => res.json()); + + if (internalSwal) Swal.close(); + + if (results?.message) throw new Error(`Request to ${url} failed: ${results.message}`); + + return results || true; +}; + +export const runConversion = async (info, options = {}) => + run(`convert`, info, { + title: "Running the conversion", + onError: (results) => { + if (results.message.includes("already exists")) { + return "File already exists. Please specify another location to store the conversion results"; + } else { + return "Conversion failed with current metadata. Please try again."; + } + }, + ...options, + }); diff --git a/src/electron/renderer/src/stories/pages/guided-mode/results/GuidedDandiResults.js b/src/electron/renderer/src/stories/pages/guided-mode/results/GuidedDandiResults.js index bd41505cb..3e39a3b41 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/results/GuidedDandiResults.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/results/GuidedDandiResults.js @@ -1,47 +1,47 @@ -import { html } from "lit"; -import { Page } from "../../Page.js"; - -import { DandiResults } from "../../../DandiResults.js"; - -export class GuidedDandiResultsPage extends Page { - constructor(...args) { - super(...args); - } - - footer = {}; - - workflow = { - upload_to_dandi: { - condition: (v) => v === false, - skip: true, - }, - }; - - updated() { - this.save(); // Save the current state - } - - render() { - const { conversion } = this.info.globalState; - - if (!conversion) - return html`

      Your conversion failed. Please try again.

      `; - - const { info = {}, results } = this.info.globalState.upload ?? {}; - const { dandiset } = info; - - return html`
      - ${new DandiResults({ - id: dandiset, - files: { - subject: results.map((file) => { - return { file }; - }), - }, - })} -
      `; - } -} - -customElements.get("nwbguide-guided-dandi-results-page") || - customElements.define("nwbguide-guided-dandi-results-page", GuidedDandiResultsPage); +import { html } from "lit"; +import { Page } from "../../Page.js"; + +import { DandiResults } from "../../../DandiResults.js"; + +export class GuidedDandiResultsPage extends Page { + constructor(...args) { + super(...args); + } + + footer = {}; + + workflow = { + upload_to_dandi: { + condition: (v) => v === false, + skip: true, + }, + }; + + updated() { + this.save(); // Save the current state + } + + render() { + const { conversion } = this.info.globalState; + + if (!conversion) + return html`

      Your conversion failed. Please try again.

      `; + + const { info = {}, results } = this.info.globalState.upload ?? {}; + const { dandiset } = info; + + return html`
      + ${new DandiResults({ + id: dandiset, + files: { + subject: results.map((file) => { + return { file }; + }), + }, + })} +
      `; + } +} + +customElements.get("nwbguide-guided-dandi-results-page") || + customElements.define("nwbguide-guided-dandi-results-page", GuidedDandiResultsPage); diff --git a/src/electron/renderer/src/stories/pages/guided-mode/results/GuidedResults.js b/src/electron/renderer/src/stories/pages/guided-mode/results/GuidedResults.js index 0d09797f9..ace243461 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/results/GuidedResults.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/results/GuidedResults.js @@ -1,59 +1,59 @@ -import { html } from "lit"; -import { unsafeSVG } from "lit/directives/unsafe-svg.js"; -import folderOpenSVG from "../../../assets/folder_open.svg?raw"; - -import { Page } from "../../Page.js"; -import { getStubArray } from "../options/GuidedStubPreview.js"; -import { getSharedPath } from "../../../preview/NWBFilePreview.js"; - -import { electron, path } from "../../../../electron/index.js"; -const { ipcRenderer } = electron; - -export class GuidedResultsPage extends Page { - constructor(...args) { - super(...args); - } - - header = { - controls: () => - html` { - if (ipcRenderer) ipcRenderer.send("showItemInFolder", this.#sharedPath()); - }} - >${unsafeSVG(folderOpenSVG)}`, - }; - - footer = {}; - - #sharedPath = () => { - const { conversion } = this.info.globalState; - if (!conversion) return ""; - return getSharedPath(getStubArray(conversion).map((item) => item.file)); - }; - - updated() { - this.save(); // Save the current state - } - - render() { - const { conversion } = this.info.globalState; - - if (!conversion) - return html`

      Your conversion failed. Please try again.

      `; - - return html` -

      Your data was successfully converted to NWB!

      -
        - ${getStubArray(conversion) - .map(({ file }) => file.split(path.sep).slice(-1)[0]) - .sort() - .map((id) => html`
      1. ${id}
      2. `)} -
      - `; - } -} - -customElements.get("nwbguide-guided-results-page") || - customElements.define("nwbguide-guided-results-page", GuidedResultsPage); +import { html } from "lit"; +import { unsafeSVG } from "lit/directives/unsafe-svg.js"; +import folderOpenSVG from "../../../assets/folder_open.svg?raw"; + +import { Page } from "../../Page.js"; +import { getStubArray } from "../options/GuidedStubPreview.js"; +import { getSharedPath } from "../../../preview/NWBFilePreview.js"; + +import { electron, path } from "../../../../electron/index.js"; +const { ipcRenderer } = electron; + +export class GuidedResultsPage extends Page { + constructor(...args) { + super(...args); + } + + header = { + controls: () => + html` { + if (ipcRenderer) ipcRenderer.send("showItemInFolder", this.#sharedPath()); + }} + >${unsafeSVG(folderOpenSVG)}`, + }; + + footer = {}; + + #sharedPath = () => { + const { conversion } = this.info.globalState; + if (!conversion) return ""; + return getSharedPath(getStubArray(conversion).map((item) => item.file)); + }; + + updated() { + this.save(); // Save the current state + } + + render() { + const { conversion } = this.info.globalState; + + if (!conversion) + return html`

      Your conversion failed. Please try again.

      `; + + return html` +

      Your data was successfully converted to NWB!

      +
        + ${getStubArray(conversion) + .map(({ file }) => file.split(path.sep).slice(-1)[0]) + .sort() + .map((id) => html`
      1. ${id}
      2. `)} +
      + `; + } +} + +customElements.get("nwbguide-guided-results-page") || + customElements.define("nwbguide-guided-results-page", GuidedResultsPage); diff --git a/src/electron/renderer/src/stories/pages/guided-mode/setup/GuidedNewDatasetInfo.js b/src/electron/renderer/src/stories/pages/guided-mode/setup/GuidedNewDatasetInfo.js index 619c33b25..54bb5b12c 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/setup/GuidedNewDatasetInfo.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/setup/GuidedNewDatasetInfo.js @@ -1,126 +1,126 @@ -import { html } from "lit"; -import { global, hasEntry, rename } from "../../../../progress/index.js"; -import { JSONSchemaForm } from "../../../JSONSchemaForm.js"; -import { Page } from "../../Page.js"; -import { validateOnChange } from "../../../../validation/index.js"; - -import projectGeneralSchema from "../../../../../../../schemas/json/project/general.json" assert { type: "json" }; -import projectGlobalSchema from "../../../../../../../schemas/json/project/globals.json" assert { type: "json" }; -import { merge } from "../../utils"; -import { onThrow } from "../../../../errors"; -import { header } from "../../../forms/utils"; - -const projectMetadataSchema = merge(projectGlobalSchema, projectGeneralSchema); - -const skipError = (message) => message.includes("requires") && message.includes("name"); - -export class GuidedNewDatasetPage extends Page { - constructor(...args) { - super(...args); - this.updateForm(); // Register nested pages on creation—not just with data - } - - state = {}; - - #nameNotification; - - header = { - subtitle: "Enter a name for this pipeline and specify the base folders to save all outputs to", - }; - - footer = { - onNext: async () => { - const globalState = this.info.globalState.project; - - this.dismiss(); // Dismiss all notifications - - await this.form.validate().catch((error) => { - if (skipError(error.message)) return; - throw error; - }); - - // Check validity of project name - const name = this.state.name; - if (!name) { - if (this.#nameNotification) this.dismiss(this.#nameNotification); // Dismiss previous custom notification - this.#nameNotification = this.notify("Please enter a project name.", "error", 3000); - return; - } - - if (!name) return; - - // Check if name is already used - // Update existing progress file - if (globalState.initialized) { - try { - const res = rename(name, globalState.name); - if (typeof res === "string") this.notify(res); - if (res === false) return; - } catch (error) { - this.notify(error, "error"); - throw error; - } - } else { - const has = await hasEntry(name); - if (has) { - this.notify( - "An existing project already exists with that name. Please choose a different name.", - "error" - ); - return; - } - } - - globalState.initialized = true; - Object.assign(globalState, this.state); - - return this.to(1); - }, - }; - - updateForm = () => { - // Properly clone the schema to produce multiple pages from the project metadata schema - const schema = { ...projectMetadataSchema }; - schema.properties = { ...schema.properties }; - - const globalState = this.info.globalState; - if (!globalState.project) globalState.project = {}; - this.state = merge(global.data, structuredClone(globalState.project)); - - this.form = new JSONSchemaForm({ - schema, - results: this.state, - validateEmptyValues: false, - dialogOptions: { - properties: ["createDirectory"], - }, - onOverride: (name) => { - this.notify(`${header(name)} has been overridden with a global value.`, "warning", 3000); - }, - validateOnChange: async (...args) => { - const results = await validateOnChange.call(this.form, ...args); - if (!results && args[0] === "name") this.#nameNotification && this.dismiss(this.#nameNotification); - return results; - }, - onUpdate: () => (this.unsavedUpdates = true), - onThrow: function (message) { - if (skipError(message)) return; - onThrow(message); - }, - }); - - return this.form; - }; - - render() { - this.state = {}; // Clear local state on each render - - const form = this.updateForm(); - form.style.width = "100%"; - - return html` ${form} `; - } -} - -customElements.get("nwbguide-guided-newdataset-page") || - customElements.define("nwbguide-guided-newdataset-page", GuidedNewDatasetPage); +import { html } from "lit"; +import { global, hasEntry, rename } from "../../../../progress/index.js"; +import { JSONSchemaForm } from "../../../JSONSchemaForm.js"; +import { Page } from "../../Page.js"; +import { validateOnChange } from "../../../../validation/index.js"; + +import projectGeneralSchema from "../../../../../../../schemas/json/project/general.json" assert { type: "json" }; +import projectGlobalSchema from "../../../../../../../schemas/json/project/globals.json" assert { type: "json" }; +import { merge } from "../../utils"; +import { onThrow } from "../../../../errors"; +import { header } from "../../../forms/utils"; + +const projectMetadataSchema = merge(projectGlobalSchema, projectGeneralSchema); + +const skipError = (message) => message.includes("requires") && message.includes("name"); + +export class GuidedNewDatasetPage extends Page { + constructor(...args) { + super(...args); + this.updateForm(); // Register nested pages on creation—not just with data + } + + state = {}; + + #nameNotification; + + header = { + subtitle: "Enter a name for this pipeline and specify the base folders to save all outputs to", + }; + + footer = { + onNext: async () => { + const globalState = this.info.globalState.project; + + this.dismiss(); // Dismiss all notifications + + await this.form.validate().catch((error) => { + if (skipError(error.message)) return; + throw error; + }); + + // Check validity of project name + const name = this.state.name; + if (!name) { + if (this.#nameNotification) this.dismiss(this.#nameNotification); // Dismiss previous custom notification + this.#nameNotification = this.notify("Please enter a project name.", "error", 3000); + return; + } + + if (!name) return; + + // Check if name is already used + // Update existing progress file + if (globalState.initialized) { + try { + const res = rename(name, globalState.name); + if (typeof res === "string") this.notify(res); + if (res === false) return; + } catch (error) { + this.notify(error, "error"); + throw error; + } + } else { + const has = await hasEntry(name); + if (has) { + this.notify( + "An existing project already exists with that name. Please choose a different name.", + "error" + ); + return; + } + } + + globalState.initialized = true; + Object.assign(globalState, this.state); + + return this.to(1); + }, + }; + + updateForm = () => { + // Properly clone the schema to produce multiple pages from the project metadata schema + const schema = { ...projectMetadataSchema }; + schema.properties = { ...schema.properties }; + + const globalState = this.info.globalState; + if (!globalState.project) globalState.project = {}; + this.state = merge(global.data, structuredClone(globalState.project)); + + this.form = new JSONSchemaForm({ + schema, + results: this.state, + validateEmptyValues: false, + dialogOptions: { + properties: ["createDirectory"], + }, + onOverride: (name) => { + this.notify(`${header(name)} has been overridden with a global value.`, "warning", 3000); + }, + validateOnChange: async (...args) => { + const results = await validateOnChange.call(this.form, ...args); + if (!results && args[0] === "name") this.#nameNotification && this.dismiss(this.#nameNotification); + return results; + }, + onUpdate: () => (this.unsavedUpdates = true), + onThrow: function (message) { + if (skipError(message)) return; + onThrow(message); + }, + }); + + return this.form; + }; + + render() { + this.state = {}; // Clear local state on each render + + const form = this.updateForm(); + form.style.width = "100%"; + + return html` ${form} `; + } +} + +customElements.get("nwbguide-guided-newdataset-page") || + customElements.define("nwbguide-guided-newdataset-page", GuidedNewDatasetPage); diff --git a/src/electron/renderer/src/stories/pages/guided-mode/setup/GuidedSubjects.js b/src/electron/renderer/src/stories/pages/guided-mode/setup/GuidedSubjects.js index 2bce759ff..5c887e246 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/setup/GuidedSubjects.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/setup/GuidedSubjects.js @@ -1,205 +1,205 @@ -import { html } from "lit"; -import { Page } from "../../Page.js"; -import getSubjectSchema from "../../../../../../../schemas/subject.schema"; -import { validateOnChange } from "../../../../validation/index.js"; -import { Table } from "../../../Table.js"; - -import { updateResultsFromSubjects } from "./utils"; -import { preprocessMetadataSchema } from "../../../../../../../schemas/base-metadata.schema"; -import { Button } from "../../../Button.js"; -import { createGlobalFormModal } from "../../../forms/GlobalFormModal"; -import { header } from "../../../forms/utils"; - -import globalIcon from "../../../assets/global.svg?raw"; - -export class GuidedSubjectsPage extends Page { - constructor(...args) { - super(...args); - } - - #addButton = new Button({ - label: "Add Subject", - onClick: () => this.table.table.alter("insert_row_below"), - }); - - #globalButton = new Button({ - icon: globalIcon, - label: "Edit Default Metadata", - onClick: () => { - this.#globalModal.form.results = structuredClone(this.info.globalState.project.Subject ?? {}); - this.#globalModal.open = true; - }, - }); - - workflow = { - multiple_sessions: { - elements: [this.#globalButton, this.#addButton], - }, - }; - - header = { - subtitle: "Enter all metadata known about each experiment subject", - controls: [this.#globalButton], - }; - - workflow = { - multiple_sessions: { - skip: () => {}, - }, - }; - - // Abort save if subject structure is invalid - beforeSave = () => { - try { - this.table.validate(); - } catch (error) { - this.notify(error.message, "error"); - throw error; - } - - const localState = this.table.data; - - // Create map of original names to new names - const nameMap = {}; - for (let key in this.#originalState) { - const renamed = Object.keys(localState).find( - (k) => localState[k].identifier === this.#originalState[key].identifier - ); - nameMap[key] = renamed; - } - - // Remove identifiers - for (let key in localState) delete localState[key].identifier; - - // Local state is the source of truth - this.info.globalState.subjects = localState; - - const { results, subjects } = this.info.globalState; - - const sourceDataObject = Object.keys(this.info.globalState.interfaces).reduce((acc, key) => { - acc[key] = {}; - return acc; - }, {}); - - // Modify the results object to track new subjects / sessions - updateResultsFromSubjects(results, subjects, sourceDataObject, nameMap); // NOTE: This directly mutates the results object - }; - - footer = { - onNext: () => { - const extraElements = document.querySelectorAll(".HandsontableCopyPaste"); - extraElements.forEach((element) => element.remove()); - return this.to(1); - }, - }; - - updated() { - super.updated(); // Call if updating data - } - - #globalModal; - - connectedCallback() { - super.connectedCallback(); - - const schema = preprocessMetadataSchema(undefined, true).properties.Subject; - - const modal = (this.#globalModal = createGlobalFormModal.call(this, { - header: "Global Subject Metadata", - key: "Subject", - validateEmptyValues: null, - schema, - formProps: { - validateOnChange: (localPath, parent, path) => { - return validateOnChange(localPath, parent, ["Subject", ...path]); - }, - }, - })); - document.body.append(modal); - } - - disconnectedCallback() { - super.disconnectedCallback(); - if (this.#globalModal) this.#globalModal.remove(); - } - - #originalState = {}; - - render() { - const hasMultipleSessions = this.workflow.multiple_sessions.value; - - const subjects = (this.localState = structuredClone(this.info.globalState.subjects ?? {})); - - // Ensure all the proper subjects are in the global state - const toHave = Object.keys(this.info.globalState.results); - const toRemove = Object.keys(subjects).filter((sub) => !toHave.includes(sub)); - toRemove.forEach((sub) => delete subjects[sub]); - toHave.forEach((sub) => (subjects[sub] = subjects[sub] ?? {})); - - this.#originalState = structuredClone(subjects); - - for (let subject in subjects) { - const sessions = Object.keys(this.info.globalState.results[subject]); - subjects[subject].sessions = sessions; - subjects[subject].identifier = this.#originalState[subject].identifier = Symbol("subject"); // Add identifier to subject - } - - const contextMenuConfig = { ignore: ["row_below"] }; - - if (!hasMultipleSessions) contextMenuConfig.ignore.push("remove_row"); - - this.table = new Table({ - schema: { - type: "array", - items: getSubjectSchema(), - }, - data: subjects, - globals: hasMultipleSessions ? this.info.globalState.project.Subject : undefined, - keyColumn: "subject_id", - validateEmptyCells: ["subject_id", "sessions"], - contextMenu: contextMenuConfig, - groups: [ - [ - "sex", - "species", - // 'age' - ], // Validate both when one is changed - ], - onThrow: (message, type) => this.notify(message, type), - onOverride: (name) => { - this.notify(`${header(name)} has been overridden with a global value.`, "warning", 3000); - }, - onUpdate: () => { - this.unsavedUpdates = "conversions"; - }, - validateOnChange: function (localPath, parent, v) { - const name = localPath[localPath.length - 1]; - - if (name === "sessions") { - if (v?.length) return true; - else { - return [ - { - message: "Sessions must have at least one entry", - type: "error", - }, - ]; - } - } else { - delete parent.sessions; // Delete sessions from parent copy - return validateOnChange.call(this, name, parent, ["Subject", ...localPath.slice(0, -1)], v); - } - }, - }); - - return html` -
      -
      ${this.table}
      - ${this.#addButton} -
      - `; - } -} - -customElements.get("nwbguide-guided-subjects-page") || - customElements.define("nwbguide-guided-subjects-page", GuidedSubjectsPage); +import { html } from "lit"; +import { Page } from "../../Page.js"; +import getSubjectSchema from "../../../../../../../schemas/subject.schema"; +import { validateOnChange } from "../../../../validation/index.js"; +import { Table } from "../../../Table.js"; + +import { updateResultsFromSubjects } from "./utils"; +import { preprocessMetadataSchema } from "../../../../../../../schemas/base-metadata.schema"; +import { Button } from "../../../Button.js"; +import { createGlobalFormModal } from "../../../forms/GlobalFormModal"; +import { header } from "../../../forms/utils"; + +import globalIcon from "../../../assets/global.svg?raw"; + +export class GuidedSubjectsPage extends Page { + constructor(...args) { + super(...args); + } + + #addButton = new Button({ + label: "Add Subject", + onClick: () => this.table.table.alter("insert_row_below"), + }); + + #globalButton = new Button({ + icon: globalIcon, + label: "Edit Default Metadata", + onClick: () => { + this.#globalModal.form.results = structuredClone(this.info.globalState.project.Subject ?? {}); + this.#globalModal.open = true; + }, + }); + + workflow = { + multiple_sessions: { + elements: [this.#globalButton, this.#addButton], + }, + }; + + header = { + subtitle: "Enter all metadata known about each experiment subject", + controls: [this.#globalButton], + }; + + workflow = { + multiple_sessions: { + skip: () => {}, + }, + }; + + // Abort save if subject structure is invalid + beforeSave = () => { + try { + this.table.validate(); + } catch (error) { + this.notify(error.message, "error"); + throw error; + } + + const localState = this.table.data; + + // Create map of original names to new names + const nameMap = {}; + for (let key in this.#originalState) { + const renamed = Object.keys(localState).find( + (k) => localState[k].identifier === this.#originalState[key].identifier + ); + nameMap[key] = renamed; + } + + // Remove identifiers + for (let key in localState) delete localState[key].identifier; + + // Local state is the source of truth + this.info.globalState.subjects = localState; + + const { results, subjects } = this.info.globalState; + + const sourceDataObject = Object.keys(this.info.globalState.interfaces).reduce((acc, key) => { + acc[key] = {}; + return acc; + }, {}); + + // Modify the results object to track new subjects / sessions + updateResultsFromSubjects(results, subjects, sourceDataObject, nameMap); // NOTE: This directly mutates the results object + }; + + footer = { + onNext: () => { + const extraElements = document.querySelectorAll(".HandsontableCopyPaste"); + extraElements.forEach((element) => element.remove()); + return this.to(1); + }, + }; + + updated() { + super.updated(); // Call if updating data + } + + #globalModal; + + connectedCallback() { + super.connectedCallback(); + + const schema = preprocessMetadataSchema(undefined, true).properties.Subject; + + const modal = (this.#globalModal = createGlobalFormModal.call(this, { + header: "Global Subject Metadata", + key: "Subject", + validateEmptyValues: null, + schema, + formProps: { + validateOnChange: (localPath, parent, path) => { + return validateOnChange(localPath, parent, ["Subject", ...path]); + }, + }, + })); + document.body.append(modal); + } + + disconnectedCallback() { + super.disconnectedCallback(); + if (this.#globalModal) this.#globalModal.remove(); + } + + #originalState = {}; + + render() { + const hasMultipleSessions = this.workflow.multiple_sessions.value; + + const subjects = (this.localState = structuredClone(this.info.globalState.subjects ?? {})); + + // Ensure all the proper subjects are in the global state + const toHave = Object.keys(this.info.globalState.results); + const toRemove = Object.keys(subjects).filter((sub) => !toHave.includes(sub)); + toRemove.forEach((sub) => delete subjects[sub]); + toHave.forEach((sub) => (subjects[sub] = subjects[sub] ?? {})); + + this.#originalState = structuredClone(subjects); + + for (let subject in subjects) { + const sessions = Object.keys(this.info.globalState.results[subject]); + subjects[subject].sessions = sessions; + subjects[subject].identifier = this.#originalState[subject].identifier = Symbol("subject"); // Add identifier to subject + } + + const contextMenuConfig = { ignore: ["row_below"] }; + + if (!hasMultipleSessions) contextMenuConfig.ignore.push("remove_row"); + + this.table = new Table({ + schema: { + type: "array", + items: getSubjectSchema(), + }, + data: subjects, + globals: hasMultipleSessions ? this.info.globalState.project.Subject : undefined, + keyColumn: "subject_id", + validateEmptyCells: ["subject_id", "sessions"], + contextMenu: contextMenuConfig, + groups: [ + [ + "sex", + "species", + // 'age' + ], // Validate both when one is changed + ], + onThrow: (message, type) => this.notify(message, type), + onOverride: (name) => { + this.notify(`${header(name)} has been overridden with a global value.`, "warning", 3000); + }, + onUpdate: () => { + this.unsavedUpdates = "conversions"; + }, + validateOnChange: function (localPath, parent, v) { + const name = localPath[localPath.length - 1]; + + if (name === "sessions") { + if (v?.length) return true; + else { + return [ + { + message: "Sessions must have at least one entry", + type: "error", + }, + ]; + } + } else { + delete parent.sessions; // Delete sessions from parent copy + return validateOnChange.call(this, name, parent, ["Subject", ...localPath.slice(0, -1)], v); + } + }, + }); + + return html` +
      +
      ${this.table}
      + ${this.#addButton} +
      + `; + } +} + +customElements.get("nwbguide-guided-subjects-page") || + customElements.define("nwbguide-guided-subjects-page", GuidedSubjectsPage); diff --git a/src/electron/renderer/src/stories/pages/guided-mode/setup/Preform.js b/src/electron/renderer/src/stories/pages/guided-mode/setup/Preform.js index 5622bdf4b..81f0a6375 100644 --- a/src/electron/renderer/src/stories/pages/guided-mode/setup/Preform.js +++ b/src/electron/renderer/src/stories/pages/guided-mode/setup/Preform.js @@ -1,205 +1,205 @@ -import { html } from "lit"; -import { JSONSchemaForm } from "../../../JSONSchemaForm.js"; -import { Page } from "../../Page.js"; -import { onThrow } from "../../../../errors"; - -// ------------------------------------------------------------------------------ -// ------------------------ Preform Configuration ------------------------------- -// ------------------------------------------------------------------------------ - -const questions = { - multiple_sessions: { - type: "boolean", - title: "Will this pipeline be run on multiple sessions?", - default: false, - }, - subject_id: { - type: "string", - description: "Provide an identifier for your subject (e.g. mouse01)", - dependencies: { - multiple_sessions: { - condition: [false, undefined], - default: "", - required: true, - }, - }, - }, - session_id: { - type: "string", - description: "Provide an identifier for your session (e.g. task1)", - dependencies: { - multiple_sessions: { - condition: [false, undefined], - default: "", - required: true, - }, - }, - }, - locate_data: { - type: "boolean", - title: "Would you like to locate the source data programmatically?", - dependencies: { - multiple_sessions: { default: false }, - }, - default: false, - }, - - base_directory: { - type: "string", - format: "directory", - title: "Where is your data located?", - description: - "A single directory where all data is contained. Can override for specific data formats.
      Leave blank if unknown", - dependencies: { - locate_data: {}, - }, - }, - - upload_to_dandi: { - type: "boolean", - title: "Would you like to upload your data to DANDI?", - default: true, - }, -}; - -// ------------------------------------------------------------------------------------------- -// ------------------------ Derived from the above information ------------------------------- -// ------------------------------------------------------------------------------------------- - -const dependents = Object.entries(questions).reduce((acc, [name, info]) => { - acc[name] = []; - - const deps = info.dependencies; - - if (deps) { - if (Array.isArray(deps)) - deps.forEach((dep) => { - if (!acc[dep]) acc[dep] = []; - acc[dep].push({ name }); - }); - else - Object.entries(deps).forEach(([dep, opts]) => { - if (!acc[dep]) acc[dep] = []; - acc[dep].push({ name, ...opts }); - }); - } - return acc; -}, {}); - -const projectWorkflowSchema = { - type: "object", - properties: Object.entries(questions).reduce((acc, [name, info]) => { - acc[name] = info; - return acc; - }, {}), - order: Object.keys(questions), - additionalProperties: false, -}; - -// ---------------------------------------------------------------------- -// ------------------------ Preform Class ------------------------------- -// ---------------------------------------------------------------------- - -export class GuidedPreform extends Page { - constructor(...args) { - super(...args); - this.updateForm(); // Register nested pages on creation—not just with data - } - - state = {}; - - header = { - subtitle: "Answer the following questions to simplify your workflow through the GUIDE", - }; - - beforeSave = async () => { - await this.form.validate(); - this.info.globalState.project.workflow = this.state; - }; - - footer = { - onNext: async () => { - await this.save(); - return this.to(1); - }, - }; - - updateForm = () => { - const schema = structuredClone(projectWorkflowSchema); - const projectState = this.info.globalState.project ?? {}; - if (!projectState.workflow) projectState.workflow = {}; - this.state = structuredClone(projectState.workflow); - - this.form = new JSONSchemaForm({ - schema, - results: this.state, - validateEmptyValues: false, // Only show errors after submission - validateOnChange: function (name, parent, path, value) { - dependents[name].forEach((dependent) => { - const dependencies = questions[dependent.name].dependencies; - const uniformDeps = Array.isArray(dependencies) - ? dependencies.map((name) => { - return { name }; - }) - : Object.entries(dependencies).map(([name, info]) => { - return { name, ...info }; - }); - - const dependentEl = this.inputs[dependent.name]; - const dependentParent = dependentEl.parentElement; - - const attr = dependent.attribute ?? "hidden"; - - let condition = (v) => !!v; - if (!("condition" in dependent)) { - } else if (typeof dependent.condition === "boolean") condition = (v) => v == dependent.condition; - else if (Array.isArray(dependent.condition)) - condition = (v) => dependent.condition.some((condition) => v == condition); - else console.warn("Invalid condition", dependent.condition); - - if (uniformDeps.every(({ name }) => condition(parent[name]))) { - dependentParent.removeAttribute(attr); - if ("required" in dependent) dependentEl.required = dependent.required; - if ("__cached" in dependent) dependentEl.updateData(dependent.__cached); - } else { - if (dependentEl.value !== undefined) dependent.__cached = dependentEl.value; - dependentEl.updateData(dependent.default); - dependentParent.setAttribute(attr, true); - if ("required" in dependent) dependentEl.required = !dependent.required; - } - }); - }, - - // Immediately re-render boolean values - onUpdate: async (path, value) => { - if (typeof value === "boolean") { - this.unsavedUpdates = true; - this.info.globalState.project.workflow = this.state; - this.updateSections(); // Trigger section changes with new workflow - await this.save({}, false); // Save new workflow and section changes - } - }, - onThrow, - // groups: [ - // { - // name: "Session Workflow", - // properties: [["multiple_sessions"], ["locate_data"]], - // }, - // ], - }); - - return this.form; - }; - - render() { - this.state = {}; // Clear local state on each render - - const form = this.updateForm(); - form.style.width = "100%"; - - return html` ${form} `; - } -} - -customElements.get("nwbguide-guided-preform-page") || - customElements.define("nwbguide-guided-preform-page", GuidedPreform); +import { html } from "lit"; +import { JSONSchemaForm } from "../../../JSONSchemaForm.js"; +import { Page } from "../../Page.js"; +import { onThrow } from "../../../../errors"; + +// ------------------------------------------------------------------------------ +// ------------------------ Preform Configuration ------------------------------- +// ------------------------------------------------------------------------------ + +const questions = { + multiple_sessions: { + type: "boolean", + title: "Will this pipeline be run on multiple sessions?", + default: false, + }, + subject_id: { + type: "string", + description: "Provide an identifier for your subject (e.g. mouse01)", + dependencies: { + multiple_sessions: { + condition: [false, undefined], + default: "", + required: true, + }, + }, + }, + session_id: { + type: "string", + description: "Provide an identifier for your session (e.g. task1)", + dependencies: { + multiple_sessions: { + condition: [false, undefined], + default: "", + required: true, + }, + }, + }, + locate_data: { + type: "boolean", + title: "Would you like to locate the source data programmatically?", + dependencies: { + multiple_sessions: { default: false }, + }, + default: false, + }, + + base_directory: { + type: "string", + format: "directory", + title: "Where is your data located?", + description: + "A single directory where all data is contained. Can override for specific data formats.
      Leave blank if unknown", + dependencies: { + locate_data: {}, + }, + }, + + upload_to_dandi: { + type: "boolean", + title: "Would you like to upload your data to DANDI?", + default: true, + }, +}; + +// ------------------------------------------------------------------------------------------- +// ------------------------ Derived from the above information ------------------------------- +// ------------------------------------------------------------------------------------------- + +const dependents = Object.entries(questions).reduce((acc, [name, info]) => { + acc[name] = []; + + const deps = info.dependencies; + + if (deps) { + if (Array.isArray(deps)) + deps.forEach((dep) => { + if (!acc[dep]) acc[dep] = []; + acc[dep].push({ name }); + }); + else + Object.entries(deps).forEach(([dep, opts]) => { + if (!acc[dep]) acc[dep] = []; + acc[dep].push({ name, ...opts }); + }); + } + return acc; +}, {}); + +const projectWorkflowSchema = { + type: "object", + properties: Object.entries(questions).reduce((acc, [name, info]) => { + acc[name] = info; + return acc; + }, {}), + order: Object.keys(questions), + additionalProperties: false, +}; + +// ---------------------------------------------------------------------- +// ------------------------ Preform Class ------------------------------- +// ---------------------------------------------------------------------- + +export class GuidedPreform extends Page { + constructor(...args) { + super(...args); + this.updateForm(); // Register nested pages on creation—not just with data + } + + state = {}; + + header = { + subtitle: "Answer the following questions to simplify your workflow through the GUIDE", + }; + + beforeSave = async () => { + await this.form.validate(); + this.info.globalState.project.workflow = this.state; + }; + + footer = { + onNext: async () => { + await this.save(); + return this.to(1); + }, + }; + + updateForm = () => { + const schema = structuredClone(projectWorkflowSchema); + const projectState = this.info.globalState.project ?? {}; + if (!projectState.workflow) projectState.workflow = {}; + this.state = structuredClone(projectState.workflow); + + this.form = new JSONSchemaForm({ + schema, + results: this.state, + validateEmptyValues: false, // Only show errors after submission + validateOnChange: function (name, parent, path, value) { + dependents[name].forEach((dependent) => { + const dependencies = questions[dependent.name].dependencies; + const uniformDeps = Array.isArray(dependencies) + ? dependencies.map((name) => { + return { name }; + }) + : Object.entries(dependencies).map(([name, info]) => { + return { name, ...info }; + }); + + const dependentEl = this.inputs[dependent.name]; + const dependentParent = dependentEl.parentElement; + + const attr = dependent.attribute ?? "hidden"; + + let condition = (v) => !!v; + if (!("condition" in dependent)) { + } else if (typeof dependent.condition === "boolean") condition = (v) => v == dependent.condition; + else if (Array.isArray(dependent.condition)) + condition = (v) => dependent.condition.some((condition) => v == condition); + else console.warn("Invalid condition", dependent.condition); + + if (uniformDeps.every(({ name }) => condition(parent[name]))) { + dependentParent.removeAttribute(attr); + if ("required" in dependent) dependentEl.required = dependent.required; + if ("__cached" in dependent) dependentEl.updateData(dependent.__cached); + } else { + if (dependentEl.value !== undefined) dependent.__cached = dependentEl.value; + dependentEl.updateData(dependent.default); + dependentParent.setAttribute(attr, true); + if ("required" in dependent) dependentEl.required = !dependent.required; + } + }); + }, + + // Immediately re-render boolean values + onUpdate: async (path, value) => { + if (typeof value === "boolean") { + this.unsavedUpdates = true; + this.info.globalState.project.workflow = this.state; + this.updateSections(); // Trigger section changes with new workflow + await this.save({}, false); // Save new workflow and section changes + } + }, + onThrow, + // groups: [ + // { + // name: "Session Workflow", + // properties: [["multiple_sessions"], ["locate_data"]], + // }, + // ], + }); + + return this.form; + }; + + render() { + this.state = {}; // Clear local state on each render + + const form = this.updateForm(); + form.style.width = "100%"; + + return html` ${form} `; + } +} + +customElements.get("nwbguide-guided-preform-page") || + customElements.define("nwbguide-guided-preform-page", GuidedPreform); diff --git a/src/electron/renderer/src/stories/pages/inspect/InspectPage.js b/src/electron/renderer/src/stories/pages/inspect/InspectPage.js index 1db95cf12..906894f83 100644 --- a/src/electron/renderer/src/stories/pages/inspect/InspectPage.js +++ b/src/electron/renderer/src/stories/pages/inspect/InspectPage.js @@ -1,167 +1,167 @@ -import { html } from "lit"; -import { Page } from "../Page.js"; -import { onThrow } from "../../../errors"; -import { Button } from "../../Button.js"; - -import { run } from "../guided-mode/options/utils.js"; -import { JSONSchemaInput } from "../../JSONSchemaInput.js"; -import { Modal } from "../../Modal"; -import { getSharedPath, truncateFilePaths } from "../../preview/NWBFilePreview.js"; -import { InspectorList, InspectorLegend } from "../../preview/inspector/InspectorList.js"; -import { download } from "./utils"; -import { createProgressPopup } from "../../utils/progress.js"; - -import { ready } from "../../../../../../schemas/dandi-upload.schema"; -import { JSONSchemaForm } from "../../JSONSchemaForm.js"; - -export class InspectPage extends Page { - constructor(...args) { - super(...args); - } - - header = { - title: "NWB File Validation", - subtitle: "Inspect NWB files using the NWB Inspector.", - }; - - inspect = async (paths, kwargs = {}, options = {}) => { - const swalOpts = await createProgressPopup({ title: "Inspecting selected filesystem entries.", ...options }); - - const { close: closeProgressPopup } = swalOpts; - - const result = await run("inspect", { request_id: swalOpts.id, paths, ...kwargs }, swalOpts).catch((error) => { - this.notify(error.message, "error"); - closeProgressPopup(); - throw error; - }); - - closeProgressPopup(); - - if (typeof result === "string") return result; - - const { messages } = result; - - if (!messages.length) return this.notify("No messages received from the NWB Inspector"); - - return result; - }; - - showReport = async (value) => { - if (!value) { - const message = "Please provide filesystem entries to inspect."; - onThrow(message); - throw new Error(message); - } - - const legend = new InspectorLegend(); - - const kwargs = {}; - const nJobs = this.form.inputs["n_jobs"].value; - if (nJobs) kwargs.n_jobs = nJobs; - - const result = await this.inspect(value, kwargs); - - const messages = result.messages; - - const items = truncateFilePaths(messages, getSharedPath(messages.map((item) => item.file_path))); - - const list = new InspectorList({ items }); - - // const buttons = document.createElement('div') - // buttons.style.display = 'flex' - // buttons.style.gap = '10px' - - const downloadJSONButton = new Button({ - label: "JSON", - primary: true, - onClick: () => - download("nwb-inspector-report.json", { - header: result.header, - messages: result.messages, - }), - }); - - const downloadTextButton = new Button({ - label: "Text", - primary: true, - onClick: async () => { - download("nwb-inspector-report.txt", result.text); - }, - }); - - const modal = new Modal({ - header: value.length === 1 ? value : `Selected Filesystem Entries`, - controls: [downloadJSONButton, downloadTextButton], - footer: legend, - }); - - const container = document.createElement("div"); - Object.assign(container.style, { - display: "flex", - flexDirection: "column", - justifyContent: "space-between", - padding: "20px", - }); - - container.append(list); - - modal.append(container); - document.body.append(modal); - - modal.toggle(true); - }; - - form = new JSONSchemaForm({ - schema: { - properties: { - filesystem_paths: { - title: false, - type: "array", - items: { - type: "string", - format: ["file", "directory"], - multiple: true, - }, - }, - n_jobs: { - type: "number", - title: "Job Count", - description: "Number of parallel jobs to run. Leave blank to use all available cores.", - min: 1, - step: 1, - }, - }, - }, - showLabel: true, - onThrow, - }); - - updated() { - const urlFilePath = new URL(document.location).searchParams.get("file"); - - if (urlFilePath) { - this.showReport(urlFilePath); - this.form.inputs["filesystem_paths"].value = urlFilePath; - } - - ready.cpus.then(({ number_of_jobs }) => { - const nJobsInput = this.form.inputs["n_jobs"]; - nJobsInput.schema.max = number_of_jobs.max; - }); - } - - render() { - const button = new Button({ - label: "Start Inspection", - onClick: async () => this.showReport(this.form.inputs["filesystem_paths"].value), - }); - - return html` - ${this.form} -

      - ${button} - `; - } -} - -customElements.get("nwbguide-inspect-page") || customElements.define("nwbguide-inspect-page", InspectPage); +import { html } from "lit"; +import { Page } from "../Page.js"; +import { onThrow } from "../../../errors"; +import { Button } from "../../Button.js"; + +import { run } from "../guided-mode/options/utils.js"; +import { JSONSchemaInput } from "../../JSONSchemaInput.js"; +import { Modal } from "../../Modal"; +import { getSharedPath, truncateFilePaths } from "../../preview/NWBFilePreview.js"; +import { InspectorList, InspectorLegend } from "../../preview/inspector/InspectorList.js"; +import { download } from "./utils"; +import { createProgressPopup } from "../../utils/progress.js"; + +import { ready } from "../../../../../../schemas/dandi-upload.schema"; +import { JSONSchemaForm } from "../../JSONSchemaForm.js"; + +export class InspectPage extends Page { + constructor(...args) { + super(...args); + } + + header = { + title: "NWB File Validation", + subtitle: "Inspect NWB files using the NWB Inspector.", + }; + + inspect = async (paths, kwargs = {}, options = {}) => { + const swalOpts = await createProgressPopup({ title: "Inspecting selected filesystem entries.", ...options }); + + const { close: closeProgressPopup } = swalOpts; + + const result = await run("inspect", { request_id: swalOpts.id, paths, ...kwargs }, swalOpts).catch((error) => { + this.notify(error.message, "error"); + closeProgressPopup(); + throw error; + }); + + closeProgressPopup(); + + if (typeof result === "string") return result; + + const { messages } = result; + + if (!messages.length) return this.notify("No messages received from the NWB Inspector"); + + return result; + }; + + showReport = async (value) => { + if (!value) { + const message = "Please provide filesystem entries to inspect."; + onThrow(message); + throw new Error(message); + } + + const legend = new InspectorLegend(); + + const kwargs = {}; + const nJobs = this.form.inputs["n_jobs"].value; + if (nJobs) kwargs.n_jobs = nJobs; + + const result = await this.inspect(value, kwargs); + + const messages = result.messages; + + const items = truncateFilePaths(messages, getSharedPath(messages.map((item) => item.file_path))); + + const list = new InspectorList({ items }); + + // const buttons = document.createElement('div') + // buttons.style.display = 'flex' + // buttons.style.gap = '10px' + + const downloadJSONButton = new Button({ + label: "JSON", + primary: true, + onClick: () => + download("nwb-inspector-report.json", { + header: result.header, + messages: result.messages, + }), + }); + + const downloadTextButton = new Button({ + label: "Text", + primary: true, + onClick: async () => { + download("nwb-inspector-report.txt", result.text); + }, + }); + + const modal = new Modal({ + header: value.length === 1 ? value : `Selected Filesystem Entries`, + controls: [downloadJSONButton, downloadTextButton], + footer: legend, + }); + + const container = document.createElement("div"); + Object.assign(container.style, { + display: "flex", + flexDirection: "column", + justifyContent: "space-between", + padding: "20px", + }); + + container.append(list); + + modal.append(container); + document.body.append(modal); + + modal.toggle(true); + }; + + form = new JSONSchemaForm({ + schema: { + properties: { + filesystem_paths: { + title: false, + type: "array", + items: { + type: "string", + format: ["file", "directory"], + multiple: true, + }, + }, + n_jobs: { + type: "number", + title: "Job Count", + description: "Number of parallel jobs to run. Leave blank to use all available cores.", + min: 1, + step: 1, + }, + }, + }, + showLabel: true, + onThrow, + }); + + updated() { + const urlFilePath = new URL(document.location).searchParams.get("file"); + + if (urlFilePath) { + this.showReport(urlFilePath); + this.form.inputs["filesystem_paths"].value = urlFilePath; + } + + ready.cpus.then(({ number_of_jobs }) => { + const nJobsInput = this.form.inputs["n_jobs"]; + nJobsInput.schema.max = number_of_jobs.max; + }); + } + + render() { + const button = new Button({ + label: "Start Inspection", + onClick: async () => this.showReport(this.form.inputs["filesystem_paths"].value), + }); + + return html` + ${this.form} +

      + ${button} + `; + } +} + +customElements.get("nwbguide-inspect-page") || customElements.define("nwbguide-inspect-page", InspectPage); diff --git a/src/electron/renderer/src/stories/pages/inspect/utils.js b/src/electron/renderer/src/stories/pages/inspect/utils.js index 885e63420..1a96883c6 100644 --- a/src/electron/renderer/src/stories/pages/inspect/utils.js +++ b/src/electron/renderer/src/stories/pages/inspect/utils.js @@ -1,11 +1,11 @@ -export function download(name, toSave) { - const saveType = typeof toSave === "string" ? "text/plain" : "application/json"; - const text = typeof toSave === "string" ? toSave : JSON.stringify(toSave, null, 2); - const blob = new Blob([text], { type: saveType }); - const url = URL.createObjectURL(blob); - const a = document.createElement("a"); - a.href = url; - a.download = name; - a.click(); - URL.revokeObjectURL(url); -} +export function download(name, toSave) { + const saveType = typeof toSave === "string" ? "text/plain" : "application/json"; + const text = typeof toSave === "string" ? toSave : JSON.stringify(toSave, null, 2); + const blob = new Blob([text], { type: saveType }); + const url = URL.createObjectURL(blob); + const a = document.createElement("a"); + a.href = url; + a.download = name; + a.click(); + URL.revokeObjectURL(url); +} diff --git a/src/electron/renderer/src/stories/pages/preview/PreviewPage.js b/src/electron/renderer/src/stories/pages/preview/PreviewPage.js index e0b009c98..e9d77f9a5 100644 --- a/src/electron/renderer/src/stories/pages/preview/PreviewPage.js +++ b/src/electron/renderer/src/stories/pages/preview/PreviewPage.js @@ -1,61 +1,58 @@ -import { html } from "lit"; -import { Page } from "../Page.js"; -import { onThrow } from "../../../errors"; -import { JSONSchemaInput } from "../../JSONSchemaInput.js"; -import { Neurosift } from "../../preview/Neurosift.js"; -import { baseUrl } from "../../../server/globals"; - -export class PreviewPage extends Page { - header = { - title: "NWB File Exploration", - subtitle: "Visualize your NWB file using Neurosift.", - }; - - constructor(...args) { - super(...args); - this.style.height = "100%"; // Fix main section - } - - updatePath = async (path) => { - if (path) { - const result = await fetch(`${baseUrl}/neurosift/files/${path}`, { - method: "POST", - }).then((res) => res.text()); - if (result) this.neurosift.url = result; - } else this.neurosift.url = undefined; - }; - - neurosift = new Neurosift(); - - input = new JSONSchemaInput({ - path: ["file_path"], - schema: { - type: "string", - format: "file", - description: - "Please provide a file path that you'd like to visualize using Neurosift. The GUIDE will serve this file and access the appropriate URL automatically.", - }, - onUpdate: this.updatePath, - onThrow, - }); - - render() { - const urlFilePath = new URL(document.location).searchParams.get("file"); - - if (urlFilePath) { - this.updatePath(urlFilePath); - this.input.value = urlFilePath; - } - - return html` -
      - ${this.input} ${this.neurosift} -
      - `; - } -} - -customElements.get("nwbguide-preview-page") || - customElements.define("nwbguide-preview-page", PreviewPage); +import { html } from "lit"; +import { Page } from "../Page.js"; +import { onThrow } from "../../../errors"; +import { JSONSchemaInput } from "../../JSONSchemaInput.js"; +import { Neurosift } from "../../preview/Neurosift.js"; +import { baseUrl } from "../../../server/globals"; + +export class PreviewPage extends Page { + header = { + title: "NWB File Exploration", + subtitle: "Visualize your NWB file using Neurosift.", + }; + + constructor(...args) { + super(...args); + this.style.height = "100%"; // Fix main section + } + + updatePath = async (path) => { + if (path) { + const result = await fetch(`${baseUrl}/neurosift/files/${path}`, { + method: "POST", + }).then((res) => res.text()); + if (result) this.neurosift.url = result; + } else this.neurosift.url = undefined; + }; + + neurosift = new Neurosift(); + + input = new JSONSchemaInput({ + path: ["file_path"], + schema: { + type: "string", + format: "file", + description: + "Please provide a file path that you'd like to visualize using Neurosift. The GUIDE will serve this file and access the appropriate URL automatically.", + }, + onUpdate: this.updatePath, + onThrow, + }); + + render() { + const urlFilePath = new URL(document.location).searchParams.get("file"); + + if (urlFilePath) { + this.updatePath(urlFilePath); + this.input.value = urlFilePath; + } + + return html` +
      + ${this.input} ${this.neurosift} +
      + `; + } +} + +customElements.get("nwbguide-preview-page") || customElements.define("nwbguide-preview-page", PreviewPage); diff --git a/src/electron/renderer/src/stories/pages/settings/SettingsPage.js b/src/electron/renderer/src/stories/pages/settings/SettingsPage.js index 136a197a3..149a182a0 100644 --- a/src/electron/renderer/src/stories/pages/settings/SettingsPage.js +++ b/src/electron/renderer/src/stories/pages/settings/SettingsPage.js @@ -1,345 +1,345 @@ -import { html } from "lit"; -import { JSONSchemaForm } from "../../JSONSchemaForm.js"; -import { Page } from "../Page.js"; -import { onThrow } from "../../../errors"; -import dandiGlobalSchema from "../../../../../../schemas/json/dandi/global.json"; -import projectGlobalSchema from "../../../../../../schemas/json/project/globals.json" assert { type: "json" }; -import developerGlobalSchema from "../../../../../../schemas/json/developer/globals.json" assert { type: "json" }; - -import { validateDANDIApiKey } from "../../../validation/dandi"; - -import { Button } from "../../Button.js"; -import { global, remove, save } from "../../../progress/index.js"; -import { merge, setUndefinedIfNotDeclared } from "../utils"; - -import { homeDirectory, notyf, testDataFolderPath } from "../../../dependencies/globals"; -import { SERVER_FILE_PATH, electron, path, port, fs } from "../../../electron/index.js"; - -import saveSVG from "../../assets/save.svg?raw"; -import folderSVG from "../../assets/folder_open.svg?raw"; -import deleteSVG from "../../assets/delete.svg?raw"; -import generateSVG from "../../assets/restart.svg?raw"; - -import { header } from "../../forms/utils"; - -import examplePipelines from "../../../../../../example_pipelines.yml"; -import { run } from "../guided-mode/options/utils.js"; -import { joinPath } from "../../../globals"; - -const DATA_OUTPUT_PATH = joinPath(testDataFolderPath, "single_session_data"); -const DATASET_OUTPUT_PATH = joinPath(testDataFolderPath, "multi_session_dataset"); - -const propertiesToTransform = ["folder_path", "file_path", "config_file_path"]; - -const deleteIfExists = (path) => (fs.existsSync(path) ? fs.rmSync(path, { recursive: true }) : ""); - -function saveNewPipelineFromYaml(name, info, rootFolder) { - const subject_id = "mouse1"; - const sessions = ["session1"]; - const session_id = sessions[0]; - - info = structuredClone(info); // Copy info - - const hasMultipleSessions = sessions.length > 1; - - const resolvedInterfaces = info.interfaces ?? info; - - Object.values(resolvedInterfaces).forEach((info) => { - propertiesToTransform.forEach((property) => { - if (info[property]) { - const fullPath = path.join(rootFolder, info[property]); - if (fs.existsSync(fullPath)) info[property] = fullPath; - else throw new Error("Source data not available for this pipeline."); - } - }); - }); - - const resolvedMetadata = { - NWBFile: { session_id }, - Subject: { subject_id }, - }; - - resolvedMetadata.__generated = structuredClone(info.interfaces ? info.metadata ?? {} : {}); - - const resolvedInfo = { - source_data: resolvedInterfaces, - metadata: resolvedMetadata, - }; - - const updatedName = header(name); - - remove(updatedName, true); - - const workflowInfo = { - multiple_sessions: hasMultipleSessions, - }; - - if (!workflowInfo.multiple_sessions) { - workflowInfo.subject_id = subject_id; - workflowInfo.session_id = session_id; - } - - save({ - info: { - globalState: { - project: { - name: updatedName, - initialized: true, - workflow: workflowInfo, - }, - - // provide data for all supported interfaces - interfaces: Object.keys(resolvedInterfaces).reduce((acc, key) => { - acc[key] = `${key}`; - return acc; - }, {}), - - structure: {}, - - results: { - [subject_id]: sessions.reduce((acc, sessionId) => { - acc[session_id] = resolvedInfo; - return acc; - }, {}), - }, - - subjects: { - [subject_id]: { - sessions: sessions, - sex: "M", - species: "Mus musculus", - age: "P30D", - }, - }, - }, - }, - }); -} - -const schema = merge( - projectGlobalSchema, - { - properties: { - DANDI: { - title: "DANDI Settings", - ...dandiGlobalSchema, - }, - developer: { - title: "Developer Settings", - ...developerGlobalSchema, - }, - }, - required: ["DANDI", "developer"], - }, - { - arrays: "append", - } -); - -export class SettingsPage extends Page { - header = { - title: "App Settings", - subtitle: "This page allows you to set global settings for the GUIDE.", - controls: [ - new Button({ - icon: saveSVG, - onClick: async () => { - if (!this.unsavedUpdates) return this.#openNotyf("All changes were already saved", "success"); - this.save(); - }, - }), - ], - }; - - constructor(...args) { - super(...args); - this.style.height = "100%"; // Fix main section - } - - #notification; - - #openNotyf = (message, type) => { - if (this.#notification) notyf.dismiss(this.#notification); - return (this.#notification = this.notify(message, type)); - }; - - deleteTestData = () => { - deleteIfExists(DATA_OUTPUT_PATH); - deleteIfExists(DATASET_OUTPUT_PATH); - }; - - generateTestData = async () => { - if (!fs.existsSync(DATA_OUTPUT_PATH)) { - await run( - "generate", - { - output_path: DATA_OUTPUT_PATH, - }, - { - title: "Generating test data", - html: "This will take several minutes to complete.", - base: "data", - } - ).catch((error) => { - this.notify(error.message, "error"); - throw error; - }); - } - - await run( - "generate/dataset", - { - input_path: DATA_OUTPUT_PATH, - output_path: DATASET_OUTPUT_PATH, - }, - { - title: "Generating test dataset", - base: "data", - } - ).catch((error) => { - this.notify(error.message, "error"); - throw error; - }); - - const sanitizedOutputPath = DATASET_OUTPUT_PATH.replace(homeDirectory, "~"); - - this.notify(`Test dataset successfully generated at ${sanitizedOutputPath}!`); - - return DATASET_OUTPUT_PATH; - }; - - beforeSave = async () => { - const { resolved } = this.form; - setUndefinedIfNotDeclared(schema.properties, resolved); - - merge(resolved, global.data); - - global.save(); // Save the changes, even if invalid on the form - this.#openNotyf(`Global settings changes saved.`, "success"); - }; - - render() { - this.localState = structuredClone(global.data); - - // NOTE: API Keys and Dandiset IDs persist across selected project - this.form = new JSONSchemaForm({ - results: this.localState, - schema, - onUpdate: () => (this.unsavedUpdates = true), - validateOnChange: async (name, parent) => { - const value = parent[name]; - if (name.includes("api_key")) return await validateDANDIApiKey(value, name.includes("staging")); - return true; - }, - onThrow, - }); - - const generatePipelineButton = new Button({ - label: "Generate Example Pipelines", - onClick: async () => { - const { testing_data_folder } = this.form.results.developer ?? {}; - - if (!testing_data_folder) - return this.#openNotyf( - `Please specify a testing data folder in the Developer section before attempting to generate pipelines.`, - "error" - ); - - const pipelineNames = Object.keys(examplePipelines); - - const resolved = pipelineNames.reverse().map((name) => { - try { - saveNewPipelineFromYaml(name, examplePipelines[name], testing_data_folder); - return true; - } catch (e) { - console.error(e); - return name; - } - }); - - const nSuccessful = resolved.reduce((acc, v) => (acc += v === true ? 1 : 0), 0); - const nFailed = resolved.length - nSuccessful; - - if (nFailed) { - const failDisplay = - nFailed === 1 - ? `the ${resolved.find((v) => typeof v === "string")} pipeline` - : `${nFailed} pipelines`; - this.#openNotyf( - `

      Generated ${nSuccessful} test pipelines.

      Could not find source data for ${failDisplay}.`, - "warning" - ); - } else if (nSuccessful) this.#openNotyf(`Generated ${nSuccessful} test pipelines.`, "success"); - else - this.#openNotyf( - `

      Pipeline Generation Failed

      Could not find source data for any pipelines.`, - "error" - ); - }, - }); - - setTimeout(() => { - const testFolderInput = this.form.getFormElement(["developer", "testing_data_folder"]); - testFolderInput.after(generatePipelineButton); - }, 100); - - return html` -
      -
      -

      Server Port: ${port}

      -

      Server File Location: ${SERVER_FILE_PATH}

      -
      -
      -

      Test Dataset

      -
      - ${fs.existsSync(DATASET_OUTPUT_PATH) && fs.existsSync(DATA_OUTPUT_PATH) - ? [ - new Button({ - icon: deleteSVG, - label: "Delete", - size: "small", - onClick: async () => { - this.deleteTestData(); - this.notify(`Test dataset successfully deleted from your system.`); - this.requestUpdate(); - }, - }), - - new Button({ - icon: folderSVG, - label: "Open", - size: "small", - onClick: async () => { - if (electron.ipcRenderer) { - if (fs.existsSync(DATASET_OUTPUT_PATH)) - electron.ipcRenderer.send("showItemInFolder", DATASET_OUTPUT_PATH); - else { - this.notify("The test dataset no longer exists!", "warning"); - this.requestUpdate(); - } - } - }, - }), - ] - : new Button({ - label: "Generate", - icon: generateSVG, - size: "small", - onClick: async () => { - const output_path = await this.generateTestData(); - if (electron.ipcRenderer) - electron.ipcRenderer.send("showItemInFolder", output_path); - this.requestUpdate(); - }, - })} -
      -
      -
      -
      -
      - ${this.form} - `; - } -} - -customElements.get("nwbguide-settings-page") || customElements.define("nwbguide-settings-page", SettingsPage); +import { html } from "lit"; +import { JSONSchemaForm } from "../../JSONSchemaForm.js"; +import { Page } from "../Page.js"; +import { onThrow } from "../../../errors"; +import dandiGlobalSchema from "../../../../../../schemas/json/dandi/global.json"; +import projectGlobalSchema from "../../../../../../schemas/json/project/globals.json" assert { type: "json" }; +import developerGlobalSchema from "../../../../../../schemas/json/developer/globals.json" assert { type: "json" }; + +import { validateDANDIApiKey } from "../../../validation/dandi"; + +import { Button } from "../../Button.js"; +import { global, remove, save } from "../../../progress/index.js"; +import { merge, setUndefinedIfNotDeclared } from "../utils"; + +import { homeDirectory, notyf, testDataFolderPath } from "../../../dependencies/globals"; +import { SERVER_FILE_PATH, electron, path, port, fs } from "../../../electron/index.js"; + +import saveSVG from "../../assets/save.svg?raw"; +import folderSVG from "../../assets/folder_open.svg?raw"; +import deleteSVG from "../../assets/delete.svg?raw"; +import generateSVG from "../../assets/restart.svg?raw"; + +import { header } from "../../forms/utils"; + +import examplePipelines from "../../../../../../example_pipelines.yml"; +import { run } from "../guided-mode/options/utils.js"; +import { joinPath } from "../../../globals"; + +const DATA_OUTPUT_PATH = joinPath(testDataFolderPath, "single_session_data"); +const DATASET_OUTPUT_PATH = joinPath(testDataFolderPath, "multi_session_dataset"); + +const propertiesToTransform = ["folder_path", "file_path", "config_file_path"]; + +const deleteIfExists = (path) => (fs.existsSync(path) ? fs.rmSync(path, { recursive: true }) : ""); + +function saveNewPipelineFromYaml(name, info, rootFolder) { + const subject_id = "mouse1"; + const sessions = ["session1"]; + const session_id = sessions[0]; + + info = structuredClone(info); // Copy info + + const hasMultipleSessions = sessions.length > 1; + + const resolvedInterfaces = info.interfaces ?? info; + + Object.values(resolvedInterfaces).forEach((info) => { + propertiesToTransform.forEach((property) => { + if (info[property]) { + const fullPath = path.join(rootFolder, info[property]); + if (fs.existsSync(fullPath)) info[property] = fullPath; + else throw new Error("Source data not available for this pipeline."); + } + }); + }); + + const resolvedMetadata = { + NWBFile: { session_id }, + Subject: { subject_id }, + }; + + resolvedMetadata.__generated = structuredClone(info.interfaces ? info.metadata ?? {} : {}); + + const resolvedInfo = { + source_data: resolvedInterfaces, + metadata: resolvedMetadata, + }; + + const updatedName = header(name); + + remove(updatedName, true); + + const workflowInfo = { + multiple_sessions: hasMultipleSessions, + }; + + if (!workflowInfo.multiple_sessions) { + workflowInfo.subject_id = subject_id; + workflowInfo.session_id = session_id; + } + + save({ + info: { + globalState: { + project: { + name: updatedName, + initialized: true, + workflow: workflowInfo, + }, + + // provide data for all supported interfaces + interfaces: Object.keys(resolvedInterfaces).reduce((acc, key) => { + acc[key] = `${key}`; + return acc; + }, {}), + + structure: {}, + + results: { + [subject_id]: sessions.reduce((acc, sessionId) => { + acc[session_id] = resolvedInfo; + return acc; + }, {}), + }, + + subjects: { + [subject_id]: { + sessions: sessions, + sex: "M", + species: "Mus musculus", + age: "P30D", + }, + }, + }, + }, + }); +} + +const schema = merge( + projectGlobalSchema, + { + properties: { + DANDI: { + title: "DANDI Settings", + ...dandiGlobalSchema, + }, + developer: { + title: "Developer Settings", + ...developerGlobalSchema, + }, + }, + required: ["DANDI", "developer"], + }, + { + arrays: "append", + } +); + +export class SettingsPage extends Page { + header = { + title: "App Settings", + subtitle: "This page allows you to set global settings for the GUIDE.", + controls: [ + new Button({ + icon: saveSVG, + onClick: async () => { + if (!this.unsavedUpdates) return this.#openNotyf("All changes were already saved", "success"); + this.save(); + }, + }), + ], + }; + + constructor(...args) { + super(...args); + this.style.height = "100%"; // Fix main section + } + + #notification; + + #openNotyf = (message, type) => { + if (this.#notification) notyf.dismiss(this.#notification); + return (this.#notification = this.notify(message, type)); + }; + + deleteTestData = () => { + deleteIfExists(DATA_OUTPUT_PATH); + deleteIfExists(DATASET_OUTPUT_PATH); + }; + + generateTestData = async () => { + if (!fs.existsSync(DATA_OUTPUT_PATH)) { + await run( + "generate", + { + output_path: DATA_OUTPUT_PATH, + }, + { + title: "Generating test data", + html: "This will take several minutes to complete.", + base: "data", + } + ).catch((error) => { + this.notify(error.message, "error"); + throw error; + }); + } + + await run( + "generate/dataset", + { + input_path: DATA_OUTPUT_PATH, + output_path: DATASET_OUTPUT_PATH, + }, + { + title: "Generating test dataset", + base: "data", + } + ).catch((error) => { + this.notify(error.message, "error"); + throw error; + }); + + const sanitizedOutputPath = DATASET_OUTPUT_PATH.replace(homeDirectory, "~"); + + this.notify(`Test dataset successfully generated at ${sanitizedOutputPath}!`); + + return DATASET_OUTPUT_PATH; + }; + + beforeSave = async () => { + const { resolved } = this.form; + setUndefinedIfNotDeclared(schema.properties, resolved); + + merge(resolved, global.data); + + global.save(); // Save the changes, even if invalid on the form + this.#openNotyf(`Global settings changes saved.`, "success"); + }; + + render() { + this.localState = structuredClone(global.data); + + // NOTE: API Keys and Dandiset IDs persist across selected project + this.form = new JSONSchemaForm({ + results: this.localState, + schema, + onUpdate: () => (this.unsavedUpdates = true), + validateOnChange: async (name, parent) => { + const value = parent[name]; + if (name.includes("api_key")) return await validateDANDIApiKey(value, name.includes("staging")); + return true; + }, + onThrow, + }); + + const generatePipelineButton = new Button({ + label: "Generate Example Pipelines", + onClick: async () => { + const { testing_data_folder } = this.form.results.developer ?? {}; + + if (!testing_data_folder) + return this.#openNotyf( + `Please specify a testing data folder in the Developer section before attempting to generate pipelines.`, + "error" + ); + + const pipelineNames = Object.keys(examplePipelines); + + const resolved = pipelineNames.reverse().map((name) => { + try { + saveNewPipelineFromYaml(name, examplePipelines[name], testing_data_folder); + return true; + } catch (e) { + console.error(e); + return name; + } + }); + + const nSuccessful = resolved.reduce((acc, v) => (acc += v === true ? 1 : 0), 0); + const nFailed = resolved.length - nSuccessful; + + if (nFailed) { + const failDisplay = + nFailed === 1 + ? `the ${resolved.find((v) => typeof v === "string")} pipeline` + : `${nFailed} pipelines`; + this.#openNotyf( + `

      Generated ${nSuccessful} test pipelines.

      Could not find source data for ${failDisplay}.`, + "warning" + ); + } else if (nSuccessful) this.#openNotyf(`Generated ${nSuccessful} test pipelines.`, "success"); + else + this.#openNotyf( + `

      Pipeline Generation Failed

      Could not find source data for any pipelines.`, + "error" + ); + }, + }); + + setTimeout(() => { + const testFolderInput = this.form.getFormElement(["developer", "testing_data_folder"]); + testFolderInput.after(generatePipelineButton); + }, 100); + + return html` +
      +
      +

      Server Port: ${port}

      +

      Server File Location: ${SERVER_FILE_PATH}

      +
      +
      +

      Test Dataset

      +
      + ${fs.existsSync(DATASET_OUTPUT_PATH) && fs.existsSync(DATA_OUTPUT_PATH) + ? [ + new Button({ + icon: deleteSVG, + label: "Delete", + size: "small", + onClick: async () => { + this.deleteTestData(); + this.notify(`Test dataset successfully deleted from your system.`); + this.requestUpdate(); + }, + }), + + new Button({ + icon: folderSVG, + label: "Open", + size: "small", + onClick: async () => { + if (electron.ipcRenderer) { + if (fs.existsSync(DATASET_OUTPUT_PATH)) + electron.ipcRenderer.send("showItemInFolder", DATASET_OUTPUT_PATH); + else { + this.notify("The test dataset no longer exists!", "warning"); + this.requestUpdate(); + } + } + }, + }), + ] + : new Button({ + label: "Generate", + icon: generateSVG, + size: "small", + onClick: async () => { + const output_path = await this.generateTestData(); + if (electron.ipcRenderer) + electron.ipcRenderer.send("showItemInFolder", output_path); + this.requestUpdate(); + }, + })} +
      +
      +
      +
      +
      + ${this.form} + `; + } +} + +customElements.get("nwbguide-settings-page") || customElements.define("nwbguide-settings-page", SettingsPage); diff --git a/src/electron/renderer/src/stories/pages/uploads/UploadsPage.js b/src/electron/renderer/src/stories/pages/uploads/UploadsPage.js index 07aea9858..ff1099e78 100644 --- a/src/electron/renderer/src/stories/pages/uploads/UploadsPage.js +++ b/src/electron/renderer/src/stories/pages/uploads/UploadsPage.js @@ -1,445 +1,445 @@ -import { html } from "lit"; -import { until } from "lit/directives/until.js"; - -import { JSONSchemaForm } from "../../JSONSchemaForm.js"; -import { Page } from "../Page.js"; -import { onThrow } from "../../../errors"; - -const folderPathKey = "filesystem_paths"; -import dandiUploadSchema, { - addDandiset, - ready, - regenerateDandisets, -} from "../../../../../../schemas/dandi-upload.schema"; -import dandiStandaloneSchema from "../../../../../../schemas/json/dandi/standalone.json"; -const dandiSchema = merge(dandiUploadSchema, structuredClone(dandiStandaloneSchema), { arrays: "append" }); - -import dandiCreateSchema from "../../../../../../schemas/dandi-create.schema"; - -import { Button } from "../../Button.js"; -import { global } from "../../../progress/index.js"; -import { merge } from "../utils"; - -import { run } from "../guided-mode/options/utils.js"; -import { Modal } from "../../Modal"; -import { DandiResults } from "../../DandiResults.js"; - -import dandiGlobalSchema from "../../../../../../schemas/json/dandi/global.json"; -import { JSONSchemaInput } from "../../JSONSchemaInput.js"; -import { header } from "../../forms/utils"; - -import { validateDANDIApiKey } from "../../../validation/dandi"; - -import * as dandi from "dandi"; - -import keyIcon from "../../assets/key.svg?raw"; - -import { AWARD_VALIDATION_FAIL_MESSAGE, awardNumberValidator, isStaging, validate } from "./utils"; -import { createFormModal } from "../../forms/GlobalFormModal"; - -export async function createDandiset(results = {}) { - let notification; - - const notify = (message, type) => { - if (notification) this.dismiss(notification); - return (notification = this.notify(message, type)); - }; - - const modal = new Modal({ - header: "Create a Dandiset", - }); - - const content = document.createElement("div"); - Object.assign(content.style, { - padding: "25px", - }); - - const updateNIHInput = (state) => { - const nihInput = form.getFormElement(["nih_award_number"]); - - const isEmbargoed = !!state; - - // Show the NIH input if embargo is set - if (isEmbargoed) nihInput.removeAttribute("hidden"); - else nihInput.setAttribute("hidden", ""); - - // Make the NIH input required if embargo is set - nihInput.required = isEmbargoed; - }; - - const form = new JSONSchemaForm({ - schema: dandiCreateSchema, - results, - validateEmptyValues: false, // Only show errors after submission - validateOnChange: async (name, parent) => { - const value = parent[name]; - - if (name === "embargo_status") return updateNIHInput(value); - - if (name === "nih_award_number") { - if (value) - return awardNumberValidator(value) || [{ type: "error", message: AWARD_VALIDATION_FAIL_MESSAGE }]; - else if (parent["embargo_status"]) - return [ - { - type: "error", - message: "You must provide an NIH Award Number to embargo your data.", - }, - ]; - } - }, - groups: [ - { - name: "Embargo your Data", - properties: [["embargo_status"], ["nih_award_number"]], - }, - ], - }); - - content.append(form); - modal.append(content); - - modal.onClose = async () => notify("Dandiset was not created.", "error"); - - return new Promise((resolve) => { - const button = new Button({ - label: "Create", - primary: true, - onClick: async () => { - await form.validate().catch(() => { - const message = "Please fill out all required fields"; - notify("Dandiset was not set", "error"); - throw message; - }); - - const uploadToMain = form.resolved.archive === "main"; - const staging = !uploadToMain; - - const api_key = await getAPIKey.call(this, staging); - - const api = new dandi.API({ token: api_key, type: staging ? "staging" : undefined }); - await api.init(); - - const metadata = { - description: form.resolved.description, - license: form.resolved.license, - }; - - if (form.resolved.nih_award_number) { - metadata.contributor = [ - { - name: "National Institutes of Health (NIH)", - roleName: ["dcite:Funder"], - schemaKey: "Organization", - awardNumber: form.resolved.nih_award_number, - }, - ]; - } - - const res = await api.create(form.resolved.title, metadata, form.resolved.embargo_status); - - const id = res.identifier; - - notify(`Dandiset ${id} was created`, "success"); - - await addDandiset(res); - - const input = this.form.getFormElement(["dandiset"]); - input.updateData(id); - input.requestUpdate(); - - this.save(); - - resolve(res); - }, - }); - - modal.footer = button; - - modal.open = true; - - document.body.append(modal); - }).finally(() => { - modal.remove(); - }); -} - -async function getAPIKey(staging = false) { - const whichAPIKey = staging ? "staging_api_key" : "main_api_key"; - const DANDI = global.data.DANDI; - let api_key = DANDI?.api_keys?.[whichAPIKey]; - - const errors = await validateDANDIApiKey(api_key, staging); - - const isInvalid = !errors || errors.length; - - if (isInvalid) { - const modal = new Modal({ - header: `${api_key ? "Update" : "Provide"} your ${header(whichAPIKey)}`, - open: true, - }); - - const input = new JSONSchemaInput({ - path: [whichAPIKey], - schema: dandiGlobalSchema.properties.api_keys.properties[whichAPIKey], - }); - - input.style.padding = "25px"; - - modal.append(input); - - let notification; - - const notify = (message, type) => { - if (notification) this.dismiss(notification); - return (notification = this.notify(message, type)); - }; - - modal.onClose = async () => notify("The updated DANDI API key was not set", "error"); - - api_key = await new Promise((resolve) => { - const button = new Button({ - label: "Save", - primary: true, - onClick: async () => { - const value = input.value; - if (value) { - const errors = await validateDANDIApiKey(input.value, staging); - if (!errors || !errors.length) { - modal.remove(); - - merge( - { - DANDI: { - api_keys: { - [whichAPIKey]: value, - }, - }, - }, - global.data - ); - - global.save(); - resolve(value); - } else { - notify(errors[0].message, "error"); - return false; - } - } else { - notify("Your DANDI API key was not set", "error"); - } - }, - }); - - modal.footer = button; - - document.body.append(modal); - }); - } - - return api_key; -} - -export async function uploadToDandi(info, type = "project" in info ? "project" : "") { - const { dandiset } = info; - - const dandiset_id = dandiset; - - const staging = isStaging(dandiset_id); // Automatically detect staging IDs - - const api_key = await getAPIKey.call(this, staging); - - const payload = { - dandiset_id, - ...info.additional_settings, - staging, - api_key, - }; - - if (info.project) payload.project = info.project; - else payload.filesystem_paths = info.filesystem_paths; - - const result = await run(type ? `upload/${type}` : "upload", payload, { - title: "Uploading your files to DANDI", - }).catch((error) => { - this.notify(error.message, "error"); - throw error; - }); - - if (result) - this.notify( - `${ - info.project ?? `${info[folderPathKey].length} filesystem entries` - } successfully uploaded to Dandiset ${dandiset_id}`, - "success" - ); - - return result; -} - -export class UploadsPage extends Page { - header = { - title: "NWB File Uploads", - subtitle: "Upload folders and individual NWB files to the DANDI Archive.", - controls: [ - new Button({ - icon: keyIcon, - label: "API Keys", - onClick: () => { - this.#globalModal.form.results = structuredClone(global.data.DANDI?.api_keys ?? {}); - this.#globalModal.open = true; - }, - }), - ], - }; - - constructor(...args) { - super(...args); - } - - #globalModal = null; - - #saveNotification; - connectedCallback() { - super.connectedCallback(); - - const modal = (this.#globalModal = createFormModal.call(this, { - header: "DANDI API Keys", - schema: dandiGlobalSchema.properties.api_keys, - onSave: async (form) => { - if (this.#saveNotification) this.dismiss(this.#saveNotification); - - const apiKeys = form.resolved; - if (!Object.keys(apiKeys).length) { - this.#saveNotification = this.notify("No API keys were provided", "error"); - return null; - } - - const globalDandiData = global.data.DANDI ?? (global.data.DANDI = {}); - if (!globalDandiData.api_keys) globalDandiData.api_keys = {}; - merge(apiKeys, globalDandiData.api_keys); - - global.save(); - await regenerateDandisets(); - const input = this.form.getFormElement(["dandisets"]); - input.requestUpdate(); - }, - formProps: { - validateOnChange: async (name, parent) => { - const value = parent[name]; - if (name.includes("api_key")) return await validateDANDIApiKey(value, name.includes("staging")); - }, - }, - })); - document.body.append(modal); - } - - disconnectedCallback() { - super.disconnectedCallback(); - if (this.#globalModal) this.#globalModal.remove(); - } - - render() { - const globalState = (global.data.uploads = global.data.uploads ?? {}); - const defaultButtonMessage = "Upload Files"; - - const button = new Button({ - label: defaultButtonMessage, - onClick: async () => { - await this.form.validate(); // Will throw an error in the callback - - const results = await uploadToDandi.call(this, { ...global.data.uploads }); - global.data.uploads = {}; - global.save(); - - const modal = new Modal({ open: true }); - modal.header = "DANDI Upload Summary"; - const summary = new DandiResults({ - id: globalState.dandiset, - files: { - subject: results.map((file) => { - return { file }; - }), - }, - }); - summary.style.padding = "25px"; - modal.append(summary); - - document.body.append(modal); - - this.requestUpdate(); - }, - }); - - const promise = ready.cpus - .then(() => ready.dandisets) - .then(() => { - // NOTE: API Keys and Dandiset IDs persist across selected project - return (this.form = new JSONSchemaForm({ - results: globalState, - schema: dandiSchema, - validateEmptyValues: false, - controls: { - dandiset: [ - new Button({ - label: "Create New Dandiset", - buttonStyles: { - width: "max-content", - }, - onClick: async () => { - await createDandiset.call(this, { title: this.form.resolved.dandiset }); - this.requestUpdate(); - }, - }), - ], - }, - sort: ([k1]) => { - if (k1 === folderPathKey) return -1; - }, - onUpdate: ([id]) => { - if (id === folderPathKey) { - const keysToUpdate = ["dandiset"]; - keysToUpdate.forEach((k) => { - const input = this.form.getFormElement([k]); - if (input.value) input.updateData(""); - }); - } - - global.save(); - }, - - onThrow, - - transformErrors: (error) => { - if (error.message === "Filesystem Paths is a required property.") - error.message = "Please select at least one file or folder to upload."; - }, - - validateOnChange: validate, - })); - }) - .catch((error) => html`

      ${error}

      `); - - // Confirm that one api key exists - promise.then(() => { - const api_keys = global.data.DANDI?.api_keys; - if (!api_keys || !Object.keys(api_keys).length) this.#globalModal.open = true; - }); - - return html` - ${until( - promise.then((form) => { - return html` - ${form} -
      - ${button} - `; - }), - html`

      Loading form contents...

      -

      ` - )} - `; - } -} - -customElements.get("nwbguide-uploads-page") || customElements.define("nwbguide-uploads-page", UploadsPage); +import { html } from "lit"; +import { until } from "lit/directives/until.js"; + +import { JSONSchemaForm } from "../../JSONSchemaForm.js"; +import { Page } from "../Page.js"; +import { onThrow } from "../../../errors"; + +const folderPathKey = "filesystem_paths"; +import dandiUploadSchema, { + addDandiset, + ready, + regenerateDandisets, +} from "../../../../../../schemas/dandi-upload.schema"; +import dandiStandaloneSchema from "../../../../../../schemas/json/dandi/standalone.json"; +const dandiSchema = merge(dandiUploadSchema, structuredClone(dandiStandaloneSchema), { arrays: "append" }); + +import dandiCreateSchema from "../../../../../../schemas/dandi-create.schema"; + +import { Button } from "../../Button.js"; +import { global } from "../../../progress/index.js"; +import { merge } from "../utils"; + +import { run } from "../guided-mode/options/utils.js"; +import { Modal } from "../../Modal"; +import { DandiResults } from "../../DandiResults.js"; + +import dandiGlobalSchema from "../../../../../../schemas/json/dandi/global.json"; +import { JSONSchemaInput } from "../../JSONSchemaInput.js"; +import { header } from "../../forms/utils"; + +import { validateDANDIApiKey } from "../../../validation/dandi"; + +import * as dandi from "dandi"; + +import keyIcon from "../../assets/key.svg?raw"; + +import { AWARD_VALIDATION_FAIL_MESSAGE, awardNumberValidator, isStaging, validate } from "./utils"; +import { createFormModal } from "../../forms/GlobalFormModal"; + +export async function createDandiset(results = {}) { + let notification; + + const notify = (message, type) => { + if (notification) this.dismiss(notification); + return (notification = this.notify(message, type)); + }; + + const modal = new Modal({ + header: "Create a Dandiset", + }); + + const content = document.createElement("div"); + Object.assign(content.style, { + padding: "25px", + }); + + const updateNIHInput = (state) => { + const nihInput = form.getFormElement(["nih_award_number"]); + + const isEmbargoed = !!state; + + // Show the NIH input if embargo is set + if (isEmbargoed) nihInput.removeAttribute("hidden"); + else nihInput.setAttribute("hidden", ""); + + // Make the NIH input required if embargo is set + nihInput.required = isEmbargoed; + }; + + const form = new JSONSchemaForm({ + schema: dandiCreateSchema, + results, + validateEmptyValues: false, // Only show errors after submission + validateOnChange: async (name, parent) => { + const value = parent[name]; + + if (name === "embargo_status") return updateNIHInput(value); + + if (name === "nih_award_number") { + if (value) + return awardNumberValidator(value) || [{ type: "error", message: AWARD_VALIDATION_FAIL_MESSAGE }]; + else if (parent["embargo_status"]) + return [ + { + type: "error", + message: "You must provide an NIH Award Number to embargo your data.", + }, + ]; + } + }, + groups: [ + { + name: "Embargo your Data", + properties: [["embargo_status"], ["nih_award_number"]], + }, + ], + }); + + content.append(form); + modal.append(content); + + modal.onClose = async () => notify("Dandiset was not created.", "error"); + + return new Promise((resolve) => { + const button = new Button({ + label: "Create", + primary: true, + onClick: async () => { + await form.validate().catch(() => { + const message = "Please fill out all required fields"; + notify("Dandiset was not set", "error"); + throw message; + }); + + const uploadToMain = form.resolved.archive === "main"; + const staging = !uploadToMain; + + const api_key = await getAPIKey.call(this, staging); + + const api = new dandi.API({ token: api_key, type: staging ? "staging" : undefined }); + await api.init(); + + const metadata = { + description: form.resolved.description, + license: form.resolved.license, + }; + + if (form.resolved.nih_award_number) { + metadata.contributor = [ + { + name: "National Institutes of Health (NIH)", + roleName: ["dcite:Funder"], + schemaKey: "Organization", + awardNumber: form.resolved.nih_award_number, + }, + ]; + } + + const res = await api.create(form.resolved.title, metadata, form.resolved.embargo_status); + + const id = res.identifier; + + notify(`Dandiset ${id} was created`, "success"); + + await addDandiset(res); + + const input = this.form.getFormElement(["dandiset"]); + input.updateData(id); + input.requestUpdate(); + + this.save(); + + resolve(res); + }, + }); + + modal.footer = button; + + modal.open = true; + + document.body.append(modal); + }).finally(() => { + modal.remove(); + }); +} + +async function getAPIKey(staging = false) { + const whichAPIKey = staging ? "staging_api_key" : "main_api_key"; + const DANDI = global.data.DANDI; + let api_key = DANDI?.api_keys?.[whichAPIKey]; + + const errors = await validateDANDIApiKey(api_key, staging); + + const isInvalid = !errors || errors.length; + + if (isInvalid) { + const modal = new Modal({ + header: `${api_key ? "Update" : "Provide"} your ${header(whichAPIKey)}`, + open: true, + }); + + const input = new JSONSchemaInput({ + path: [whichAPIKey], + schema: dandiGlobalSchema.properties.api_keys.properties[whichAPIKey], + }); + + input.style.padding = "25px"; + + modal.append(input); + + let notification; + + const notify = (message, type) => { + if (notification) this.dismiss(notification); + return (notification = this.notify(message, type)); + }; + + modal.onClose = async () => notify("The updated DANDI API key was not set", "error"); + + api_key = await new Promise((resolve) => { + const button = new Button({ + label: "Save", + primary: true, + onClick: async () => { + const value = input.value; + if (value) { + const errors = await validateDANDIApiKey(input.value, staging); + if (!errors || !errors.length) { + modal.remove(); + + merge( + { + DANDI: { + api_keys: { + [whichAPIKey]: value, + }, + }, + }, + global.data + ); + + global.save(); + resolve(value); + } else { + notify(errors[0].message, "error"); + return false; + } + } else { + notify("Your DANDI API key was not set", "error"); + } + }, + }); + + modal.footer = button; + + document.body.append(modal); + }); + } + + return api_key; +} + +export async function uploadToDandi(info, type = "project" in info ? "project" : "") { + const { dandiset } = info; + + const dandiset_id = dandiset; + + const staging = isStaging(dandiset_id); // Automatically detect staging IDs + + const api_key = await getAPIKey.call(this, staging); + + const payload = { + dandiset_id, + ...info.additional_settings, + staging, + api_key, + }; + + if (info.project) payload.project = info.project; + else payload.filesystem_paths = info.filesystem_paths; + + const result = await run(type ? `upload/${type}` : "upload", payload, { + title: "Uploading your files to DANDI", + }).catch((error) => { + this.notify(error.message, "error"); + throw error; + }); + + if (result) + this.notify( + `${ + info.project ?? `${info[folderPathKey].length} filesystem entries` + } successfully uploaded to Dandiset ${dandiset_id}`, + "success" + ); + + return result; +} + +export class UploadsPage extends Page { + header = { + title: "NWB File Uploads", + subtitle: "Upload folders and individual NWB files to the DANDI Archive.", + controls: [ + new Button({ + icon: keyIcon, + label: "API Keys", + onClick: () => { + this.#globalModal.form.results = structuredClone(global.data.DANDI?.api_keys ?? {}); + this.#globalModal.open = true; + }, + }), + ], + }; + + constructor(...args) { + super(...args); + } + + #globalModal = null; + + #saveNotification; + connectedCallback() { + super.connectedCallback(); + + const modal = (this.#globalModal = createFormModal.call(this, { + header: "DANDI API Keys", + schema: dandiGlobalSchema.properties.api_keys, + onSave: async (form) => { + if (this.#saveNotification) this.dismiss(this.#saveNotification); + + const apiKeys = form.resolved; + if (!Object.keys(apiKeys).length) { + this.#saveNotification = this.notify("No API keys were provided", "error"); + return null; + } + + const globalDandiData = global.data.DANDI ?? (global.data.DANDI = {}); + if (!globalDandiData.api_keys) globalDandiData.api_keys = {}; + merge(apiKeys, globalDandiData.api_keys); + + global.save(); + await regenerateDandisets(); + const input = this.form.getFormElement(["dandisets"]); + input.requestUpdate(); + }, + formProps: { + validateOnChange: async (name, parent) => { + const value = parent[name]; + if (name.includes("api_key")) return await validateDANDIApiKey(value, name.includes("staging")); + }, + }, + })); + document.body.append(modal); + } + + disconnectedCallback() { + super.disconnectedCallback(); + if (this.#globalModal) this.#globalModal.remove(); + } + + render() { + const globalState = (global.data.uploads = global.data.uploads ?? {}); + const defaultButtonMessage = "Upload Files"; + + const button = new Button({ + label: defaultButtonMessage, + onClick: async () => { + await this.form.validate(); // Will throw an error in the callback + + const results = await uploadToDandi.call(this, { ...global.data.uploads }); + global.data.uploads = {}; + global.save(); + + const modal = new Modal({ open: true }); + modal.header = "DANDI Upload Summary"; + const summary = new DandiResults({ + id: globalState.dandiset, + files: { + subject: results.map((file) => { + return { file }; + }), + }, + }); + summary.style.padding = "25px"; + modal.append(summary); + + document.body.append(modal); + + this.requestUpdate(); + }, + }); + + const promise = ready.cpus + .then(() => ready.dandisets) + .then(() => { + // NOTE: API Keys and Dandiset IDs persist across selected project + return (this.form = new JSONSchemaForm({ + results: globalState, + schema: dandiSchema, + validateEmptyValues: false, + controls: { + dandiset: [ + new Button({ + label: "Create New Dandiset", + buttonStyles: { + width: "max-content", + }, + onClick: async () => { + await createDandiset.call(this, { title: this.form.resolved.dandiset }); + this.requestUpdate(); + }, + }), + ], + }, + sort: ([k1]) => { + if (k1 === folderPathKey) return -1; + }, + onUpdate: ([id]) => { + if (id === folderPathKey) { + const keysToUpdate = ["dandiset"]; + keysToUpdate.forEach((k) => { + const input = this.form.getFormElement([k]); + if (input.value) input.updateData(""); + }); + } + + global.save(); + }, + + onThrow, + + transformErrors: (error) => { + if (error.message === "Filesystem Paths is a required property.") + error.message = "Please select at least one file or folder to upload."; + }, + + validateOnChange: validate, + })); + }) + .catch((error) => html`

      ${error}

      `); + + // Confirm that one api key exists + promise.then(() => { + const api_keys = global.data.DANDI?.api_keys; + if (!api_keys || !Object.keys(api_keys).length) this.#globalModal.open = true; + }); + + return html` + ${until( + promise.then((form) => { + return html` + ${form} +
      + ${button} + `; + }), + html`

      Loading form contents...

      +

      ` + )} + `; + } +} + +customElements.get("nwbguide-uploads-page") || customElements.define("nwbguide-uploads-page", UploadsPage); diff --git a/src/electron/renderer/src/stories/pages/utils.js b/src/electron/renderer/src/stories/pages/utils.js index ee746ab83..85c45953e 100644 --- a/src/electron/renderer/src/stories/pages/utils.js +++ b/src/electron/renderer/src/stories/pages/utils.js @@ -1,77 +1,77 @@ -export const randomizeIndex = (count) => Math.floor(count * Math.random()); - -export const randomizeElements = (array, count) => { - if (count > array.length) throw new Error("Array size cannot be smaller than expected random numbers count."); - const result = []; - const guardian = new Set(); - while (result.length < count) { - const index = randomizeIndex(array.length); - if (guardian.has(index)) continue; - const element = array[index]; - guardian.add(index); - result.push(element); - } - return result; -}; - -const isObject = (item) => { - return item && typeof item === "object" && !Array.isArray(item); -}; - -export const setUndefinedIfNotDeclared = (schemaProps, resolved) => { - if ("properties" in schemaProps) schemaProps = schemaProps.properties; - for (const prop in schemaProps) { - const propInfo = schemaProps[prop]?.properties; - if (propInfo) setUndefinedIfNotDeclared(propInfo, resolved[prop]); - else if (!(prop in resolved)) resolved[prop] = undefined; - } -}; - -export const isPrivate = (k) => k.slice(0, 2) === "__"; - -export const sanitize = (item, condition = isPrivate) => { - if (isObject(item)) { - for (const [k, value] of Object.entries(item)) { - if (condition(k, value)) delete item[k]; - else sanitize(value, condition); - } - } - - return item; -}; - -export function merge(toMerge = {}, target = {}, mergeOptions = {}) { - // Deep merge objects - for (const [k, value] of Object.entries(toMerge)) { - const targetValue = target[k]; - // if (isPrivate(k)) continue; - const arrayMergeMethod = mergeOptions.arrays; - if (arrayMergeMethod && Array.isArray(value) && Array.isArray(targetValue)) { - if (arrayMergeMethod === "append") - target[k] = [...targetValue, ...value]; // Append array entries together - else { - target[k] = targetValue.map((targetItem, i) => merge(value[i], targetItem, mergeOptions)); // Merge array entries - } - } else if (value === undefined) { - delete target[k]; // Remove matched values - // if (mergeOptions.remove !== false) delete target[k]; // Remove matched values - } else if (isObject(value)) { - if (isObject(targetValue)) target[k] = merge(value, targetValue, mergeOptions); - else { - if (mergeOptions.clone) - target[k] = merge(value, {}, mergeOptions); // Replace primitive values - else target[k] = value; // Replace object values - } - } else target[k] = value; // Replace primitive values - } - - return target; -} - -export function mapSessions(callback = (value) => value, toIterate = {}) { - return Object.entries(toIterate) - .map(([subject, sessions]) => { - return Object.entries(sessions).map(([session, info], i) => callback({ subject, session, info }, i)); - }) - .flat(2); -} +export const randomizeIndex = (count) => Math.floor(count * Math.random()); + +export const randomizeElements = (array, count) => { + if (count > array.length) throw new Error("Array size cannot be smaller than expected random numbers count."); + const result = []; + const guardian = new Set(); + while (result.length < count) { + const index = randomizeIndex(array.length); + if (guardian.has(index)) continue; + const element = array[index]; + guardian.add(index); + result.push(element); + } + return result; +}; + +const isObject = (item) => { + return item && typeof item === "object" && !Array.isArray(item); +}; + +export const setUndefinedIfNotDeclared = (schemaProps, resolved) => { + if ("properties" in schemaProps) schemaProps = schemaProps.properties; + for (const prop in schemaProps) { + const propInfo = schemaProps[prop]?.properties; + if (propInfo) setUndefinedIfNotDeclared(propInfo, resolved[prop]); + else if (!(prop in resolved)) resolved[prop] = undefined; + } +}; + +export const isPrivate = (k) => k.slice(0, 2) === "__"; + +export const sanitize = (item, condition = isPrivate) => { + if (isObject(item)) { + for (const [k, value] of Object.entries(item)) { + if (condition(k, value)) delete item[k]; + else sanitize(value, condition); + } + } + + return item; +}; + +export function merge(toMerge = {}, target = {}, mergeOptions = {}) { + // Deep merge objects + for (const [k, value] of Object.entries(toMerge)) { + const targetValue = target[k]; + // if (isPrivate(k)) continue; + const arrayMergeMethod = mergeOptions.arrays; + if (arrayMergeMethod && Array.isArray(value) && Array.isArray(targetValue)) { + if (arrayMergeMethod === "append") + target[k] = [...targetValue, ...value]; // Append array entries together + else { + target[k] = targetValue.map((targetItem, i) => merge(value[i], targetItem, mergeOptions)); // Merge array entries + } + } else if (value === undefined) { + delete target[k]; // Remove matched values + // if (mergeOptions.remove !== false) delete target[k]; // Remove matched values + } else if (isObject(value)) { + if (isObject(targetValue)) target[k] = merge(value, targetValue, mergeOptions); + else { + if (mergeOptions.clone) + target[k] = merge(value, {}, mergeOptions); // Replace primitive values + else target[k] = value; // Replace object values + } + } else target[k] = value; // Replace primitive values + } + + return target; +} + +export function mapSessions(callback = (value) => value, toIterate = {}) { + return Object.entries(toIterate) + .map(([subject, sessions]) => { + return Object.entries(sessions).map(([session, info], i) => callback({ subject, session, info }, i)); + }) + .flat(2); +} diff --git a/src/electron/renderer/src/stories/preview/NWBFilePreview.js b/src/electron/renderer/src/stories/preview/NWBFilePreview.js index fa7568ab1..7364e4f8b 100644 --- a/src/electron/renderer/src/stories/preview/NWBFilePreview.js +++ b/src/electron/renderer/src/stories/preview/NWBFilePreview.js @@ -1,222 +1,202 @@ -import { LitElement, css, html } from "lit"; -import { InspectorList } from "./inspector/InspectorList"; -import { Neurosift } from "./Neurosift"; -import { unsafeHTML } from "lit/directives/unsafe-html.js"; -import { run } from "../pages/guided-mode/options/utils"; -import { until } from "lit/directives/until.js"; -import { InstanceManager } from "../InstanceManager"; -import { path } from "../../electron"; -import { FullScreenToggle } from "../FullScreenToggle"; - -export function getSharedPath(array) { - array = array.map((str) => str.replace(/\\/g, "/")); // Convert to Mac-style path - const mapped = array.map((str) => str.split("/")); - let shared = mapped.shift(); - mapped.forEach((arr, i) => { - for (let j in arr) { - if (arr[j] !== shared[j]) { - shared = shared.slice(0, j); - break; - } - } - }); - - return shared ? path.normalize(shared.join("/")) : ""; // Convert back to OS-specific path -} - -export function truncateFilePaths(items, basepath) { - return items.map((item) => { - item = { ...item }; - item.file_path = item.file_path - .replace(`${basepath}/`, "") // Mac - .replace(`${basepath}\\`, ""); // Windows - return item; - }); -} - -export const removeFilePaths = (items) => { - return items.map((item) => { - const copy = { ...item }; - delete copy.file_path; - return copy; - }); -}; - -class NWBPreviewInstance extends LitElement { - constructor({ file }, project) { - super(); - this.file = file; - this.project = project; - - window.addEventListener("online", () => this.requestUpdate()); - window.addEventListener("offline", () => this.requestUpdate()); - } - - render() { - const isOnline = navigator.onLine; - - if (!isOnline) - return until( - (async () => { - const htmlRep = await run( - "html", - { nwbfile_path: this.file }, - { swal: false }, - ); - return unsafeHTML(htmlRep); - })(), - html`Loading HTML representation...`, - ); - - const neurosift = new Neurosift({ fullscreen: false }); - - // Enable access to the explicit file path - fetch(`${baseUrl}/files/${this.file}`, { method: "POST" }) - .then((res) => res.text()) - .then((result) => { - // Set Neurosift to access the returned URL - if (result) neurosift.url = result; - }); - - return neurosift; - } -} - -customElements.get("nwb-preview-instance") || - customElements.define("nwb-preview-instance", NWBPreviewInstance); - -export class NWBFilePreview extends LitElement { - static get styles() { - return css` - :host { - display: block; - width: 100%; - height: 100%; - background: white; - position: relative; - } - - iframe { - width: 100%; - height: 100%; - border: 0; - } - - #inspect { - display: flex; - flex-direction: column; - border-left: 1px solid gray; - box-shadow: -5px 0 5px -5px rgba(0, 0, 0, 0.5); - z-index: 1; - } - `; - } - - constructor({ files = {}, project, inspect = false }) { - super(); - this.project = project; - this.files = files; - this.inspect = inspect; - } - - createInstance = ({ subject, session, info }) => { - return { - subject, - session, - display: () => new NWBPreviewInstance(info, this.project), - }; - }; - - render() { - const fileArr = Object.entries(this.files) - .map(([subject, v]) => - Object.entries(v).map(([session, info]) => { - return { subject, session, info }; - }), - ) - .flat(); - - const onlyFirstFile = fileArr.length <= 1; - - return html` ${new FullScreenToggle({ target: this })} -

      -
      - ${(() => { - if (onlyFirstFile) - return new NWBPreviewInstance(fileArr[0].info, this.project); - else { - const _instances = fileArr.map(this.createInstance); - - const instances = _instances.reduce( - (acc, { subject, session, display }) => { - if (!acc[`sub-${subject}`]) acc[`sub-${subject}`] = {}; - acc[`sub-${subject}`][`ses-${session}`] = display; - return acc; - }, - {}, - ); - - return new InstanceManager({ instances }); - } - })()} -
      - ${this.inspect - ? html`
      -

      - Inspector Report -

      - ${until( - (async () => { - const options = {}; // NOTE: Currently options are handled on the Python end until exposed to the user - - const title = "Inspecting your file"; - - const report = onlyFirstFile - ? await run( - "inspect_file", - { nwbfile_path: fileArr[0].info.file, ...options }, - { title }, - ) // Inspect the first file - : await run( - "inspect_folder", - { path, ...options }, - { title: title + "s" }, - ); // Inspect the folder - - const result = onlyFirstFile - ? { - ...report, - messages: removeFilePaths(report.messages), - } - : { - ...report, - messages: truncateFilePaths( - report.messages, - getSharedPath(fileArr.map(({ info }) => info.file)), - ), - }; - - const items = result.messages; - - const list = new InspectorList({ - items: items, - listStyles: { minWidth: "300px", maxWidth: "350px" }, - emptyMessage: "No issues found.", - }); - list.style.padding = "10px"; - return list; - })(), - html`Loading inspector report...`, - )} -
      ` - : ""} -
      `; - } -} - -customElements.get("nwb-file-preview") || - customElements.define("nwb-file-preview", NWBFilePreview); +import { LitElement, css, html } from "lit"; +import { InspectorList } from "./inspector/InspectorList"; +import { Neurosift } from "./Neurosift"; +import { unsafeHTML } from "lit/directives/unsafe-html.js"; +import { run } from "../pages/guided-mode/options/utils"; +import { until } from "lit/directives/until.js"; +import { InstanceManager } from "../InstanceManager"; +import { path } from "../../electron"; +import { FullScreenToggle } from "../FullScreenToggle"; + +export function getSharedPath(array) { + array = array.map((str) => str.replace(/\\/g, "/")); // Convert to Mac-style path + const mapped = array.map((str) => str.split("/")); + let shared = mapped.shift(); + mapped.forEach((arr, i) => { + for (let j in arr) { + if (arr[j] !== shared[j]) { + shared = shared.slice(0, j); + break; + } + } + }); + + return shared ? path.normalize(shared.join("/")) : ""; // Convert back to OS-specific path +} + +export function truncateFilePaths(items, basepath) { + return items.map((item) => { + item = { ...item }; + item.file_path = item.file_path + .replace(`${basepath}/`, "") // Mac + .replace(`${basepath}\\`, ""); // Windows + return item; + }); +} + +export const removeFilePaths = (items) => { + return items.map((item) => { + const copy = { ...item }; + delete copy.file_path; + return copy; + }); +}; + +class NWBPreviewInstance extends LitElement { + constructor({ file }, project) { + super(); + this.file = file; + this.project = project; + + window.addEventListener("online", () => this.requestUpdate()); + window.addEventListener("offline", () => this.requestUpdate()); + } + + render() { + const isOnline = navigator.onLine; + + if (!isOnline) + return until( + (async () => { + const htmlRep = await run("html", { nwbfile_path: this.file }, { swal: false }); + return unsafeHTML(htmlRep); + })(), + html`Loading HTML representation...` + ); + + const neurosift = new Neurosift({ fullscreen: false }); + + // Enable access to the explicit file path + fetch(`${baseUrl}/files/${this.file}`, { method: "POST" }) + .then((res) => res.text()) + .then((result) => { + // Set Neurosift to access the returned URL + if (result) neurosift.url = result; + }); + + return neurosift; + } +} + +customElements.get("nwb-preview-instance") || customElements.define("nwb-preview-instance", NWBPreviewInstance); + +export class NWBFilePreview extends LitElement { + static get styles() { + return css` + :host { + display: block; + width: 100%; + height: 100%; + background: white; + position: relative; + } + + iframe { + width: 100%; + height: 100%; + border: 0; + } + + #inspect { + display: flex; + flex-direction: column; + border-left: 1px solid gray; + box-shadow: -5px 0 5px -5px rgba(0, 0, 0, 0.5); + z-index: 1; + } + `; + } + + constructor({ files = {}, project, inspect = false }) { + super(); + this.project = project; + this.files = files; + this.inspect = inspect; + } + + createInstance = ({ subject, session, info }) => { + return { + subject, + session, + display: () => new NWBPreviewInstance(info, this.project), + }; + }; + + render() { + const fileArr = Object.entries(this.files) + .map(([subject, v]) => + Object.entries(v).map(([session, info]) => { + return { subject, session, info }; + }) + ) + .flat(); + + const onlyFirstFile = fileArr.length <= 1; + + return html` ${new FullScreenToggle({ target: this })} +
      +
      + ${(() => { + if (onlyFirstFile) return new NWBPreviewInstance(fileArr[0].info, this.project); + else { + const _instances = fileArr.map(this.createInstance); + + const instances = _instances.reduce((acc, { subject, session, display }) => { + if (!acc[`sub-${subject}`]) acc[`sub-${subject}`] = {}; + acc[`sub-${subject}`][`ses-${session}`] = display; + return acc; + }, {}); + + return new InstanceManager({ instances }); + } + })()} +
      + ${this.inspect + ? html`
      +

      Inspector Report

      + ${until( + (async () => { + const options = {}; // NOTE: Currently options are handled on the Python end until exposed to the user + + const title = "Inspecting your file"; + + const report = onlyFirstFile + ? await run( + "inspect_file", + { nwbfile_path: fileArr[0].info.file, ...options }, + { title } + ) // Inspect the first file + : await run("inspect_folder", { path, ...options }, { title: title + "s" }); // Inspect the folder + + const result = onlyFirstFile + ? { + ...report, + messages: removeFilePaths(report.messages), + } + : { + ...report, + messages: truncateFilePaths( + report.messages, + getSharedPath(fileArr.map(({ info }) => info.file)) + ), + }; + + const items = result.messages; + + const list = new InspectorList({ + items: items, + listStyles: { minWidth: "300px", maxWidth: "350px" }, + emptyMessage: "No issues found.", + }); + list.style.padding = "10px"; + return list; + })(), + html`Loading inspector report...` + )} +
      ` + : ""} +
      `; + } +} + +customElements.get("nwb-file-preview") || customElements.define("nwb-file-preview", NWBFilePreview); diff --git a/src/electron/renderer/src/stories/preview/Neurosift.js b/src/electron/renderer/src/stories/preview/Neurosift.js index 15bc4beb0..b17000bfd 100644 --- a/src/electron/renderer/src/stories/preview/Neurosift.js +++ b/src/electron/renderer/src/stories/preview/Neurosift.js @@ -1,96 +1,94 @@ -import { LitElement, css, html } from "lit"; - -import { Loader } from "../Loader"; -import { FullScreenToggle } from "../FullScreenToggle"; -import { baseUrl } from "../../server/globals"; - -export class Neurosift extends LitElement { - static get styles() { - return css` - :host { - background: white; - width: 100%; - height: 100%; - display: grid; - grid-template-rows: 100%; - grid-template-columns: 100%; - position: relative; - --loader-color: hsl(200, 80%, 50%); - } - - iframe, - .loader-container { - width: 100%; - height: 100%; - } - - .loader-container { - display: flex; - align-items: center; - justify-content: center; - position: absolute; - top: 0; - left: 0; - } - - .fullscreen-toggle { - display: flex; - position: absolute; - top: 10px; - right: 10px; - padding: 10px; - color: white; - background-color: gainsboro; - border: 1px solid gray; - border-radius: 10px; - cursor: pointer; - } - - span { - font-size: 14px; - } - - small { - padding-left: 10px; - } - - iframe { - border: 0; - } - `; - } - - static get properties() { - return { - url: { type: String, reflect: true }, - }; - } - - constructor({ url, fullscreen = true } = {}) { - super(); - this.url = url; - this.fullscreen = fullscreen; - } - - render() { - return this.url - ? html`
      - ${new Loader({ - message: `Loading Neurosift view...
      ${this.url}`, - })} -
      - ${this.fullscreen ? new FullScreenToggle({ target: this }) : ""} - ` - : ``; - } -} - -customElements.get("neurosift-iframe") || - customElements.define("neurosift-iframe", Neurosift); +import { LitElement, css, html } from "lit"; + +import { Loader } from "../Loader"; +import { FullScreenToggle } from "../FullScreenToggle"; +import { baseUrl } from "../../server/globals"; + +export class Neurosift extends LitElement { + static get styles() { + return css` + :host { + background: white; + width: 100%; + height: 100%; + display: grid; + grid-template-rows: 100%; + grid-template-columns: 100%; + position: relative; + --loader-color: hsl(200, 80%, 50%); + } + + iframe, + .loader-container { + width: 100%; + height: 100%; + } + + .loader-container { + display: flex; + align-items: center; + justify-content: center; + position: absolute; + top: 0; + left: 0; + } + + .fullscreen-toggle { + display: flex; + position: absolute; + top: 10px; + right: 10px; + padding: 10px; + color: white; + background-color: gainsboro; + border: 1px solid gray; + border-radius: 10px; + cursor: pointer; + } + + span { + font-size: 14px; + } + + small { + padding-left: 10px; + } + + iframe { + border: 0; + } + `; + } + + static get properties() { + return { + url: { type: String, reflect: true }, + }; + } + + constructor({ url, fullscreen = true } = {}) { + super(); + this.url = url; + this.fullscreen = fullscreen; + } + + render() { + return this.url + ? html`
      + ${new Loader({ + message: `Loading Neurosift view...
      ${this.url}`, + })} +
      + ${this.fullscreen ? new FullScreenToggle({ target: this }) : ""} + ` + : ``; + } +} + +customElements.get("neurosift-iframe") || customElements.define("neurosift-iframe", Neurosift); diff --git a/src/electron/renderer/src/stories/preview/inspector/InspectorList.js b/src/electron/renderer/src/stories/preview/inspector/InspectorList.js index cc695c327..b003dacec 100644 --- a/src/electron/renderer/src/stories/preview/inspector/InspectorList.js +++ b/src/electron/renderer/src/stories/preview/inspector/InspectorList.js @@ -1,239 +1,239 @@ -import { LitElement, css, html } from "lit"; -import { List } from "../../List"; -import { getMessageType, isErrorImportance } from "../../../validation"; - -import { unsafeHTML } from "lit/directives/unsafe-html.js"; - -const sortList = (items) => { - return items - .sort((a, b) => { - const aCritical = isErrorImportance.includes(a.importance); - const bCritical = isErrorImportance.includes(a.importance); - if (aCritical && bCritical) return 0; - else if (aCritical) return -1; - else return 1; - }) - .sort((a, b) => { - const lowA = a.severity == "LOW"; - const lowB = b.severity === "LOW"; - if (lowA && lowB) return 0; - else if (lowA) return 1; - else return -1; - }); -}; - -const aggregateMessages = (items) => { - let messages = {}; - items.forEach((item) => { - if (!messages[item.message]) messages[item.message] = []; - messages[item.message].push(item); - }); - return messages; -}; - -export class InspectorList extends List { - static get styles() { - return [ - super.styles, - css` - :host { - display: block; - } - }`, - ]; - } - - constructor(props = {}) { - const { items } = props; - const aggregatedItems = Object.values(aggregateMessages(items)).map((items) => { - const aggregate = { ...items.pop() }; // Create a base object for the aggregation - aggregate.files = [aggregate.file_path, ...items.map(({ file_path }) => file_path)]; - return aggregate; - }); - - super({ - editable: false, - unordered: true, - ...props, - items: sortList(aggregatedItems).map((itemProps) => { - const item = new InspectorListItem(itemProps); - item.style.flexGrow = "1"; - return { content: item }; - }), - }); - } -} - -customElements.get("inspector-list") || customElements.define("inspector-list", InspectorList); - -export class InspectorListItem extends LitElement { - static get styles() { - return css` - :host { - display: block; - background: WhiteSmoke; - border: 1px solid gray; - border-radius: 10px; - overflow: hidden; - text-wrap: wrap; - padding: 10px; - font-size: 12.5px; - } - - :host(:not(:last-child)) { - margin: 0 0 1em; - } - - #message { - display: block; - font-size: 14px; - font-weight: bold; - } - - #filepath { - font-size: 10px; - } - - #objectType { - font-size: 10px; - } - - :host > * { - margin: 0px; - } - - :host([type="error"]) { - color: #9d0b0b; - background: #f8d7da; - border: 1px solid #f5c2c7; - border-radius: 4px; - } - - :host([type="warning"]) { - color: #856404; - background: #fff3cd; - border: 1px solid #ffeeba; - border-radius: 4px; - } - `; - } - - constructor(props = {}) { - super(); - this.ORIGINAL_TYPE = props.type; - Object.assign(this, props); - } - - static get properties() { - return { - type: { - type: String, - reflect: true, - }, - }; - } - - render() { - this.type = getMessageType({ - ...this, - type: this.ORIGINAL_TYPE, - }); - - const isString = typeof this.message === "string"; - if (isString) this.setAttribute("title", this.message); - - const hasObjectType = "object_type" in this; - const hasMetadata = hasObjectType && "object_name" in this; - - const message = isString ? unsafeHTML(this.message) : this.message; - - return html` - ${hasMetadata ? html`${hasObjectType ? `${this.object_type}` : ""} ` : ""} - ${hasMetadata ? html`${message}` : html`

      ${message}

      `} - ${this.file_path - ? html`${this.files && this.files.length > 1 - ? `${this.files[0]} and ${this.files.length - 1} other files` - : this.file_path}` - : ""} - `; - } -} - -customElements.get("inspector-list-item") || customElements.define("inspector-list-item", InspectorListItem); - -const legendEntries = [ - { type: "error", header: "Error", message: "Must be fixed" }, - { type: "warning", header: "Warning", message: "Can be safely ignored" }, -]; - -export class InspectorLegend extends LitElement { - static get styles() { - return css` - :host { - display: block; - font-size: 80%; - } - - inspector-list-item { - margin: 0; - } - - :host > div { - padding: 5px 10px; - display: flex; - gap: 25px; - align-items: center; - border: 1px solid gray; - border-radius: 0 0 10px 10px; - } - - h4 { - margin: 0; - padding: 5px 10px; - width: 100%; - background: black; - color: white; - border-radius: 10px 10px 0 0; - box-sizing: border-box; - } - `; - } - - constructor(props) { - super(); - Object.assign(this, props); - } - - render() { - return html` -

      Legend

      -
      - ${legendEntries.map(({ type, header, message }) => { - const item = new InspectorListItem({ - type, - message: html`

      ${header}

      - ${message}`, - }); - item.style.width = "max-content"; - return item; - })} -
      -

      - To fix issues specific to a single file, you can edit the file metadata on the previous - page. -

      - ${this.multiple === false - ? "" - : html`

      - To fix issues across many files, you may want to edit the default metadata on the - previous page. -

      `} -
      -
      - `; - } -} - -customElements.get("nwbguide-inspector-legend") || customElements.define("nwbguide-inspector-legend", InspectorLegend); +import { LitElement, css, html } from "lit"; +import { List } from "../../List"; +import { getMessageType, isErrorImportance } from "../../../validation"; + +import { unsafeHTML } from "lit/directives/unsafe-html.js"; + +const sortList = (items) => { + return items + .sort((a, b) => { + const aCritical = isErrorImportance.includes(a.importance); + const bCritical = isErrorImportance.includes(a.importance); + if (aCritical && bCritical) return 0; + else if (aCritical) return -1; + else return 1; + }) + .sort((a, b) => { + const lowA = a.severity == "LOW"; + const lowB = b.severity === "LOW"; + if (lowA && lowB) return 0; + else if (lowA) return 1; + else return -1; + }); +}; + +const aggregateMessages = (items) => { + let messages = {}; + items.forEach((item) => { + if (!messages[item.message]) messages[item.message] = []; + messages[item.message].push(item); + }); + return messages; +}; + +export class InspectorList extends List { + static get styles() { + return [ + super.styles, + css` + :host { + display: block; + } + }`, + ]; + } + + constructor(props = {}) { + const { items } = props; + const aggregatedItems = Object.values(aggregateMessages(items)).map((items) => { + const aggregate = { ...items.pop() }; // Create a base object for the aggregation + aggregate.files = [aggregate.file_path, ...items.map(({ file_path }) => file_path)]; + return aggregate; + }); + + super({ + editable: false, + unordered: true, + ...props, + items: sortList(aggregatedItems).map((itemProps) => { + const item = new InspectorListItem(itemProps); + item.style.flexGrow = "1"; + return { content: item }; + }), + }); + } +} + +customElements.get("inspector-list") || customElements.define("inspector-list", InspectorList); + +export class InspectorListItem extends LitElement { + static get styles() { + return css` + :host { + display: block; + background: WhiteSmoke; + border: 1px solid gray; + border-radius: 10px; + overflow: hidden; + text-wrap: wrap; + padding: 10px; + font-size: 12.5px; + } + + :host(:not(:last-child)) { + margin: 0 0 1em; + } + + #message { + display: block; + font-size: 14px; + font-weight: bold; + } + + #filepath { + font-size: 10px; + } + + #objectType { + font-size: 10px; + } + + :host > * { + margin: 0px; + } + + :host([type="error"]) { + color: #9d0b0b; + background: #f8d7da; + border: 1px solid #f5c2c7; + border-radius: 4px; + } + + :host([type="warning"]) { + color: #856404; + background: #fff3cd; + border: 1px solid #ffeeba; + border-radius: 4px; + } + `; + } + + constructor(props = {}) { + super(); + this.ORIGINAL_TYPE = props.type; + Object.assign(this, props); + } + + static get properties() { + return { + type: { + type: String, + reflect: true, + }, + }; + } + + render() { + this.type = getMessageType({ + ...this, + type: this.ORIGINAL_TYPE, + }); + + const isString = typeof this.message === "string"; + if (isString) this.setAttribute("title", this.message); + + const hasObjectType = "object_type" in this; + const hasMetadata = hasObjectType && "object_name" in this; + + const message = isString ? unsafeHTML(this.message) : this.message; + + return html` + ${hasMetadata ? html`${hasObjectType ? `${this.object_type}` : ""} ` : ""} + ${hasMetadata ? html`${message}` : html`

      ${message}

      `} + ${this.file_path + ? html`${this.files && this.files.length > 1 + ? `${this.files[0]} and ${this.files.length - 1} other files` + : this.file_path}` + : ""} + `; + } +} + +customElements.get("inspector-list-item") || customElements.define("inspector-list-item", InspectorListItem); + +const legendEntries = [ + { type: "error", header: "Error", message: "Must be fixed" }, + { type: "warning", header: "Warning", message: "Can be safely ignored" }, +]; + +export class InspectorLegend extends LitElement { + static get styles() { + return css` + :host { + display: block; + font-size: 80%; + } + + inspector-list-item { + margin: 0; + } + + :host > div { + padding: 5px 10px; + display: flex; + gap: 25px; + align-items: center; + border: 1px solid gray; + border-radius: 0 0 10px 10px; + } + + h4 { + margin: 0; + padding: 5px 10px; + width: 100%; + background: black; + color: white; + border-radius: 10px 10px 0 0; + box-sizing: border-box; + } + `; + } + + constructor(props) { + super(); + Object.assign(this, props); + } + + render() { + return html` +

      Legend

      +
      + ${legendEntries.map(({ type, header, message }) => { + const item = new InspectorListItem({ + type, + message: html`

      ${header}

      + ${message}`, + }); + item.style.width = "max-content"; + return item; + })} +
      +

      + To fix issues specific to a single file, you can edit the file metadata on the previous + page. +

      + ${this.multiple === false + ? "" + : html`

      + To fix issues across many files, you may want to edit the default metadata on the + previous page. +

      `} +
      +
      + `; + } +} + +customElements.get("nwbguide-inspector-legend") || customElements.define("nwbguide-inspector-legend", InspectorLegend); diff --git a/src/electron/renderer/src/stories/preview/inspector/InspectorList.stories.js b/src/electron/renderer/src/stories/preview/inspector/InspectorList.stories.js index bcb331913..370f99b78 100644 --- a/src/electron/renderer/src/stories/preview/inspector/InspectorList.stories.js +++ b/src/electron/renderer/src/stories/preview/inspector/InspectorList.stories.js @@ -1,13 +1,13 @@ -import { InspectorList } from "./InspectorList"; -import testInspectorList from "./test.json"; - -export default { - title: "Components/Inspector List", -}; - -const Template = (args) => new InspectorList(args); - -export const Default = Template.bind({}); -Default.args = { - items: testInspectorList, -}; +import { InspectorList } from "./InspectorList"; +import testInspectorList from "./test.json"; + +export default { + title: "Components/Inspector List", +}; + +const Template = (args) => new InspectorList(args); + +export const Default = Template.bind({}); +Default.args = { + items: testInspectorList, +}; diff --git a/src/electron/renderer/src/stories/sidebar.js b/src/electron/renderer/src/stories/sidebar.js index 8d3cd6303..88a1ff012 100644 --- a/src/electron/renderer/src/stories/sidebar.js +++ b/src/electron/renderer/src/stories/sidebar.js @@ -1,244 +1,244 @@ -import { LitElement, html } from "lit"; -import useGlobalStyles from "./utils/useGlobalStyles.js"; -import { header } from "./forms/utils"; - -const componentCSS = ``; // These are not active until the component is using shadow DOM - -export class Sidebar extends LitElement { - static get styles() { - return useGlobalStyles( - componentCSS, - (sheet) => sheet.href && sheet.href.includes("bootstrap"), - this.shadowRoot - ); - } - - static get properties() { - return { - pages: { type: Object, reflect: false }, - name: { type: String, reflect: true }, - logo: { type: String, reflect: true }, - - renderName: { type: Boolean, reflect: true }, - }; - } - - // Custom Getter / Setter for Subtitle - #subtitle; - set subtitle(v) { - this.#subtitle = v; - this.requestUpdate(); - } - - get subtitle() { - return this.#subtitle; - } - - initialize = true; - - constructor(props = {}) { - super(); - this.pages = props.pages ?? {}; - this.name = props.name ?? ""; - this.logo = props.logo; - this.subtitle = props.subtitle ?? "0.0.1"; - this.renderName = props.renderName ?? true; - } - - // This method turns off shadow DOM to allow for global styles (e.g. bootstrap) - // NOTE: This component checks whether this is active to determine how to handle styles and internal element references - createRenderRoot() { - return this; - } - - attributeChangedCallback(...args) { - const attrs = ["pages", "name", "subtitle", "renderName"]; - super.attributeChangedCallback(...args); - if (attrs.includes(args[0])) this.requestUpdate(); - } - - updated() { - this.nav = (this.shadowRoot ?? this).querySelector("#main-nav"); - - this.subtitleElement = (this.shadowRoot ?? this).querySelector("#subtitle"); - - // Toggle sidebar - const toggle = (this.toggle = (this.shadowRoot ?? this).querySelector("#sidebarCollapse")); - toggle.onclick = () => { - this.nav.classList.toggle("active"); - toggle.classList.toggle("active"); - }; - - // Actually click the item - let selectedItem = this.#selected - ? (this.shadowRoot ?? this).querySelector(`ul[data-id='${this.#selected}']`) - : (this.shadowRoot ?? this).querySelector("ul").querySelector("a"); - if (this.initialize && selectedItem) selectedItem.click(); - else if (this.#selected) this.selectItem(this.#selected); // Visually select the item - - if (this.#hidden) this.hide(true); - } - - show = () => { - this.#hidden = false; - - if (this.nav) { - this.nav.classList.remove("active"); - this.toggle.classList.remove("active"); - this.style.display = ""; - } - }; - - #hidden = false; - - hide = (changeDisplay) => { - this.#hidden = true; - if (this.nav) { - this.nav.classList.add("active"); - this.toggle.classList.add("active"); - if (changeDisplay) this.style.display = "none"; - } - }; - - onClick = () => {}; // Set by the user - - selectItem = (id) => { - this.#selected = id.split("/")[0] || "/"; - const links = (this.shadowRoot ?? this).querySelectorAll("a"); - links.forEach((a) => a.classList.remove("is-selected")); - const a = (this.shadowRoot ?? this).querySelector(`a[data-id="${this.#selected}"]`); - if (a) a.classList.add("is-selected"); - }; - - #onClick = (id) => { - if (!this.pages[id]) throw new Error(`No page found for key ${id}`); - this.selectItem(id); - this.onClick(id, this.pages[id]); - }; - - #selected = ""; - - select = (id) => { - const info = this.pages?.[id]; - if (info) this.#onClick(id, info); - }; - - render() { - const hasName = this.name && this.renderName; - const logoNoName = this.logo && !hasName; - - return html` - - - `; - } -} - -customElements.get("nwb-sidebar") || customElements.define("nwb-sidebar", Sidebar); +import { LitElement, html } from "lit"; +import useGlobalStyles from "./utils/useGlobalStyles.js"; +import { header } from "./forms/utils"; + +const componentCSS = ``; // These are not active until the component is using shadow DOM + +export class Sidebar extends LitElement { + static get styles() { + return useGlobalStyles( + componentCSS, + (sheet) => sheet.href && sheet.href.includes("bootstrap"), + this.shadowRoot + ); + } + + static get properties() { + return { + pages: { type: Object, reflect: false }, + name: { type: String, reflect: true }, + logo: { type: String, reflect: true }, + + renderName: { type: Boolean, reflect: true }, + }; + } + + // Custom Getter / Setter for Subtitle + #subtitle; + set subtitle(v) { + this.#subtitle = v; + this.requestUpdate(); + } + + get subtitle() { + return this.#subtitle; + } + + initialize = true; + + constructor(props = {}) { + super(); + this.pages = props.pages ?? {}; + this.name = props.name ?? ""; + this.logo = props.logo; + this.subtitle = props.subtitle ?? "0.0.1"; + this.renderName = props.renderName ?? true; + } + + // This method turns off shadow DOM to allow for global styles (e.g. bootstrap) + // NOTE: This component checks whether this is active to determine how to handle styles and internal element references + createRenderRoot() { + return this; + } + + attributeChangedCallback(...args) { + const attrs = ["pages", "name", "subtitle", "renderName"]; + super.attributeChangedCallback(...args); + if (attrs.includes(args[0])) this.requestUpdate(); + } + + updated() { + this.nav = (this.shadowRoot ?? this).querySelector("#main-nav"); + + this.subtitleElement = (this.shadowRoot ?? this).querySelector("#subtitle"); + + // Toggle sidebar + const toggle = (this.toggle = (this.shadowRoot ?? this).querySelector("#sidebarCollapse")); + toggle.onclick = () => { + this.nav.classList.toggle("active"); + toggle.classList.toggle("active"); + }; + + // Actually click the item + let selectedItem = this.#selected + ? (this.shadowRoot ?? this).querySelector(`ul[data-id='${this.#selected}']`) + : (this.shadowRoot ?? this).querySelector("ul").querySelector("a"); + if (this.initialize && selectedItem) selectedItem.click(); + else if (this.#selected) this.selectItem(this.#selected); // Visually select the item + + if (this.#hidden) this.hide(true); + } + + show = () => { + this.#hidden = false; + + if (this.nav) { + this.nav.classList.remove("active"); + this.toggle.classList.remove("active"); + this.style.display = ""; + } + }; + + #hidden = false; + + hide = (changeDisplay) => { + this.#hidden = true; + if (this.nav) { + this.nav.classList.add("active"); + this.toggle.classList.add("active"); + if (changeDisplay) this.style.display = "none"; + } + }; + + onClick = () => {}; // Set by the user + + selectItem = (id) => { + this.#selected = id.split("/")[0] || "/"; + const links = (this.shadowRoot ?? this).querySelectorAll("a"); + links.forEach((a) => a.classList.remove("is-selected")); + const a = (this.shadowRoot ?? this).querySelector(`a[data-id="${this.#selected}"]`); + if (a) a.classList.add("is-selected"); + }; + + #onClick = (id) => { + if (!this.pages[id]) throw new Error(`No page found for key ${id}`); + this.selectItem(id); + this.onClick(id, this.pages[id]); + }; + + #selected = ""; + + select = (id) => { + const info = this.pages?.[id]; + if (info) this.#onClick(id, info); + }; + + render() { + const hasName = this.name && this.renderName; + const logoNoName = this.logo && !hasName; + + return html` + + + `; + } +} + +customElements.get("nwb-sidebar") || customElements.define("nwb-sidebar", Sidebar); diff --git a/src/electron/renderer/src/stories/status/StatusBar.stories.js b/src/electron/renderer/src/stories/status/StatusBar.stories.js index 1188ca171..3824016bf 100644 --- a/src/electron/renderer/src/stories/status/StatusBar.stories.js +++ b/src/electron/renderer/src/stories/status/StatusBar.stories.js @@ -1,32 +1,32 @@ -import { StatusBar } from "./StatusBar"; -import { unsafeSVG } from "lit/directives/unsafe-svg.js"; -import pythonSVG from "../assets/python.svg?raw"; -import webAssetSVG from "../assets/web_asset.svg?raw"; -import wifiSVG from "../assets/wifi.svg?raw"; - -export default { - title: "Components/Status Bar", -}; - -const Template = (args) => new StatusBar(args); - -export const Default = Template.bind({}); -Default.args = { - items: [ - { label: unsafeSVG(webAssetSVG), value: "0.0.3" }, - { label: unsafeSVG(wifiSVG) }, - { label: unsafeSVG(pythonSVG), status: true }, - { label: "Other", status: false }, - ], -}; - -// { -// pages: { -// 'Page 1': { -// active: true -// }, -// 'Page 2': { -// active: false -// }, -// } -// } +import { StatusBar } from "./StatusBar"; +import { unsafeSVG } from "lit/directives/unsafe-svg.js"; +import pythonSVG from "../assets/python.svg?raw"; +import webAssetSVG from "../assets/web_asset.svg?raw"; +import wifiSVG from "../assets/wifi.svg?raw"; + +export default { + title: "Components/Status Bar", +}; + +const Template = (args) => new StatusBar(args); + +export const Default = Template.bind({}); +Default.args = { + items: [ + { label: unsafeSVG(webAssetSVG), value: "0.0.3" }, + { label: unsafeSVG(wifiSVG) }, + { label: unsafeSVG(pythonSVG), status: true }, + { label: "Other", status: false }, + ], +}; + +// { +// pages: { +// 'Page 1': { +// active: true +// }, +// 'Page 2': { +// active: false +// }, +// } +// } diff --git a/src/electron/renderer/src/stories/utils/progress.js b/src/electron/renderer/src/stories/utils/progress.js index 057a41ae2..ea0678d12 100644 --- a/src/electron/renderer/src/stories/utils/progress.js +++ b/src/electron/renderer/src/stories/utils/progress.js @@ -1,115 +1,115 @@ -import { openProgressSwal } from "../pages/guided-mode/options/utils.js"; -import { ProgressBar } from "../ProgressBar"; -import { baseUrl } from "../../server/globals"; -import { createRandomString } from "../forms/utils"; - -export const createProgressPopup = async (options, tqdmCallback) => { - const cancelController = new AbortController(); - - if (!("showCancelButton" in options)) { - options.showCancelButton = true; - options.customClass = { actions: "swal-conversion-actions" }; - } - - const popup = await openProgressSwal(options, (result) => { - if (!result.isConfirmed) cancelController.abort(); - }); - - let elements = {}; - popup.hideLoading(); - const element = (elements.container = popup.getHtmlContainer()); - element.innerText = ""; - - Object.assign(element.style, { - marginTop: "5px", - }); - - const container = document.createElement("div"); - Object.assign(container.style, { - textAlign: "left", - display: "flex", - flexDirection: "column", - gap: "5px", - }); - element.append(container); - - const bars = {}; - - const getBar = (id, large = false) => { - if (!bars[id]) { - const bar = new ProgressBar({ size: large ? undefined : "small" }); - bars[id] = bar; - container.append(bar); - } - return bars[id]; - }; - - const globalSymbol = Symbol("global"); - - elements.progress = getBar(globalSymbol, true); - - elements.bars = bars; - - const commonReturnValue = { swal: popup, fetch: { signal: cancelController.signal }, elements, ...options }; - - // Provide a default callback - let lastUpdate; - - const id = createRandomString(); - - const onProgressMessage = ({ data }) => { - const parsed = JSON.parse(data); - const { request_id, ...update } = parsed; - console.warn("parsed", parsed); - - if (request_id && request_id !== id) return; - lastUpdate = Date.now(); - - const _barId = parsed.progress_bar_id; - const barId = id === _barId ? globalSymbol : _barId; - const bar = getBar(barId); - if (!tqdmCallback) bar.format = parsed.format_dict; - else tqdmCallback(update); - }; - - progressHandler.addEventListener("message", onProgressMessage); - - const close = () => { - if (lastUpdate) { - // const timeSinceLastUpdate = now - lastUpdate; - const animationLeft = 1000; // ProgressBar.animationDuration - timeSinceLastUpdate; // Add 100ms to ensure the animation has time to complete - if (animationLeft) setTimeout(() => popup.close(), animationLeft); - else popup.close(); - } else popup.close(); - - progressHandler.removeEventListener("message", onProgressMessage); - }; - - return { ...commonReturnValue, id, close }; -}; - -const eventsURL = new URL("/neuroconv/events", baseUrl).href; - -class ProgressHandler { - constructor(props) { - const { url, callbacks, ...otherProps } = props; - - const source = (this.source = new EventSource(url)); - Object.assign(this, otherProps); - - source.addEventListener("error", this.onerror(), false); - - source.addEventListener("open", () => this.onopen(), false); - - source.addEventListener("message", (event) => this.onmessage(event), false); - } - - onopen = () => {}; - onmessage = () => {}; - onerror = () => {}; - - addEventListener = (...args) => this.source.addEventListener(...args); - removeEventListener = (...args) => this.source.removeEventListener(...args); -} - -export const progressHandler = new ProgressHandler({ url: eventsURL }); +import { openProgressSwal } from "../pages/guided-mode/options/utils.js"; +import { ProgressBar } from "../ProgressBar"; +import { baseUrl } from "../../server/globals"; +import { createRandomString } from "../forms/utils"; + +export const createProgressPopup = async (options, tqdmCallback) => { + const cancelController = new AbortController(); + + if (!("showCancelButton" in options)) { + options.showCancelButton = true; + options.customClass = { actions: "swal-conversion-actions" }; + } + + const popup = await openProgressSwal(options, (result) => { + if (!result.isConfirmed) cancelController.abort(); + }); + + let elements = {}; + popup.hideLoading(); + const element = (elements.container = popup.getHtmlContainer()); + element.innerText = ""; + + Object.assign(element.style, { + marginTop: "5px", + }); + + const container = document.createElement("div"); + Object.assign(container.style, { + textAlign: "left", + display: "flex", + flexDirection: "column", + gap: "5px", + }); + element.append(container); + + const bars = {}; + + const getBar = (id, large = false) => { + if (!bars[id]) { + const bar = new ProgressBar({ size: large ? undefined : "small" }); + bars[id] = bar; + container.append(bar); + } + return bars[id]; + }; + + const globalSymbol = Symbol("global"); + + elements.progress = getBar(globalSymbol, true); + + elements.bars = bars; + + const commonReturnValue = { swal: popup, fetch: { signal: cancelController.signal }, elements, ...options }; + + // Provide a default callback + let lastUpdate; + + const id = createRandomString(); + + const onProgressMessage = ({ data }) => { + const parsed = JSON.parse(data); + const { request_id, ...update } = parsed; + console.warn("parsed", parsed); + + if (request_id && request_id !== id) return; + lastUpdate = Date.now(); + + const _barId = parsed.progress_bar_id; + const barId = id === _barId ? globalSymbol : _barId; + const bar = getBar(barId); + if (!tqdmCallback) bar.format = parsed.format_dict; + else tqdmCallback(update); + }; + + progressHandler.addEventListener("message", onProgressMessage); + + const close = () => { + if (lastUpdate) { + // const timeSinceLastUpdate = now - lastUpdate; + const animationLeft = 1000; // ProgressBar.animationDuration - timeSinceLastUpdate; // Add 100ms to ensure the animation has time to complete + if (animationLeft) setTimeout(() => popup.close(), animationLeft); + else popup.close(); + } else popup.close(); + + progressHandler.removeEventListener("message", onProgressMessage); + }; + + return { ...commonReturnValue, id, close }; +}; + +const eventsURL = new URL("/neuroconv/events", baseUrl).href; + +class ProgressHandler { + constructor(props) { + const { url, callbacks, ...otherProps } = props; + + const source = (this.source = new EventSource(url)); + Object.assign(this, otherProps); + + source.addEventListener("error", this.onerror(), false); + + source.addEventListener("open", () => this.onopen(), false); + + source.addEventListener("message", (event) => this.onmessage(event), false); + } + + onopen = () => {}; + onmessage = () => {}; + onerror = () => {}; + + addEventListener = (...args) => this.source.addEventListener(...args); + removeEventListener = (...args) => this.source.removeEventListener(...args); +} + +export const progressHandler = new ProgressHandler({ url: eventsURL }); diff --git a/src/electron/renderer/src/stories/utils/useGlobalStyles.js b/src/electron/renderer/src/stories/utils/useGlobalStyles.js index b4fe2237e..addc13601 100644 --- a/src/electron/renderer/src/stories/utils/useGlobalStyles.js +++ b/src/electron/renderer/src/stories/utils/useGlobalStyles.js @@ -1,16 +1,16 @@ -import { css } from "lit"; - -const useGlobalStyles = (componentCSS, condition, toApply = true) => { - if (!toApply || !condition) return css([componentCSS]); - - const sheets = Object.values(document.styleSheets); - const selectedSheets = condition instanceof Function ? sheets.filter(condition) : sheets; - const rules = selectedSheets.map((sheet) => - Object.values(sheet.cssRules) - .map((rule) => rule.cssText) - .join("\n") - ); - return css([componentCSS, ...rules]); -}; - -export default useGlobalStyles; +import { css } from "lit"; + +const useGlobalStyles = (componentCSS, condition, toApply = true) => { + if (!toApply || !condition) return css([componentCSS]); + + const sheets = Object.values(document.styleSheets); + const selectedSheets = condition instanceof Function ? sheets.filter(condition) : sheets; + const rules = selectedSheets.map((sheet) => + Object.values(sheet.cssRules) + .map((rule) => rule.cssText) + .join("\n") + ); + return css([componentCSS, ...rules]); +}; + +export default useGlobalStyles; diff --git a/src/electron/renderer/src/validation/index.js b/src/electron/renderer/src/validation/index.js index e0d819e18..d21e1bb24 100644 --- a/src/electron/renderer/src/validation/index.js +++ b/src/electron/renderer/src/validation/index.js @@ -1,121 +1,121 @@ -import { resolveAll } from "../promises"; -import { baseUrl } from "../server/globals"; -import validationSchema from "./validation"; - -// NOTE: Only validation missing on NWBFile Metadata is check_subject_exists and check_processing_module_name - -export const isErrorImportance = ["PYNWB_VALIDATION", "CRITICAL", "ERROR"]; -export function getMessageType(item) { - return item.type ?? (isErrorImportance.includes(item.importance) ? "error" : "warning"); -} - -export async function validateOnChange(name, parent, path, value) { - let functions = []; - - const fullPath = [...path, name]; - const toIterate = fullPath; //fullPathNoRows // fullPath - - const copy = { ...parent }; // Validate on a copy of the parent - if (arguments.length > 3) copy[name] = value; // Update value on copy - - let lastResolved; - functions = toIterate.reduce((acc, key, i) => { - if (acc && key in acc) return (lastResolved = acc[key]); - else return; - }, validationSchema); // Pass the top level until it runs out - - // Skip wildcard check for categories marked with false - if (lastResolved !== false && (functions === undefined || functions === true)) { - const getNestedMatches = (result, searchPath, toAlwaysCheck = []) => { - const matches = []; - const isUndefined = result === undefined; - if (Array.isArray(result)) matches.push(...result); - else if (result && typeof result === "object") - matches.push(...getMatches(result, searchPath, toAlwaysCheck)); - else if (!isUndefined) matches.push(result); - if (searchPath.length) - toAlwaysCheck.forEach((obj) => matches.push(...getMatches(obj, searchPath, toAlwaysCheck))); - return matches; - }; - - const getMatches = (obj = {}, searchPath, toAlwaysCheck = []) => { - const updatedAlwaysCheck = [...toAlwaysCheck]; - const updateSearchPath = [...searchPath]; - const nextToken = updateSearchPath.shift(); - const matches = []; - if (obj["*"]) matches.push(...getNestedMatches(obj["*"], updateSearchPath, updatedAlwaysCheck)); - if (obj["**"]) updatedAlwaysCheck.push(obj["**"]); - matches.push(...getNestedMatches(obj[nextToken], updateSearchPath, updatedAlwaysCheck)); // Always search to the end of the search path - return matches; - }; - - const matches = getMatches(validationSchema, toIterate); - const overridden = matches.some((match) => match === false); - functions = overridden && functions !== true ? false : matches; // Disable if not promised to exist—or use matches - } - - if (!functions || (Array.isArray(functions) && functions.length === 0)) return; // No validation for this field - if (!Array.isArray(functions)) functions = [functions]; - - // Validate multiple conditions. May be able to offload this to a single server-side call - const results = functions.map((func) => { - if (typeof func === "function") { - return func.call(this, name, copy, path, value); // Can specify alternative client-side validation - } else { - const resolvedFunctionName = func.replace(`{*}`, `${name}`); - return fetch(`${baseUrl}/neuroconv/validate`, { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - parent: copy, - function_name: resolvedFunctionName, - }), - }) - .then((res) => res.json()) - .catch(() => {}); // Let failed fetch succeed - } - }); - - const res = resolveAll(results, (arr) => { - arr = arr.map((v, i) => { - const func = functions[i]; - if (typeof func === "function") return v; - else return v === null ? undefined : v; - }); - - const flat = arr.flat(); - if (flat.find((res) => res?.message)) { - return flat - .filter((res) => res?.message) - .map((messageInfo) => { - return { - message: messageInfo.message, - type: getMessageType(messageInfo), - missing: messageInfo.missing ?? messageInfo.message.includes("is missing"), // Indicates that the field is missing - }; - }); // Some of the requests end in errors - } - - if (flat.some((res) => res === null)) return null; - - // Allow for providing one function to execute after data update - const hasFunc = results.find((f) => typeof f === "function"); - if (hasFunc) return hasFunc; - - return true; - }); - - return res; -} - -export function checkStatus(warnings, errors, items = []) { - let newStatus = "valid"; - const nestedStatus = items.map((f) => f.status); - if (nestedStatus.includes("error")) newStatus = "error"; - else if (errors) newStatus = "error"; - else if (nestedStatus.includes("warning")) newStatus = "warning"; - else if (warnings) newStatus = "warning"; - if (this && this.onStatusChange && "status" in this && newStatus !== this.status) - this.onStatusChange((this.status = newStatus)); // Automatically run callbacks if supported by the context - return newStatus; -} +import { resolveAll } from "../promises"; +import { baseUrl } from "../server/globals"; +import validationSchema from "./validation"; + +// NOTE: Only validation missing on NWBFile Metadata is check_subject_exists and check_processing_module_name + +export const isErrorImportance = ["PYNWB_VALIDATION", "CRITICAL", "ERROR"]; +export function getMessageType(item) { + return item.type ?? (isErrorImportance.includes(item.importance) ? "error" : "warning"); +} + +export async function validateOnChange(name, parent, path, value) { + let functions = []; + + const fullPath = [...path, name]; + const toIterate = fullPath; //fullPathNoRows // fullPath + + const copy = { ...parent }; // Validate on a copy of the parent + if (arguments.length > 3) copy[name] = value; // Update value on copy + + let lastResolved; + functions = toIterate.reduce((acc, key, i) => { + if (acc && key in acc) return (lastResolved = acc[key]); + else return; + }, validationSchema); // Pass the top level until it runs out + + // Skip wildcard check for categories marked with false + if (lastResolved !== false && (functions === undefined || functions === true)) { + const getNestedMatches = (result, searchPath, toAlwaysCheck = []) => { + const matches = []; + const isUndefined = result === undefined; + if (Array.isArray(result)) matches.push(...result); + else if (result && typeof result === "object") + matches.push(...getMatches(result, searchPath, toAlwaysCheck)); + else if (!isUndefined) matches.push(result); + if (searchPath.length) + toAlwaysCheck.forEach((obj) => matches.push(...getMatches(obj, searchPath, toAlwaysCheck))); + return matches; + }; + + const getMatches = (obj = {}, searchPath, toAlwaysCheck = []) => { + const updatedAlwaysCheck = [...toAlwaysCheck]; + const updateSearchPath = [...searchPath]; + const nextToken = updateSearchPath.shift(); + const matches = []; + if (obj["*"]) matches.push(...getNestedMatches(obj["*"], updateSearchPath, updatedAlwaysCheck)); + if (obj["**"]) updatedAlwaysCheck.push(obj["**"]); + matches.push(...getNestedMatches(obj[nextToken], updateSearchPath, updatedAlwaysCheck)); // Always search to the end of the search path + return matches; + }; + + const matches = getMatches(validationSchema, toIterate); + const overridden = matches.some((match) => match === false); + functions = overridden && functions !== true ? false : matches; // Disable if not promised to exist—or use matches + } + + if (!functions || (Array.isArray(functions) && functions.length === 0)) return; // No validation for this field + if (!Array.isArray(functions)) functions = [functions]; + + // Validate multiple conditions. May be able to offload this to a single server-side call + const results = functions.map((func) => { + if (typeof func === "function") { + return func.call(this, name, copy, path, value); // Can specify alternative client-side validation + } else { + const resolvedFunctionName = func.replace(`{*}`, `${name}`); + return fetch(`${baseUrl}/neuroconv/validate`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + parent: copy, + function_name: resolvedFunctionName, + }), + }) + .then((res) => res.json()) + .catch(() => {}); // Let failed fetch succeed + } + }); + + const res = resolveAll(results, (arr) => { + arr = arr.map((v, i) => { + const func = functions[i]; + if (typeof func === "function") return v; + else return v === null ? undefined : v; + }); + + const flat = arr.flat(); + if (flat.find((res) => res?.message)) { + return flat + .filter((res) => res?.message) + .map((messageInfo) => { + return { + message: messageInfo.message, + type: getMessageType(messageInfo), + missing: messageInfo.missing ?? messageInfo.message.includes("is missing"), // Indicates that the field is missing + }; + }); // Some of the requests end in errors + } + + if (flat.some((res) => res === null)) return null; + + // Allow for providing one function to execute after data update + const hasFunc = results.find((f) => typeof f === "function"); + if (hasFunc) return hasFunc; + + return true; + }); + + return res; +} + +export function checkStatus(warnings, errors, items = []) { + let newStatus = "valid"; + const nestedStatus = items.map((f) => f.status); + if (nestedStatus.includes("error")) newStatus = "error"; + else if (errors) newStatus = "error"; + else if (nestedStatus.includes("warning")) newStatus = "warning"; + else if (warnings) newStatus = "warning"; + if (this && this.onStatusChange && "status" in this && newStatus !== this.status) + this.onStatusChange((this.status = newStatus)); // Automatically run callbacks if supported by the context + return newStatus; +} diff --git a/src/electron/renderer/utils/url.js b/src/electron/renderer/utils/url.js index 502e427f9..15423f61c 100644 --- a/src/electron/renderer/utils/url.js +++ b/src/electron/renderer/utils/url.js @@ -1,13 +1,13 @@ -export function updateURLParams(paramsToUpdate) { - const params = new URLSearchParams(location.search); - for (let key in paramsToUpdate) { - const value = paramsToUpdate[key]; - if (value == undefined) params.delete(key); - else params.set(key, value); - } - - // Update browser history state - const value = `${location.pathname}?${params}`; - if (history.state) Object.assign(history.state, paramsToUpdate); - window.history.pushState(history.state, null, value); -} +export function updateURLParams(paramsToUpdate) { + const params = new URLSearchParams(location.search); + for (let key in paramsToUpdate) { + const value = paramsToUpdate[key]; + if (value == undefined) params.delete(key); + else params.set(key, value); + } + + // Update browser history state + const value = `${location.pathname}?${params}`; + if (history.state) Object.assign(history.state, paramsToUpdate); + window.history.pushState(history.state, null, value); +} diff --git a/tests/testPyinstallerExecutable.js b/tests/testPyinstallerExecutable.js index b1c9c5ace..ea0703f1b 100644 --- a/tests/testPyinstallerExecutable.js +++ b/tests/testPyinstallerExecutable.js @@ -1,58 +1,58 @@ -const path = require("path"); -const child_process = require("child_process"); -const fs = require("fs"); - -const cmds = { - port: 1234, - script: path.resolve(__dirname, `../build/flask/nwb-guide/nwb-guide${process.platform === "win32" ? ".exe" : ""}`), -}; - -process.argv.forEach((v, i) => { - if (v === "--script") cmds.script = process.argv[i + 1]; - if (v === "--port") cmds.port = parseInt(process.argv[i + 1]); - if (v === "--forever") cmds.forever = true; -}); - -console.log("Found file", fs.existsSync(cmds.script)); - -const proc2 = child_process.spawn(`${cmds.script}`, [cmds.port]); -handleProcess(proc2, "spawn"); - -let now = Date.now(); - -const regex = /.+Error: .+/i; // Check for error messages (without case sensitivity) - -function onMessage(data, id) { - const message = data.toString(); - if (!cmds.forever && regex.test(message)) throw new Error(message); - else console.error(`[${id}] ${message}`); -} - -function handleProcess(proc, id = "process") { - if (proc != null) { - // Listen for errors from Python process - proc.stderr.on("data", (data) => onMessage(data, id)); - - proc.stdout.on("data", function (data) { - if (cmds.forever) onMessage(data, id); - else { - console.log(`Time to Start: ${(Date.now() - now).toFixed(2)}ms`); - process.exit(); - } - }); - - const errorFn = () => () => { - throw new Error("The distributable pyflask failed to run!"); - }; - - proc.on("error", (error) => { - console.error(`[${id}] Error: ${error.message}`); - errorFn(); - }); - - proc.on("close", (code) => { - console.error(`[${id}] Exit: ${code}`); - errorFn(); - }); - } else console.error("child process failed to start on port" + port); -} +const path = require("path"); +const child_process = require("child_process"); +const fs = require("fs"); + +const cmds = { + port: 1234, + script: path.resolve(__dirname, `../build/flask/nwb-guide/nwb-guide${process.platform === "win32" ? ".exe" : ""}`), +}; + +process.argv.forEach((v, i) => { + if (v === "--script") cmds.script = process.argv[i + 1]; + if (v === "--port") cmds.port = parseInt(process.argv[i + 1]); + if (v === "--forever") cmds.forever = true; +}); + +console.log("Found file", fs.existsSync(cmds.script)); + +const proc2 = child_process.spawn(`${cmds.script}`, [cmds.port]); +handleProcess(proc2, "spawn"); + +let now = Date.now(); + +const regex = /.+Error: .+/i; // Check for error messages (without case sensitivity) + +function onMessage(data, id) { + const message = data.toString(); + if (!cmds.forever && regex.test(message)) throw new Error(message); + else console.error(`[${id}] ${message}`); +} + +function handleProcess(proc, id = "process") { + if (proc != null) { + // Listen for errors from Python process + proc.stderr.on("data", (data) => onMessage(data, id)); + + proc.stdout.on("data", function (data) { + if (cmds.forever) onMessage(data, id); + else { + console.log(`Time to Start: ${(Date.now() - now).toFixed(2)}ms`); + process.exit(); + } + }); + + const errorFn = () => () => { + throw new Error("The distributable pyflask failed to run!"); + }; + + proc.on("error", (error) => { + console.error(`[${id}] Error: ${error.message}`); + errorFn(); + }); + + proc.on("close", (code) => { + console.error(`[${id}] Exit: ${code}`); + errorFn(); + }); + } else console.error("child process failed to start on port" + port); +} diff --git a/vite.config.js b/vite.config.js index 3eb4ad5f9..49241f41b 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,12 +1,12 @@ -/// -import { defineConfig } from "vite"; -import ViteYaml from "@modyfi/vite-plugin-yaml"; - -export default defineConfig({ - plugins: [ViteYaml()], - test: { - environment: "jsdom", - setupFiles: ["dotenv/config"], - testTimeout: 4 * 60 * 1000, - }, -}); +/// +import { defineConfig } from "vite"; +import ViteYaml from "@modyfi/vite-plugin-yaml"; + +export default defineConfig({ + plugins: [ViteYaml()], + test: { + environment: "jsdom", + setupFiles: ["dotenv/config"], + testTimeout: 4 * 60 * 1000, + }, +}); From 7e054684171d00cbd723dfcd8973a314709f1e22 Mon Sep 17 00:00:00 2001 From: Cody Baker Date: Mon, 27 May 2024 14:44:00 -0400 Subject: [PATCH 05/17] remove unused stuff from other PR --- src/pyflask/apis/dandi.py | 4 ---- src/pyflask/apis/neurosift.py | 10 ---------- src/pyflask/apis/system.py | 4 ---- 3 files changed, 18 deletions(-) diff --git a/src/pyflask/apis/dandi.py b/src/pyflask/apis/dandi.py index 003852c3a..bdc01208d 100644 --- a/src/pyflask/apis/dandi.py +++ b/src/pyflask/apis/dandi.py @@ -4,8 +4,6 @@ import flask_restx -from .utils import catch_exception_and_abort, server_error_responses - dandi_api = flask_restx.Namespace( name="dandi", description="Request various static listings from the DANDI Python API." ) @@ -17,9 +15,7 @@ class SupportedSpecies(flask_restx.Resource): @dandi_api.doc( description="Request the list of currently supported species (by Latin Binomial name) for DANDI. Note that any " "explicit NCBI taxonomy link is also supported.", - responses=server_error_responses(codes=[200, 500]), ) - @catch_exception_and_abort(api=dandi_api, code=500) def get(self) -> Union[List[Tuple[List[str], str, str, str]], None]: from dandi.metadata.util import species_map diff --git a/src/pyflask/apis/neurosift.py b/src/pyflask/apis/neurosift.py index e43f89746..e4260ec85 100644 --- a/src/pyflask/apis/neurosift.py +++ b/src/pyflask/apis/neurosift.py @@ -6,12 +6,6 @@ import flask import flask_restx -from .utils import ( - abort_if_not_nwb_file, - catch_exception_and_abort, - server_error_responses, -) - neurosift_api = flask_restx.Namespace( name="neurosift", description="Handle file system communication with the " "standalone Neurosift preview page." ) @@ -30,9 +24,7 @@ class NeurosiftFileManager(flask_restx.Resource): @neurosift_api.doc( description="If the file path has been added to the registry (and therefore sent its base " "URL), return the absolute file path. This is implicitly called by Neurosift.", - responses=server_error_responses(codes=[200, 400, 500]), ) - @catch_exception_and_abort(api=neurosift_api, code=500) def get(self, file_path: str) -> Union[flask.Response, None]: abort_if_not_nwb_file(file_path=file_path, api=neurosift_api) if neurosift_file_registry[file_path]: @@ -57,9 +49,7 @@ def get(self, file_path: str) -> Union[flask.Response, None]: description="Add the file to a global in-memory registry (refreshes on App restart) and return " "the base URL of the newly " "added file", - responses=server_error_responses(codes=[200, 400, 500]), ) - @catch_exception_and_abort(api=neurosift_api, code=500) def post(self, file_path: str) -> Union[str, None]: abort_if_not_nwb_file(file_path=file_path, api=neurosift_api) diff --git a/src/pyflask/apis/system.py b/src/pyflask/apis/system.py index d384362d9..fd19bf811 100644 --- a/src/pyflask/apis/system.py +++ b/src/pyflask/apis/system.py @@ -4,8 +4,6 @@ import flask_restx -from .utils import catch_exception_and_abort, server_error_responses - system_api = flask_restx.Namespace(name="system", description="Request various system specific information.") @@ -14,9 +12,7 @@ class SupportedSpecies(flask_restx.Resource): @system_api.doc( description="Request the number of physical and logical cores on the system.", - responses=server_error_responses(codes=[200, 500]), ) - @catch_exception_and_abort(api=system_api, code=500) def get(self) -> Union[Dict[str, int], None]: from psutil import cpu_count From c9d29688baae05f82ed1875755d2f1f2dfcecf65 Mon Sep 17 00:00:00 2001 From: Cody Baker Date: Mon, 27 May 2024 14:55:55 -0400 Subject: [PATCH 06/17] swap naming to 'namespace' --- src/pyflask/apis/__init__.py | 6 - src/pyflask/app.py | 30 ++-- src/pyflask/namespaces/__init__.py | 6 + src/pyflask/{apis => namespaces}/dandi.py | 6 +- src/pyflask/{apis => namespaces}/data.py | 20 +-- src/pyflask/{apis => namespaces}/neuroconv.py | 144 +++++++++--------- src/pyflask/{apis => namespaces}/neurosift.py | 14 +- src/pyflask/{apis => namespaces}/startup.py | 14 +- src/pyflask/{apis => namespaces}/system.py | 6 +- 9 files changed, 122 insertions(+), 124 deletions(-) delete mode 100644 src/pyflask/apis/__init__.py create mode 100644 src/pyflask/namespaces/__init__.py rename src/pyflask/{apis => namespaces}/dandi.py (82%) rename src/pyflask/{apis => namespaces}/data.py (67%) rename src/pyflask/{apis => namespaces}/neuroconv.py (52%) rename src/pyflask/{apis => namespaces}/neurosift.py (90%) rename src/pyflask/{apis => namespaces}/startup.py (68%) rename src/pyflask/{apis => namespaces}/system.py (72%) diff --git a/src/pyflask/apis/__init__.py b/src/pyflask/apis/__init__.py deleted file mode 100644 index 714e08c4b..000000000 --- a/src/pyflask/apis/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -from .dandi import dandi_api -from .data import data_api -from .neuroconv import neuroconv_api -from .neurosift import neurosift_api -from .startup import startup_api -from .system import system_api diff --git a/src/pyflask/app.py b/src/pyflask/app.py index d0a655ff8..ab13f8dc5 100644 --- a/src/pyflask/app.py +++ b/src/pyflask/app.py @@ -16,14 +16,6 @@ multiprocessing.freeze_support() -from apis import ( - dandi_api, - data_api, - neuroconv_api, - neurosift_api, - startup_api, - system_api, -) from flask import Flask, request, send_file, send_from_directory from flask_cors import CORS from flask_restx import Api, Resource @@ -34,6 +26,14 @@ is_packaged, resource_path, ) +from namespaces import ( + dandi_namespace, + data_namespace, + neuroconv_namespace, + neurosift_namespace, + startup_namespace, + system_namespace, +) app = Flask(__name__) @@ -57,16 +57,14 @@ title="NWB GUIDE API", description="The REST API for the NWB GUIDE provided by the Python Flask Server.", ) -api.add_namespace(startup_api) -api.add_namespace(neuroconv_api) -api.add_namespace(data_api) -api.add_namespace(system_api) -api.add_namespace(dandi_api) -api.add_namespace(neurosift_api) +api.add_namespace(startup_namespace) +api.add_namespace(neuroconv_namespace) +api.add_namespace(data_namespace) +api.add_namespace(system_namespace) +api.add_namespace(dandi_namespace) +api.add_namespace(neurosift_namespace) api.init_app(app) -registered = {} - @api.route("/log") class Log(Resource): diff --git a/src/pyflask/namespaces/__init__.py b/src/pyflask/namespaces/__init__.py new file mode 100644 index 000000000..0f1edb274 --- /dev/null +++ b/src/pyflask/namespaces/__init__.py @@ -0,0 +1,6 @@ +from .dandi import dandi_namespace +from .data import data_namespace +from .neuroconv import neuroconv_namespace +from .neurosift import neurosift_namespace +from .startup import startup_namespace +from .system import system_namespace diff --git a/src/pyflask/apis/dandi.py b/src/pyflask/namespaces/dandi.py similarity index 82% rename from src/pyflask/apis/dandi.py rename to src/pyflask/namespaces/dandi.py index bdc01208d..11e070c35 100644 --- a/src/pyflask/apis/dandi.py +++ b/src/pyflask/namespaces/dandi.py @@ -4,15 +4,15 @@ import flask_restx -dandi_api = flask_restx.Namespace( +dandi_namespace = flask_restx.Namespace( name="dandi", description="Request various static listings from the DANDI Python API." ) -@dandi_api.route(rule="/get-recommended-species") +@dandi_namespace.route(rule="/get-recommended-species") class SupportedSpecies(flask_restx.Resource): - @dandi_api.doc( + @dandi_namespace.doc( description="Request the list of currently supported species (by Latin Binomial name) for DANDI. Note that any " "explicit NCBI taxonomy link is also supported.", ) diff --git a/src/pyflask/apis/data.py b/src/pyflask/namespaces/data.py similarity index 67% rename from src/pyflask/apis/data.py rename to src/pyflask/namespaces/data.py index 7cdafdb57..8b05339e9 100644 --- a/src/pyflask/apis/data.py +++ b/src/pyflask/namespaces/data.py @@ -5,10 +5,10 @@ from flask_restx import Namespace, Resource, reqparse from manageNeuroconv import generate_dataset, generate_test_data -data_api = Namespace("data", description="API route for dataset generation in the NWB GUIDE.") +data_namespace = Namespace("data", description="API route for dataset generation in the NWB GUIDE.") -@data_api.errorhandler(Exception) +@data_namespace.errorhandler(Exception) def exception_handler(error): exceptiondata = traceback.format_exception(type(error), error, error.__traceback__) return {"message": exceptiondata[-1], "traceback": "".join(exceptiondata)} @@ -18,16 +18,16 @@ def exception_handler(error): generate_test_data_parser.add_argument("output_path", type=str, required=True) -@data_api.route("/generate") -@data_api.expect(generate_test_data_parser) +@data_namespace.route("/generate") +@data_namespace.expect(generate_test_data_parser) class GeneratetestData(Resource): - @data_api.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) + @data_namespace.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) def post(self): try: arguments = generate_test_data_parser.parse_args() generate_test_data(output_path=arguments["output_path"]) except Exception as exception: - data_api.abort(500, str(exception)) + data_namespace.abort(500, str(exception)) raise exception @@ -36,14 +36,14 @@ def post(self): generate_test_dataset_parser.add_argument("input_path", type=str, required=True) -@data_api.route("/generate/dataset") -@data_api.expect(generate_test_data_parser) +@data_namespace.route("/generate/dataset") +@data_namespace.expect(generate_test_data_parser) class GenerateDataset(Resource): - @data_api.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) + @data_namespace.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) def post(self): try: arguments = generate_test_dataset_parser.parse_args() return generate_dataset(input_path=arguments["input_path"], output_path=arguments["output_path"]) except Exception as exception: - data_api.abort(500, str(exception)) + data_namespace.abort(500, str(exception)) diff --git a/src/pyflask/apis/neuroconv.py b/src/pyflask/namespaces/neuroconv.py similarity index 52% rename from src/pyflask/apis/neuroconv.py rename to src/pyflask/namespaces/neuroconv.py index 47a2af031..79d4473bd 100644 --- a/src/pyflask/apis/neuroconv.py +++ b/src/pyflask/namespaces/neuroconv.py @@ -24,21 +24,21 @@ ) from manageNeuroconv.info import announcer -neuroconv_api = Namespace("neuroconv", description="Neuroconv neuroconv_api for the NWB GUIDE.") +neuroconv_namespace = Namespace("neuroconv", description="Neuroconv neuroconv_namespace for the NWB GUIDE.") parser = reqparse.RequestParser() parser.add_argument("interfaces", type=str, action="split", help="Interfaces cannot be converted") -@neuroconv_api.errorhandler(Exception) +@neuroconv_namespace.errorhandler(Exception) def exception_handler(error): exceptiondata = traceback.format_exception(type(error), error, error.__traceback__) return {"message": exceptiondata[-1], "traceback": "".join(exceptiondata)} -@neuroconv_api.route("/") +@neuroconv_namespace.route("/") class AllInterfaces(Resource): - @neuroconv_api.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) + @neuroconv_namespace.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) def get(self): try: # return get_all_interface_info() @@ -49,75 +49,75 @@ def get(self): **get_all_converter_info(), } except Exception as exception: - neuroconv_api.abort(500, str(exception)) + neuroconv_namespace.abort(500, str(exception)) raise exception -@neuroconv_api.route("/schema") +@neuroconv_namespace.route("/schema") class Schemas(Resource): - @neuroconv_api.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) + @neuroconv_namespace.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) def post(self): try: - return get_source_schema(neuroconv_api.payload) + return get_source_schema(neuroconv_namespace.payload) except Exception as exception: - neuroconv_api.abort(500, str(exception)) + neuroconv_namespace.abort(500, str(exception)) -@neuroconv_api.route("/locate") +@neuroconv_namespace.route("/locate") class LocateData(Resource): - @neuroconv_api.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) + @neuroconv_namespace.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) def post(self): try: - return locate_data(neuroconv_api.payload) + return locate_data(neuroconv_namespace.payload) except Exception as exception: - neuroconv_api.abort(500, str(exception)) + neuroconv_namespace.abort(500, str(exception)) -@neuroconv_api.route("/locate/autocomplete") +@neuroconv_namespace.route("/locate/autocomplete") class AutoCompleteFormatString(Resource): - @neuroconv_api.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) + @neuroconv_namespace.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) def post(self): try: - return autocomplete_format_string(neuroconv_api.payload) + return autocomplete_format_string(neuroconv_namespace.payload) except Exception as exception: - neuroconv_api.abort(500, str(exception)) + neuroconv_namespace.abort(500, str(exception)) -@neuroconv_api.route("/metadata") +@neuroconv_namespace.route("/metadata") class Metadata(Resource): - @neuroconv_api.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) + @neuroconv_namespace.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) def post(self): try: return get_metadata_schema( - neuroconv_api.payload.get("source_data"), neuroconv_api.payload.get("interfaces") + neuroconv_namespace.payload.get("source_data"), neuroconv_namespace.payload.get("interfaces") ) except Exception as exception: - neuroconv_api.abort(500, str(exception)) + neuroconv_namespace.abort(500, str(exception)) -@neuroconv_api.route("/convert") +@neuroconv_namespace.route("/convert") class Convert(Resource): - @neuroconv_api.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) + @neuroconv_namespace.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) def post(self): try: - return convert_to_nwb(neuroconv_api.payload) + return convert_to_nwb(neuroconv_namespace.payload) except Exception as exception: - neuroconv_api.abort(500, str(exception)) + neuroconv_namespace.abort(500, str(exception)) -@neuroconv_api.route("/alignment") +@neuroconv_namespace.route("/alignment") class Alignment(Resource): - @neuroconv_api.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) + @neuroconv_namespace.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) def post(self): try: - return get_interface_alignment(neuroconv_api.payload) + return get_interface_alignment(neuroconv_namespace.payload) except Exception as exception: - neuroconv_api.abort(500, str(exception)) + neuroconv_namespace.abort(500, str(exception)) -validate_parser = neuroconv_api.parser() +validate_parser = neuroconv_namespace.parser() validate_parser.add_argument("parent", type=dict, required=True) validate_parser.add_argument("function_name", type=str, required=True) @@ -125,27 +125,27 @@ def post(self): # await fetch('neuroconv/validate', {method:"POST", body: JSON.stringify({nwb_file_object: {related_publications: ['name']}, function: 'check_doi_publications'}), headers: { # "Content-Type": "application/json", # }}).then(res => res.text()) -@neuroconv_api.route("/validate") -@neuroconv_api.expect(validate_parser) +@neuroconv_namespace.route("/validate") +@neuroconv_namespace.expect(validate_parser) class Validate(Resource): - @neuroconv_api.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) + @neuroconv_namespace.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) def post(self): try: args = validate_parser.parse_args() return validate_metadata(args.get("parent"), args.get("function_name")) except Exception as exception: - neuroconv_api.abort(500, str(exception)) + neuroconv_namespace.abort(500, str(exception)) -@neuroconv_api.route("/upload/project") +@neuroconv_namespace.route("/upload/project") class UploadProject(Resource): - @neuroconv_api.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) + @neuroconv_namespace.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) def post(self): try: import psutil - upload_options = neuroconv_api.payload + upload_options = neuroconv_namespace.payload if "number_of_jobs" not in upload_options: upload_options.update(number_of_jobs=1) if "number_of_threads" not in upload_options: @@ -154,17 +154,17 @@ def post(self): return upload_project_to_dandi(**upload_options) except Exception as exception: - neuroconv_api.abort(500, str(exception)) + neuroconv_namespace.abort(500, str(exception)) -@neuroconv_api.route("/upload/folder") +@neuroconv_namespace.route("/upload/folder") class UploadFolder(Resource): - @neuroconv_api.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) + @neuroconv_namespace.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) def post(self): try: import psutil - upload_options = neuroconv_api.payload + upload_options = neuroconv_namespace.payload if "number_of_jobs" not in upload_options: upload_options.update(number_of_jobs=1) if "number_of_threads" not in upload_options: @@ -173,77 +173,77 @@ def post(self): return upload_folder_to_dandi(**upload_options) except Exception as exception: - neuroconv_api.abort(500, str(exception)) + neuroconv_namespace.abort(500, str(exception)) -@neuroconv_api.route("/upload") +@neuroconv_namespace.route("/upload") class Upload(Resource): - @neuroconv_api.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) + @neuroconv_namespace.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) def post(self): from os.path import isdir try: - paths = neuroconv_api.payload["filesystem_paths"] + paths = neuroconv_namespace.payload["filesystem_paths"] if len(paths) == 1 and isdir(paths[0]): - kwargs = {**neuroconv_api.payload} + kwargs = {**neuroconv_namespace.payload} del kwargs["filesystem_paths"] kwargs["nwb_folder_path"] = paths[0] return upload_folder_to_dandi(**kwargs) else: - return upload_multiple_filesystem_objects_to_dandi(**neuroconv_api.payload) + return upload_multiple_filesystem_objects_to_dandi(**neuroconv_namespace.payload) except Exception as exception: - neuroconv_api.abort(500, str(exception)) + neuroconv_namespace.abort(500, str(exception)) -@neuroconv_api.route("/inspect_file") +@neuroconv_namespace.route("/inspect_file") class InspectNWBFile(Resource): - @neuroconv_api.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) + @neuroconv_namespace.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) def post(self): try: - return inspect_nwb_file(neuroconv_api.payload) + return inspect_nwb_file(neuroconv_namespace.payload) except Exception as exception: - neuroconv_api.abort(500, str(exception)) + neuroconv_namespace.abort(500, str(exception)) -@neuroconv_api.route("/inspect_folder") +@neuroconv_namespace.route("/inspect_folder") class InspectNWBFolder(Resource): - @neuroconv_api.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) + @neuroconv_namespace.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) def post(self): try: url = f"{request.url_root}neuroconv/announce" - return inspect_nwb_folder(url, neuroconv_api.payload) + return inspect_nwb_folder(url, neuroconv_namespace.payload) except Exception as exception: - neuroconv_api.abort(500, str(exception)) + neuroconv_namespace.abort(500, str(exception)) -@neuroconv_api.route("/announce") +@neuroconv_namespace.route("/announce") class InspectNWBFolder(Resource): - @neuroconv_api.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) + @neuroconv_namespace.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) def post(self): try: - data = neuroconv_api.payload + data = neuroconv_namespace.payload announcer.announce(data) return True except Exception as exception: - neuroconv_api.abort(500, str(exception)) + neuroconv_namespace.abort(500, str(exception)) -@neuroconv_api.route("/inspect") +@neuroconv_namespace.route("/inspect") class InspectNWBFolder(Resource): - @neuroconv_api.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) + @neuroconv_namespace.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) def post(self): from os.path import isfile url = f"{request.url_root}neuroconv/announce" try: - paths = neuroconv_api.payload["paths"] + paths = neuroconv_namespace.payload["paths"] - kwargs = {**neuroconv_api.payload} + kwargs = {**neuroconv_namespace.payload} del kwargs["paths"] if len(paths) == 1: @@ -256,32 +256,32 @@ def post(self): return inspect_multiple_filesystem_objects(url, paths, **kwargs) except Exception as exception: - neuroconv_api.abort(500, str(exception)) + neuroconv_namespace.abort(500, str(exception)) -@neuroconv_api.route("/html") +@neuroconv_namespace.route("/html") class NWBToHTML(Resource): - @neuroconv_api.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) + @neuroconv_namespace.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) def post(self): try: from pynwb import NWBHDF5IO - with NWBHDF5IO(neuroconv_api.payload.nwbfile_path, mode="r") as io: + with NWBHDF5IO(neuroconv_namespace.payload.nwbfile_path, mode="r") as io: html = io.read()._repr_html_() return html except Exception as exception: - neuroconv_api.abort(500, str(exception)) + neuroconv_namespace.abort(500, str(exception)) # Create an events endpoint # announcer.announce('test', 'publish') -@neuroconv_api.route("/events", methods=["GET"]) +@neuroconv_namespace.route("/events", methods=["GET"]) class Events(Resource): - @neuroconv_api.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) + @neuroconv_namespace.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) def get(self): try: return Response(listen_to_neuroconv_events(), mimetype="text/event-stream") except Exception as exception: - neuroconv_api.abort(500, str(exception)) + neuroconv_namespace.abort(500, str(exception)) diff --git a/src/pyflask/apis/neurosift.py b/src/pyflask/namespaces/neurosift.py similarity index 90% rename from src/pyflask/apis/neurosift.py rename to src/pyflask/namespaces/neurosift.py index e4260ec85..c08a47481 100644 --- a/src/pyflask/apis/neurosift.py +++ b/src/pyflask/namespaces/neurosift.py @@ -6,7 +6,7 @@ import flask import flask_restx -neurosift_api = flask_restx.Namespace( +neurosift_namespace = flask_restx.Namespace( name="neurosift", description="Handle file system communication with the " "standalone Neurosift preview page." ) @@ -15,18 +15,18 @@ neurosift_file_registry = collections.defaultdict(bool) -@neurosift_api.route(rule="/files/") -@neurosift_api.doc( +@neurosift_namespace.route(rule="/files/") +@neurosift_namespace.doc( description="Handle adding and fetching NWB files from the global file registry.", ) class NeurosiftFileManager(flask_restx.Resource): - @neurosift_api.doc( + @neurosift_namespace.doc( description="If the file path has been added to the registry (and therefore sent its base " "URL), return the absolute file path. This is implicitly called by Neurosift.", ) def get(self, file_path: str) -> Union[flask.Response, None]: - abort_if_not_nwb_file(file_path=file_path, api=neurosift_api) + abort_if_not_nwb_file(file_path=file_path, api=neurosift_namespace) if neurosift_file_registry[file_path]: code = 404 base_message = server_error_responses(codes=[code])[code] @@ -45,13 +45,13 @@ def get(self, file_path: str) -> Union[flask.Response, None]: return flask.send_file(path_or_file=parsed_file_path) - @neurosift_api.doc( + @neurosift_namespace.doc( description="Add the file to a global in-memory registry (refreshes on App restart) and return " "the base URL of the newly " "added file", ) def post(self, file_path: str) -> Union[str, None]: - abort_if_not_nwb_file(file_path=file_path, api=neurosift_api) + abort_if_not_nwb_file(file_path=file_path, api=neurosift_namespace) neurosift_file_registry[file_path] = True diff --git a/src/pyflask/apis/startup.py b/src/pyflask/namespaces/startup.py similarity index 68% rename from src/pyflask/apis/startup.py rename to src/pyflask/namespaces/startup.py index 823dbee00..927a938f1 100644 --- a/src/pyflask/apis/startup.py +++ b/src/pyflask/namespaces/startup.py @@ -2,9 +2,9 @@ from flask_restx import Namespace, Resource -startup_api = Namespace("startup", description="API for startup commands related to the NWB GUIDE.") +startup_namespace = Namespace("startup", description="API for startup commands related to the NWB GUIDE.") -parser = startup_api.parser() +parser = startup_namespace.parser() parser.add_argument( "arg", type=str, @@ -14,15 +14,15 @@ ) -@startup_api.route("/echo") +@startup_namespace.route("/echo") class Echo(Resource): - @startup_api.expect(parser) + @startup_namespace.expect(parser) def get(self): args = parser.parse_args() return args["arg"] -@startup_api.route("/preload-imports") +@startup_namespace.route("/preload-imports") class PreloadImports(Resource): """ Preload various imports on startup instead of waiting for them later on. @@ -32,12 +32,12 @@ class PreloadImports(Resource): simply expose the cached namespaces to their scope instead of retriggering the entire import. """ - @startup_api.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) + @startup_namespace.doc(responses={200: "Success", 400: "Bad Request", 500: "Internal server error"}) def get(self): try: import neuroconv return True except Exception as exception: - startup_api.abort(500, str(exception)) + startup_namespace.abort(500, str(exception)) raise exception diff --git a/src/pyflask/apis/system.py b/src/pyflask/namespaces/system.py similarity index 72% rename from src/pyflask/apis/system.py rename to src/pyflask/namespaces/system.py index fd19bf811..5e0b9f104 100644 --- a/src/pyflask/apis/system.py +++ b/src/pyflask/namespaces/system.py @@ -4,13 +4,13 @@ import flask_restx -system_api = flask_restx.Namespace(name="system", description="Request various system specific information.") +system_namespace = flask_restx.Namespace(name="system", description="Request various system specific information.") -@system_api.route("/cpus") +@system_namespace.route("/cpus") class SupportedSpecies(flask_restx.Resource): - @system_api.doc( + @system_namespace.doc( description="Request the number of physical and logical cores on the system.", ) def get(self) -> Union[Dict[str, int], None]: From ed3134a60a952da1818b6633788e7b79e0c36fe3 Mon Sep 17 00:00:00 2001 From: Cody Baker Date: Mon, 27 May 2024 22:41:10 -0400 Subject: [PATCH 07/17] fixed most things --- src/electron/renderer/src/server/globals.ts | 4 +- .../src/stories/preview/NWBFilePreview.js | 425 +++++++++--------- src/pyflask/namespaces/dandi.py | 8 +- src/pyflask/namespaces/neurosift.py | 34 +- src/pyflask/namespaces/system.py | 2 +- src/schemas/dandi-upload.schema.ts | 2 +- 6 files changed, 255 insertions(+), 220 deletions(-) diff --git a/src/electron/renderer/src/server/globals.ts b/src/electron/renderer/src/server/globals.ts index af69d9af9..535c4d823 100644 --- a/src/electron/renderer/src/server/globals.ts +++ b/src/electron/renderer/src/server/globals.ts @@ -56,7 +56,7 @@ export const activateServer = () => { export const serverGlobals = { species: new Promise((res, rej) => { onServerOpen(() => { - fetch(new URL("dandi/get-recommended-species", baseUrl)) + fetch(new URL("/dandi/get-recommended-species", baseUrl)) .then((res) => res.json()) .then((species) => { res(species) @@ -67,7 +67,7 @@ export const serverGlobals = { }), cpus: new Promise((res, rej) => { onServerOpen(() => { - fetch(new URL("system/cpus", baseUrl)) + fetch(new URL("/system/cpus", baseUrl)) .then((res) => res.json()) .then((cpus) => { res(cpus) diff --git a/src/electron/renderer/src/stories/preview/NWBFilePreview.js b/src/electron/renderer/src/stories/preview/NWBFilePreview.js index 7364e4f8b..dfc23f352 100644 --- a/src/electron/renderer/src/stories/preview/NWBFilePreview.js +++ b/src/electron/renderer/src/stories/preview/NWBFilePreview.js @@ -1,202 +1,223 @@ -import { LitElement, css, html } from "lit"; -import { InspectorList } from "./inspector/InspectorList"; -import { Neurosift } from "./Neurosift"; -import { unsafeHTML } from "lit/directives/unsafe-html.js"; -import { run } from "../pages/guided-mode/options/utils"; -import { until } from "lit/directives/until.js"; -import { InstanceManager } from "../InstanceManager"; -import { path } from "../../electron"; -import { FullScreenToggle } from "../FullScreenToggle"; - -export function getSharedPath(array) { - array = array.map((str) => str.replace(/\\/g, "/")); // Convert to Mac-style path - const mapped = array.map((str) => str.split("/")); - let shared = mapped.shift(); - mapped.forEach((arr, i) => { - for (let j in arr) { - if (arr[j] !== shared[j]) { - shared = shared.slice(0, j); - break; - } - } - }); - - return shared ? path.normalize(shared.join("/")) : ""; // Convert back to OS-specific path -} - -export function truncateFilePaths(items, basepath) { - return items.map((item) => { - item = { ...item }; - item.file_path = item.file_path - .replace(`${basepath}/`, "") // Mac - .replace(`${basepath}\\`, ""); // Windows - return item; - }); -} - -export const removeFilePaths = (items) => { - return items.map((item) => { - const copy = { ...item }; - delete copy.file_path; - return copy; - }); -}; - -class NWBPreviewInstance extends LitElement { - constructor({ file }, project) { - super(); - this.file = file; - this.project = project; - - window.addEventListener("online", () => this.requestUpdate()); - window.addEventListener("offline", () => this.requestUpdate()); - } - - render() { - const isOnline = navigator.onLine; - - if (!isOnline) - return until( - (async () => { - const htmlRep = await run("html", { nwbfile_path: this.file }, { swal: false }); - return unsafeHTML(htmlRep); - })(), - html`Loading HTML representation...` - ); - - const neurosift = new Neurosift({ fullscreen: false }); - - // Enable access to the explicit file path - fetch(`${baseUrl}/files/${this.file}`, { method: "POST" }) - .then((res) => res.text()) - .then((result) => { - // Set Neurosift to access the returned URL - if (result) neurosift.url = result; - }); - - return neurosift; - } -} - -customElements.get("nwb-preview-instance") || customElements.define("nwb-preview-instance", NWBPreviewInstance); - -export class NWBFilePreview extends LitElement { - static get styles() { - return css` - :host { - display: block; - width: 100%; - height: 100%; - background: white; - position: relative; - } - - iframe { - width: 100%; - height: 100%; - border: 0; - } - - #inspect { - display: flex; - flex-direction: column; - border-left: 1px solid gray; - box-shadow: -5px 0 5px -5px rgba(0, 0, 0, 0.5); - z-index: 1; - } - `; - } - - constructor({ files = {}, project, inspect = false }) { - super(); - this.project = project; - this.files = files; - this.inspect = inspect; - } - - createInstance = ({ subject, session, info }) => { - return { - subject, - session, - display: () => new NWBPreviewInstance(info, this.project), - }; - }; - - render() { - const fileArr = Object.entries(this.files) - .map(([subject, v]) => - Object.entries(v).map(([session, info]) => { - return { subject, session, info }; - }) - ) - .flat(); - - const onlyFirstFile = fileArr.length <= 1; - - return html` ${new FullScreenToggle({ target: this })} -
      -
      - ${(() => { - if (onlyFirstFile) return new NWBPreviewInstance(fileArr[0].info, this.project); - else { - const _instances = fileArr.map(this.createInstance); - - const instances = _instances.reduce((acc, { subject, session, display }) => { - if (!acc[`sub-${subject}`]) acc[`sub-${subject}`] = {}; - acc[`sub-${subject}`][`ses-${session}`] = display; - return acc; - }, {}); - - return new InstanceManager({ instances }); - } - })()} -
      - ${this.inspect - ? html`
      -

      Inspector Report

      - ${until( - (async () => { - const options = {}; // NOTE: Currently options are handled on the Python end until exposed to the user - - const title = "Inspecting your file"; - - const report = onlyFirstFile - ? await run( - "inspect_file", - { nwbfile_path: fileArr[0].info.file, ...options }, - { title } - ) // Inspect the first file - : await run("inspect_folder", { path, ...options }, { title: title + "s" }); // Inspect the folder - - const result = onlyFirstFile - ? { - ...report, - messages: removeFilePaths(report.messages), - } - : { - ...report, - messages: truncateFilePaths( - report.messages, - getSharedPath(fileArr.map(({ info }) => info.file)) - ), - }; - - const items = result.messages; - - const list = new InspectorList({ - items: items, - listStyles: { minWidth: "300px", maxWidth: "350px" }, - emptyMessage: "No issues found.", - }); - list.style.padding = "10px"; - return list; - })(), - html`Loading inspector report...` - )} -
      ` - : ""} -
      `; - } -} - -customElements.get("nwb-file-preview") || customElements.define("nwb-file-preview", NWBFilePreview); +import { LitElement, css, html } from "lit"; +import { InspectorList } from "./inspector/InspectorList"; +import { Neurosift } from "./Neurosift"; +import { unsafeHTML } from "lit/directives/unsafe-html.js"; +import { run } from "../pages/guided-mode/options/utils"; +import { until } from "lit/directives/until.js"; +import { InstanceManager } from "../InstanceManager"; +import { path } from "../../electron"; +import { FullScreenToggle } from "../FullScreenToggle"; +import { baseUrl } from "../../server/globals"; + +export function getSharedPath(array) { + array = array.map((str) => str.replace(/\\/g, "/")); // Convert to Mac-style path + const mapped = array.map((str) => str.split("/")); + let shared = mapped.shift(); + mapped.forEach((arr, i) => { + for (let j in arr) { + if (arr[j] !== shared[j]) { + shared = shared.slice(0, j); + break; + } + } + }); + + return shared ? path.normalize(shared.join("/")) : ""; // Convert back to OS-specific path +} + +export function truncateFilePaths(items, basepath) { + return items.map((item) => { + item = { ...item }; + item.file_path = item.file_path + .replace(`${basepath}/`, "") // Mac + .replace(`${basepath}\\`, ""); // Windows + return item; + }); +} + +export const removeFilePaths = (items) => { + return items.map((item) => { + const copy = { ...item }; + delete copy.file_path; + return copy; + }); +}; + +class NWBPreviewInstance extends LitElement { + constructor({ file }, project) { + super(); + this.file = file; + this.project = project; + + window.addEventListener("online", () => this.requestUpdate()); + window.addEventListener("offline", () => this.requestUpdate()); + } + + render() { + const isOnline = navigator.onLine; + + if (!isOnline) + return until( + (async () => { + const htmlRep = await run( + "html", + { nwbfile_path: this.file }, + { swal: false }, + ); + return unsafeHTML(htmlRep); + })(), + html`Loading HTML representation...`, + ); + + const neurosift = new Neurosift({ fullscreen: false }); + + // Enable access to the explicit file path + fetch(`${baseUrl}/neurosift/files/${this.file}`, { method: "POST" }) + .then((res) => res.text()) + .then((result) => { + // Set Neurosift to access the returned URL + if (result) neurosift.url = result; + }); + + return neurosift; + } +} + +customElements.get("nwb-preview-instance") || + customElements.define("nwb-preview-instance", NWBPreviewInstance); + +export class NWBFilePreview extends LitElement { + static get styles() { + return css` + :host { + display: block; + width: 100%; + height: 100%; + background: white; + position: relative; + } + + iframe { + width: 100%; + height: 100%; + border: 0; + } + + #inspect { + display: flex; + flex-direction: column; + border-left: 1px solid gray; + box-shadow: -5px 0 5px -5px rgba(0, 0, 0, 0.5); + z-index: 1; + } + `; + } + + constructor({ files = {}, project, inspect = false }) { + super(); + this.project = project; + this.files = files; + this.inspect = inspect; + } + + createInstance = ({ subject, session, info }) => { + return { + subject, + session, + display: () => new NWBPreviewInstance(info, this.project), + }; + }; + + render() { + const fileArr = Object.entries(this.files) + .map(([subject, v]) => + Object.entries(v).map(([session, info]) => { + return { subject, session, info }; + }), + ) + .flat(); + + const onlyFirstFile = fileArr.length <= 1; + + return html` ${new FullScreenToggle({ target: this })} +
      +
      + ${(() => { + if (onlyFirstFile) + return new NWBPreviewInstance(fileArr[0].info, this.project); + else { + const _instances = fileArr.map(this.createInstance); + + const instances = _instances.reduce( + (acc, { subject, session, display }) => { + if (!acc[`sub-${subject}`]) acc[`sub-${subject}`] = {}; + acc[`sub-${subject}`][`ses-${session}`] = display; + return acc; + }, + {}, + ); + + return new InstanceManager({ instances }); + } + })()} +
      + ${this.inspect + ? html`
      +

      + Inspector Report +

      + ${until( + (async () => { + const options = {}; // NOTE: Currently options are handled on the Python end until exposed to the user + + const title = "Inspecting your file"; + + const report = onlyFirstFile + ? await run( + "inspect_file", + { nwbfile_path: fileArr[0].info.file, ...options }, + { title }, + ) // Inspect the first file + : await run( + "inspect_folder", + { path, ...options }, + { title: title + "s" }, + ); // Inspect the folder + + const result = onlyFirstFile + ? { + ...report, + messages: removeFilePaths(report.messages), + } + : { + ...report, + messages: truncateFilePaths( + report.messages, + getSharedPath(fileArr.map(({ info }) => info.file)), + ), + }; + + const items = result.messages; + + const list = new InspectorList({ + items: items, + listStyles: { minWidth: "300px", maxWidth: "350px" }, + emptyMessage: "No issues found.", + }); + list.style.padding = "10px"; + return list; + })(), + html`Loading inspector report...`, + )} +
      ` + : ""} +
      `; + } +} + +customElements.get("nwb-file-preview") || + customElements.define("nwb-file-preview", NWBFilePreview); diff --git a/src/pyflask/namespaces/dandi.py b/src/pyflask/namespaces/dandi.py index 11e070c35..8056a12c3 100644 --- a/src/pyflask/namespaces/dandi.py +++ b/src/pyflask/namespaces/dandi.py @@ -9,12 +9,14 @@ ) -@dandi_namespace.route(rule="/get-recommended-species") +@dandi_namespace.route("/get-recommended-species") class SupportedSpecies(flask_restx.Resource): @dandi_namespace.doc( - description="Request the list of currently supported species (by Latin Binomial name) for DANDI. Note that any " - "explicit NCBI taxonomy link is also supported.", + description=( + "Request the list of currently supported species (by Latin Binomial name) for DANDI. Note that any " + "explicit NCBI taxonomy link is also supported." + ), ) def get(self) -> Union[List[Tuple[List[str], str, str, str]], None]: from dandi.metadata.util import species_map diff --git a/src/pyflask/namespaces/neurosift.py b/src/pyflask/namespaces/neurosift.py index c08a47481..8c6ad7320 100644 --- a/src/pyflask/namespaces/neurosift.py +++ b/src/pyflask/namespaces/neurosift.py @@ -1,6 +1,8 @@ """An API for handling file system communication with the standalone Neurosift preview page.""" import collections +import os +import urllib from typing import Union import flask @@ -15,7 +17,14 @@ neurosift_file_registry = collections.defaultdict(bool) -@neurosift_namespace.route(rule="/files/") +def _error_if_not_nwb_file(file_path: str) -> None: + if ".nwb" not in file_path: + raise ValueError("This endpoint must be called on an NWB file!") + + return + + +@neurosift_namespace.route("/files/") @neurosift_namespace.doc( description="Handle adding and fetching NWB files from the global file registry.", ) @@ -26,8 +35,9 @@ class NeurosiftFileManager(flask_restx.Resource): "URL), return the absolute file path. This is implicitly called by Neurosift.", ) def get(self, file_path: str) -> Union[flask.Response, None]: - abort_if_not_nwb_file(file_path=file_path, api=neurosift_namespace) - if neurosift_file_registry[file_path]: + _error_if_not_nwb_file(file_path=file_path) + + if not neurosift_file_registry[file_path]: code = 404 base_message = server_error_responses(codes=[code])[code] message = f"{base_message}: The base URL has not been exposed for this NWB file." @@ -36,23 +46,25 @@ def get(self, file_path: str) -> Union[flask.Response, None]: return # Decode any URL encoding applied to the file path - parsed_file_path = unquote(file_path) + parsed_file_path = urllib.parse.unquote(file_path) # Check if the file path is relative - is_file_relative = not isabs(parsed_file_path) + is_file_relative = not os.path.isabs(parsed_file_path) if is_file_relative: parsed_file_path = f"/{parsed_file_path}" return flask.send_file(path_or_file=parsed_file_path) @neurosift_namespace.doc( - description="Add the file to a global in-memory registry (refreshes on App restart) and return " - "the base URL of the newly " - "added file", + description=( + "Add the file to a global in-memory registry (refreshes on App restart) and return " + "the base URL of the newly added file.", + ) ) def post(self, file_path: str) -> Union[str, None]: - abort_if_not_nwb_file(file_path=file_path, api=neurosift_namespace) + _error_if_not_nwb_file(file_path=file_path) neurosift_file_registry[file_path] = True - - return request.base_url + # if neurosift_file_registry[file_path] = True: + # raise ValueError(flask.request.base_url) + return flask.request.base_url diff --git a/src/pyflask/namespaces/system.py b/src/pyflask/namespaces/system.py index 5e0b9f104..491cf36aa 100644 --- a/src/pyflask/namespaces/system.py +++ b/src/pyflask/namespaces/system.py @@ -8,7 +8,7 @@ @system_namespace.route("/cpus") -class SupportedSpecies(flask_restx.Resource): +class GetCPUInfo(flask_restx.Resource): @system_namespace.doc( description="Request the number of physical and logical cores on the system.", diff --git a/src/schemas/dandi-upload.schema.ts b/src/schemas/dandi-upload.schema.ts index cb0538578..fc251b467 100644 --- a/src/schemas/dandi-upload.schema.ts +++ b/src/schemas/dandi-upload.schema.ts @@ -28,7 +28,7 @@ export const ready = { // Get CPUs onServerOpen(async () => { - await fetch(new URL("cpus", baseUrl)) + await fetch(new URL("/system/cpus", baseUrl)) .then((res) => res.json()) .then(({ physical, logical }) => { const { number_of_jobs, number_of_threads } = additionalSettings as any; From 20f86f55f1e281fe19aaac051eea8967c9d1b7d9 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 02:41:45 +0000 Subject: [PATCH 08/17] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../src/stories/preview/NWBFilePreview.js | 426 +++++++++--------- 1 file changed, 203 insertions(+), 223 deletions(-) diff --git a/src/electron/renderer/src/stories/preview/NWBFilePreview.js b/src/electron/renderer/src/stories/preview/NWBFilePreview.js index dfc23f352..631855782 100644 --- a/src/electron/renderer/src/stories/preview/NWBFilePreview.js +++ b/src/electron/renderer/src/stories/preview/NWBFilePreview.js @@ -1,223 +1,203 @@ -import { LitElement, css, html } from "lit"; -import { InspectorList } from "./inspector/InspectorList"; -import { Neurosift } from "./Neurosift"; -import { unsafeHTML } from "lit/directives/unsafe-html.js"; -import { run } from "../pages/guided-mode/options/utils"; -import { until } from "lit/directives/until.js"; -import { InstanceManager } from "../InstanceManager"; -import { path } from "../../electron"; -import { FullScreenToggle } from "../FullScreenToggle"; -import { baseUrl } from "../../server/globals"; - -export function getSharedPath(array) { - array = array.map((str) => str.replace(/\\/g, "/")); // Convert to Mac-style path - const mapped = array.map((str) => str.split("/")); - let shared = mapped.shift(); - mapped.forEach((arr, i) => { - for (let j in arr) { - if (arr[j] !== shared[j]) { - shared = shared.slice(0, j); - break; - } - } - }); - - return shared ? path.normalize(shared.join("/")) : ""; // Convert back to OS-specific path -} - -export function truncateFilePaths(items, basepath) { - return items.map((item) => { - item = { ...item }; - item.file_path = item.file_path - .replace(`${basepath}/`, "") // Mac - .replace(`${basepath}\\`, ""); // Windows - return item; - }); -} - -export const removeFilePaths = (items) => { - return items.map((item) => { - const copy = { ...item }; - delete copy.file_path; - return copy; - }); -}; - -class NWBPreviewInstance extends LitElement { - constructor({ file }, project) { - super(); - this.file = file; - this.project = project; - - window.addEventListener("online", () => this.requestUpdate()); - window.addEventListener("offline", () => this.requestUpdate()); - } - - render() { - const isOnline = navigator.onLine; - - if (!isOnline) - return until( - (async () => { - const htmlRep = await run( - "html", - { nwbfile_path: this.file }, - { swal: false }, - ); - return unsafeHTML(htmlRep); - })(), - html`Loading HTML representation...`, - ); - - const neurosift = new Neurosift({ fullscreen: false }); - - // Enable access to the explicit file path - fetch(`${baseUrl}/neurosift/files/${this.file}`, { method: "POST" }) - .then((res) => res.text()) - .then((result) => { - // Set Neurosift to access the returned URL - if (result) neurosift.url = result; - }); - - return neurosift; - } -} - -customElements.get("nwb-preview-instance") || - customElements.define("nwb-preview-instance", NWBPreviewInstance); - -export class NWBFilePreview extends LitElement { - static get styles() { - return css` - :host { - display: block; - width: 100%; - height: 100%; - background: white; - position: relative; - } - - iframe { - width: 100%; - height: 100%; - border: 0; - } - - #inspect { - display: flex; - flex-direction: column; - border-left: 1px solid gray; - box-shadow: -5px 0 5px -5px rgba(0, 0, 0, 0.5); - z-index: 1; - } - `; - } - - constructor({ files = {}, project, inspect = false }) { - super(); - this.project = project; - this.files = files; - this.inspect = inspect; - } - - createInstance = ({ subject, session, info }) => { - return { - subject, - session, - display: () => new NWBPreviewInstance(info, this.project), - }; - }; - - render() { - const fileArr = Object.entries(this.files) - .map(([subject, v]) => - Object.entries(v).map(([session, info]) => { - return { subject, session, info }; - }), - ) - .flat(); - - const onlyFirstFile = fileArr.length <= 1; - - return html` ${new FullScreenToggle({ target: this })} -
      -
      - ${(() => { - if (onlyFirstFile) - return new NWBPreviewInstance(fileArr[0].info, this.project); - else { - const _instances = fileArr.map(this.createInstance); - - const instances = _instances.reduce( - (acc, { subject, session, display }) => { - if (!acc[`sub-${subject}`]) acc[`sub-${subject}`] = {}; - acc[`sub-${subject}`][`ses-${session}`] = display; - return acc; - }, - {}, - ); - - return new InstanceManager({ instances }); - } - })()} -
      - ${this.inspect - ? html`
      -

      - Inspector Report -

      - ${until( - (async () => { - const options = {}; // NOTE: Currently options are handled on the Python end until exposed to the user - - const title = "Inspecting your file"; - - const report = onlyFirstFile - ? await run( - "inspect_file", - { nwbfile_path: fileArr[0].info.file, ...options }, - { title }, - ) // Inspect the first file - : await run( - "inspect_folder", - { path, ...options }, - { title: title + "s" }, - ); // Inspect the folder - - const result = onlyFirstFile - ? { - ...report, - messages: removeFilePaths(report.messages), - } - : { - ...report, - messages: truncateFilePaths( - report.messages, - getSharedPath(fileArr.map(({ info }) => info.file)), - ), - }; - - const items = result.messages; - - const list = new InspectorList({ - items: items, - listStyles: { minWidth: "300px", maxWidth: "350px" }, - emptyMessage: "No issues found.", - }); - list.style.padding = "10px"; - return list; - })(), - html`Loading inspector report...`, - )} -
      ` - : ""} -
      `; - } -} - -customElements.get("nwb-file-preview") || - customElements.define("nwb-file-preview", NWBFilePreview); +import { LitElement, css, html } from "lit"; +import { InspectorList } from "./inspector/InspectorList"; +import { Neurosift } from "./Neurosift"; +import { unsafeHTML } from "lit/directives/unsafe-html.js"; +import { run } from "../pages/guided-mode/options/utils"; +import { until } from "lit/directives/until.js"; +import { InstanceManager } from "../InstanceManager"; +import { path } from "../../electron"; +import { FullScreenToggle } from "../FullScreenToggle"; +import { baseUrl } from "../../server/globals"; + +export function getSharedPath(array) { + array = array.map((str) => str.replace(/\\/g, "/")); // Convert to Mac-style path + const mapped = array.map((str) => str.split("/")); + let shared = mapped.shift(); + mapped.forEach((arr, i) => { + for (let j in arr) { + if (arr[j] !== shared[j]) { + shared = shared.slice(0, j); + break; + } + } + }); + + return shared ? path.normalize(shared.join("/")) : ""; // Convert back to OS-specific path +} + +export function truncateFilePaths(items, basepath) { + return items.map((item) => { + item = { ...item }; + item.file_path = item.file_path + .replace(`${basepath}/`, "") // Mac + .replace(`${basepath}\\`, ""); // Windows + return item; + }); +} + +export const removeFilePaths = (items) => { + return items.map((item) => { + const copy = { ...item }; + delete copy.file_path; + return copy; + }); +}; + +class NWBPreviewInstance extends LitElement { + constructor({ file }, project) { + super(); + this.file = file; + this.project = project; + + window.addEventListener("online", () => this.requestUpdate()); + window.addEventListener("offline", () => this.requestUpdate()); + } + + render() { + const isOnline = navigator.onLine; + + if (!isOnline) + return until( + (async () => { + const htmlRep = await run("html", { nwbfile_path: this.file }, { swal: false }); + return unsafeHTML(htmlRep); + })(), + html`Loading HTML representation...` + ); + + const neurosift = new Neurosift({ fullscreen: false }); + + // Enable access to the explicit file path + fetch(`${baseUrl}/neurosift/files/${this.file}`, { method: "POST" }) + .then((res) => res.text()) + .then((result) => { + // Set Neurosift to access the returned URL + if (result) neurosift.url = result; + }); + + return neurosift; + } +} + +customElements.get("nwb-preview-instance") || customElements.define("nwb-preview-instance", NWBPreviewInstance); + +export class NWBFilePreview extends LitElement { + static get styles() { + return css` + :host { + display: block; + width: 100%; + height: 100%; + background: white; + position: relative; + } + + iframe { + width: 100%; + height: 100%; + border: 0; + } + + #inspect { + display: flex; + flex-direction: column; + border-left: 1px solid gray; + box-shadow: -5px 0 5px -5px rgba(0, 0, 0, 0.5); + z-index: 1; + } + `; + } + + constructor({ files = {}, project, inspect = false }) { + super(); + this.project = project; + this.files = files; + this.inspect = inspect; + } + + createInstance = ({ subject, session, info }) => { + return { + subject, + session, + display: () => new NWBPreviewInstance(info, this.project), + }; + }; + + render() { + const fileArr = Object.entries(this.files) + .map(([subject, v]) => + Object.entries(v).map(([session, info]) => { + return { subject, session, info }; + }) + ) + .flat(); + + const onlyFirstFile = fileArr.length <= 1; + + return html` ${new FullScreenToggle({ target: this })} +
      +
      + ${(() => { + if (onlyFirstFile) return new NWBPreviewInstance(fileArr[0].info, this.project); + else { + const _instances = fileArr.map(this.createInstance); + + const instances = _instances.reduce((acc, { subject, session, display }) => { + if (!acc[`sub-${subject}`]) acc[`sub-${subject}`] = {}; + acc[`sub-${subject}`][`ses-${session}`] = display; + return acc; + }, {}); + + return new InstanceManager({ instances }); + } + })()} +
      + ${this.inspect + ? html`
      +

      Inspector Report

      + ${until( + (async () => { + const options = {}; // NOTE: Currently options are handled on the Python end until exposed to the user + + const title = "Inspecting your file"; + + const report = onlyFirstFile + ? await run( + "inspect_file", + { nwbfile_path: fileArr[0].info.file, ...options }, + { title } + ) // Inspect the first file + : await run("inspect_folder", { path, ...options }, { title: title + "s" }); // Inspect the folder + + const result = onlyFirstFile + ? { + ...report, + messages: removeFilePaths(report.messages), + } + : { + ...report, + messages: truncateFilePaths( + report.messages, + getSharedPath(fileArr.map(({ info }) => info.file)) + ), + }; + + const items = result.messages; + + const list = new InspectorList({ + items: items, + listStyles: { minWidth: "300px", maxWidth: "350px" }, + emptyMessage: "No issues found.", + }); + list.style.padding = "10px"; + return list; + })(), + html`Loading inspector report...` + )} +
      ` + : ""} +
      `; + } +} + +customElements.get("nwb-file-preview") || customElements.define("nwb-file-preview", NWBFilePreview); From 70551f46fecc499213a1e654632783bdb4689118 Mon Sep 17 00:00:00 2001 From: Cody Baker Date: Mon, 27 May 2024 23:25:39 -0400 Subject: [PATCH 09/17] restore previous neurosift behavior --- .../src/stories/pages/preview/PreviewPage.js | 122 ++--- .../src/stories/preview/NWBFilePreview.js | 417 +++++++++--------- .../renderer/src/stories/preview/Neurosift.js | 199 +++++---- src/pyflask/app.py | 49 +- src/pyflask/namespaces/neurosift.py | 7 +- 5 files changed, 427 insertions(+), 367 deletions(-) diff --git a/src/electron/renderer/src/stories/pages/preview/PreviewPage.js b/src/electron/renderer/src/stories/pages/preview/PreviewPage.js index e9d77f9a5..9c6c79fd0 100644 --- a/src/electron/renderer/src/stories/pages/preview/PreviewPage.js +++ b/src/electron/renderer/src/stories/pages/preview/PreviewPage.js @@ -1,58 +1,64 @@ -import { html } from "lit"; -import { Page } from "../Page.js"; -import { onThrow } from "../../../errors"; -import { JSONSchemaInput } from "../../JSONSchemaInput.js"; -import { Neurosift } from "../../preview/Neurosift.js"; -import { baseUrl } from "../../../server/globals"; - -export class PreviewPage extends Page { - header = { - title: "NWB File Exploration", - subtitle: "Visualize your NWB file using Neurosift.", - }; - - constructor(...args) { - super(...args); - this.style.height = "100%"; // Fix main section - } - - updatePath = async (path) => { - if (path) { - const result = await fetch(`${baseUrl}/neurosift/files/${path}`, { - method: "POST", - }).then((res) => res.text()); - if (result) this.neurosift.url = result; - } else this.neurosift.url = undefined; - }; - - neurosift = new Neurosift(); - - input = new JSONSchemaInput({ - path: ["file_path"], - schema: { - type: "string", - format: "file", - description: - "Please provide a file path that you'd like to visualize using Neurosift. The GUIDE will serve this file and access the appropriate URL automatically.", - }, - onUpdate: this.updatePath, - onThrow, - }); - - render() { - const urlFilePath = new URL(document.location).searchParams.get("file"); - - if (urlFilePath) { - this.updatePath(urlFilePath); - this.input.value = urlFilePath; - } - - return html` -
      - ${this.input} ${this.neurosift} -
      - `; - } -} - -customElements.get("nwbguide-preview-page") || customElements.define("nwbguide-preview-page", PreviewPage); +import { html } from "lit"; +import { Page } from "../Page.js"; +import { onThrow } from "../../../errors"; +import { JSONSchemaInput } from "../../JSONSchemaInput.js"; +import { Neurosift } from "../../preview/Neurosift.js"; +import { baseUrl } from "../../../server/globals"; + +export class PreviewPage extends Page { + header = { + title: "NWB File Exploration", + subtitle: "Visualize your NWB file using Neurosift.", + }; + + constructor(...args) { + super(...args); + this.style.height = "100%"; // Fix main section + } + + updatePath = async (path) => { + if (path) { + // Enable access to the explicit file path + const result = await fetch(`${baseUrl}/files/${path}`, { + method: "POST", + }).then((res) => res.text()); + + // Set Neurosift to access the returned URL + if (result) this.neurosift.url = result; + } else this.neurosift.url = undefined; + }; + + neurosift = new Neurosift(); + + input = new JSONSchemaInput({ + path: ["file_path"], + schema: { + type: "string", + format: "file", + description: + "Please provide a file path that you'd like to visualize using Neurosift. The GUIDE will serve this file and access the appropriate URL automatically.", + }, + onUpdate: this.updatePath, + onThrow, + }); + + render() { + const urlFilePath = new URL(document.location).searchParams.get("file"); + + if (urlFilePath) { + this.updatePath(urlFilePath); + this.input.value = urlFilePath; + } + + return html` +
      + ${this.input} ${this.neurosift} +
      + `; + } +} + +customElements.get("nwbguide-preview-page") || + customElements.define("nwbguide-preview-page", PreviewPage); diff --git a/src/electron/renderer/src/stories/preview/NWBFilePreview.js b/src/electron/renderer/src/stories/preview/NWBFilePreview.js index 631855782..de01eea64 100644 --- a/src/electron/renderer/src/stories/preview/NWBFilePreview.js +++ b/src/electron/renderer/src/stories/preview/NWBFilePreview.js @@ -1,203 +1,214 @@ -import { LitElement, css, html } from "lit"; -import { InspectorList } from "./inspector/InspectorList"; -import { Neurosift } from "./Neurosift"; -import { unsafeHTML } from "lit/directives/unsafe-html.js"; -import { run } from "../pages/guided-mode/options/utils"; -import { until } from "lit/directives/until.js"; -import { InstanceManager } from "../InstanceManager"; -import { path } from "../../electron"; -import { FullScreenToggle } from "../FullScreenToggle"; -import { baseUrl } from "../../server/globals"; - -export function getSharedPath(array) { - array = array.map((str) => str.replace(/\\/g, "/")); // Convert to Mac-style path - const mapped = array.map((str) => str.split("/")); - let shared = mapped.shift(); - mapped.forEach((arr, i) => { - for (let j in arr) { - if (arr[j] !== shared[j]) { - shared = shared.slice(0, j); - break; - } - } - }); - - return shared ? path.normalize(shared.join("/")) : ""; // Convert back to OS-specific path -} - -export function truncateFilePaths(items, basepath) { - return items.map((item) => { - item = { ...item }; - item.file_path = item.file_path - .replace(`${basepath}/`, "") // Mac - .replace(`${basepath}\\`, ""); // Windows - return item; - }); -} - -export const removeFilePaths = (items) => { - return items.map((item) => { - const copy = { ...item }; - delete copy.file_path; - return copy; - }); -}; - -class NWBPreviewInstance extends LitElement { - constructor({ file }, project) { - super(); - this.file = file; - this.project = project; - - window.addEventListener("online", () => this.requestUpdate()); - window.addEventListener("offline", () => this.requestUpdate()); - } - - render() { - const isOnline = navigator.onLine; - - if (!isOnline) - return until( - (async () => { - const htmlRep = await run("html", { nwbfile_path: this.file }, { swal: false }); - return unsafeHTML(htmlRep); - })(), - html`Loading HTML representation...` - ); - - const neurosift = new Neurosift({ fullscreen: false }); - - // Enable access to the explicit file path - fetch(`${baseUrl}/neurosift/files/${this.file}`, { method: "POST" }) - .then((res) => res.text()) - .then((result) => { - // Set Neurosift to access the returned URL - if (result) neurosift.url = result; - }); - - return neurosift; - } -} - -customElements.get("nwb-preview-instance") || customElements.define("nwb-preview-instance", NWBPreviewInstance); - -export class NWBFilePreview extends LitElement { - static get styles() { - return css` - :host { - display: block; - width: 100%; - height: 100%; - background: white; - position: relative; - } - - iframe { - width: 100%; - height: 100%; - border: 0; - } - - #inspect { - display: flex; - flex-direction: column; - border-left: 1px solid gray; - box-shadow: -5px 0 5px -5px rgba(0, 0, 0, 0.5); - z-index: 1; - } - `; - } - - constructor({ files = {}, project, inspect = false }) { - super(); - this.project = project; - this.files = files; - this.inspect = inspect; - } - - createInstance = ({ subject, session, info }) => { - return { - subject, - session, - display: () => new NWBPreviewInstance(info, this.project), - }; - }; - - render() { - const fileArr = Object.entries(this.files) - .map(([subject, v]) => - Object.entries(v).map(([session, info]) => { - return { subject, session, info }; - }) - ) - .flat(); - - const onlyFirstFile = fileArr.length <= 1; - - return html` ${new FullScreenToggle({ target: this })} -
      -
      - ${(() => { - if (onlyFirstFile) return new NWBPreviewInstance(fileArr[0].info, this.project); - else { - const _instances = fileArr.map(this.createInstance); - - const instances = _instances.reduce((acc, { subject, session, display }) => { - if (!acc[`sub-${subject}`]) acc[`sub-${subject}`] = {}; - acc[`sub-${subject}`][`ses-${session}`] = display; - return acc; - }, {}); - - return new InstanceManager({ instances }); - } - })()} -
      - ${this.inspect - ? html`
      -

      Inspector Report

      - ${until( - (async () => { - const options = {}; // NOTE: Currently options are handled on the Python end until exposed to the user - - const title = "Inspecting your file"; - - const report = onlyFirstFile - ? await run( - "inspect_file", - { nwbfile_path: fileArr[0].info.file, ...options }, - { title } - ) // Inspect the first file - : await run("inspect_folder", { path, ...options }, { title: title + "s" }); // Inspect the folder - - const result = onlyFirstFile - ? { - ...report, - messages: removeFilePaths(report.messages), - } - : { - ...report, - messages: truncateFilePaths( - report.messages, - getSharedPath(fileArr.map(({ info }) => info.file)) - ), - }; - - const items = result.messages; - - const list = new InspectorList({ - items: items, - listStyles: { minWidth: "300px", maxWidth: "350px" }, - emptyMessage: "No issues found.", - }); - list.style.padding = "10px"; - return list; - })(), - html`Loading inspector report...` - )} -
      ` - : ""} -
      `; - } -} - -customElements.get("nwb-file-preview") || customElements.define("nwb-file-preview", NWBFilePreview); +import { LitElement, css, html } from "lit"; +import { InspectorList } from "./inspector/InspectorList"; +import { Neurosift, getURLFromFilePath } from "./Neurosift"; +import { unsafeHTML } from "lit/directives/unsafe-html.js"; +import { run } from "../pages/guided-mode/options/utils"; +import { until } from "lit/directives/until.js"; +import { InstanceManager } from "../InstanceManager"; +import { path } from "../../electron"; +import { FullScreenToggle } from "../FullScreenToggle"; + +export function getSharedPath(array) { + array = array.map((str) => str.replace(/\\/g, "/")); // Convert to Mac-style path + const mapped = array.map((str) => str.split("/")); + let shared = mapped.shift(); + mapped.forEach((arr, i) => { + for (let j in arr) { + if (arr[j] !== shared[j]) { + shared = shared.slice(0, j); + break; + } + } + }); + + return shared ? path.normalize(shared.join("/")) : ""; // Convert back to OS-specific path +} + +export function truncateFilePaths(items, basepath) { + return items.map((item) => { + item = { ...item }; + item.file_path = item.file_path + .replace(`${basepath}/`, "") // Mac + .replace(`${basepath}\\`, ""); // Windows + return item; + }); +} + +export const removeFilePaths = (items) => { + return items.map((item) => { + const copy = { ...item }; + delete copy.file_path; + return copy; + }); +}; + +class NWBPreviewInstance extends LitElement { + constructor({ file }, project) { + super(); + this.file = file; + this.project = project; + + window.addEventListener("online", () => this.requestUpdate()); + window.addEventListener("offline", () => this.requestUpdate()); + } + + render() { + const isOnline = navigator.onLine; + + return isOnline + ? new Neurosift({ + url: getURLFromFilePath(this.file, this.project), + fullscreen: false, + }) + : until( + (async () => { + const htmlRep = await run( + "html", + { nwbfile_path: this.file }, + { swal: false }, + ); + return unsafeHTML(htmlRep); + })(), + html`Loading HTML representation...`, + ); + } +} + +customElements.get("nwb-preview-instance") || + customElements.define("nwb-preview-instance", NWBPreviewInstance); + +export class NWBFilePreview extends LitElement { + static get styles() { + return css` + :host { + display: block; + width: 100%; + height: 100%; + background: white; + position: relative; + } + + iframe { + width: 100%; + height: 100%; + border: 0; + } + + #inspect { + display: flex; + flex-direction: column; + border-left: 1px solid gray; + box-shadow: -5px 0 5px -5px rgba(0, 0, 0, 0.5); + z-index: 1; + } + `; + } + + constructor({ files = {}, project, inspect = false }) { + super(); + this.project = project; + this.files = files; + this.inspect = inspect; + } + + createInstance = ({ subject, session, info }) => { + return { + subject, + session, + display: () => new NWBPreviewInstance(info, this.project), + }; + }; + + render() { + const fileArr = Object.entries(this.files) + .map(([subject, v]) => + Object.entries(v).map(([session, info]) => { + return { subject, session, info }; + }), + ) + .flat(); + + const onlyFirstFile = fileArr.length <= 1; + + return html` ${new FullScreenToggle({ target: this })} +
      +
      + ${(() => { + if (onlyFirstFile) + return new NWBPreviewInstance(fileArr[0].info, this.project); + else { + const _instances = fileArr.map(this.createInstance); + + const instances = _instances.reduce( + (acc, { subject, session, display }) => { + if (!acc[`sub-${subject}`]) acc[`sub-${subject}`] = {}; + acc[`sub-${subject}`][`ses-${session}`] = display; + return acc; + }, + {}, + ); + + return new InstanceManager({ instances }); + } + })()} +
      + ${this.inspect + ? html`
      +

      + Inspector Report +

      + ${until( + (async () => { + const options = {}; // NOTE: Currently options are handled on the Python end until exposed to the user + + const title = "Inspecting your file"; + + const report = onlyFirstFile + ? await run( + "inspect_file", + { nwbfile_path: fileArr[0].info.file, ...options }, + { title }, + ) // Inspect the first file + : await run( + "inspect_folder", + { path, ...options }, + { title: title + "s" }, + ); // Inspect the folder + + const result = onlyFirstFile + ? { + ...report, + messages: removeFilePaths(report.messages), + } + : { + ...report, + messages: truncateFilePaths( + report.messages, + getSharedPath(fileArr.map(({ info }) => info.file)), + ), + }; + + const items = result.messages; + + const list = new InspectorList({ + items: items, + listStyles: { minWidth: "300px", maxWidth: "350px" }, + emptyMessage: "No issues found.", + }); + list.style.padding = "10px"; + return list; + })(), + html`Loading inspector report...`, + )} +
      ` + : ""} +
      `; + } +} + +customElements.get("nwb-file-preview") || + customElements.define("nwb-file-preview", NWBFilePreview); diff --git a/src/electron/renderer/src/stories/preview/Neurosift.js b/src/electron/renderer/src/stories/preview/Neurosift.js index 2a5c3c274..de5922fc4 100644 --- a/src/electron/renderer/src/stories/preview/Neurosift.js +++ b/src/electron/renderer/src/stories/preview/Neurosift.js @@ -1,95 +1,104 @@ -import { LitElement, css, html } from "lit"; - -import { Loader } from "../Loader"; -import { FullScreenToggle } from "../FullScreenToggle"; -import { baseUrl } from "../../server/globals"; - -export class Neurosift extends LitElement { - static get styles() { - return css` - :host { - background: white; - width: 100%; - height: 100%; - display: grid; - grid-template-rows: 100%; - grid-template-columns: 100%; - position: relative; - --loader-color: hsl(200, 80%, 50%); - } - - iframe, - .loader-container { - width: 100%; - height: 100%; - } - - .loader-container { - display: flex; - align-items: center; - justify-content: center; - position: absolute; - top: 0; - left: 0; - } - - .fullscreen-toggle { - display: flex; - position: absolute; - top: 10px; - right: 10px; - padding: 10px; - color: white; - background-color: gainsboro; - border: 1px solid gray; - border-radius: 10px; - cursor: pointer; - } - - span { - font-size: 14px; - } - - small { - padding-left: 10px; - } - - iframe { - border: 0; - } - `; - } - - static get properties() { - return { - url: { type: String, reflect: true }, - }; - } - - constructor({ url, fullscreen = true } = {}) { - super(); - this.url = url; - this.fullscreen = fullscreen; - } - - render() { - return this.url - ? html`
      - ${new Loader({ - message: `Loading Neurosift view...
      ${this.url}`, - })} - ${new Loader({ message: `Loading Neurosift view...
      ${this.url}` })} -
      - ${this.fullscreen ? new FullScreenToggle({ target: this }) : ""} - ` - : ``; - } -} - -customElements.get("neurosift-iframe") || customElements.define("neurosift-iframe", Neurosift); +import { LitElement, css, html } from "lit"; + +import { Loader } from "../Loader"; +import { FullScreenToggle } from "../FullScreenToggle"; +import { baseUrl } from "../../server/globals"; + +export function getURLFromFilePath(file, projectName) { + const regexp = new RegExp(`.+(${projectName}.+)`); + return `${baseUrl}/preview/${file.match(regexp)[1]}`; +} + +export class Neurosift extends LitElement { + static get styles() { + return css` + :host { + background: white; + width: 100%; + height: 100%; + display: grid; + grid-template-rows: 100%; + grid-template-columns: 100%; + position: relative; + --loader-color: hsl(200, 80%, 50%); + } + + iframe, + .loader-container { + width: 100%; + height: 100%; + } + + .loader-container { + display: flex; + align-items: center; + justify-content: center; + position: absolute; + top: 0; + left: 0; + } + + .fullscreen-toggle { + display: flex; + position: absolute; + top: 10px; + right: 10px; + padding: 10px; + color: white; + background-color: gainsboro; + border: 1px solid gray; + border-radius: 10px; + cursor: pointer; + } + + span { + font-size: 14px; + } + + small { + padding-left: 10px; + } + + iframe { + border: 0; + } + `; + } + + static get properties() { + return { + url: { type: String, reflect: true }, + }; + } + + constructor({ url, fullscreen = true } = {}) { + super(); + this.url = url; + this.fullscreen = fullscreen; + } + + render() { + return this.url + ? html`
      + ${new Loader({ + message: `Loading Neurosift view...
      ${this.url}`, + })} + ${new Loader({ + message: `Loading Neurosift view...
      ${this.url}`, + })} +
      + ${this.fullscreen ? new FullScreenToggle({ target: this }) : ""} + ` + : ``; + } +} + +customElements.get("neurosift-iframe") || + customElements.define("neurosift-iframe", Neurosift); diff --git a/src/pyflask/app.py b/src/pyflask/app.py index ab13f8dc5..933a70975 100644 --- a/src/pyflask/app.py +++ b/src/pyflask/app.py @@ -1,5 +1,6 @@ """The primary Flask server for the Python backend.""" +import collections import json import multiprocessing import sys @@ -10,12 +11,12 @@ from os.path import isabs from pathlib import Path from signal import SIGINT +from typing import Union from urllib.parse import unquote # https://stackoverflow.com/questions/32672596/pyinstaller-loads-script-multiple-times#comment103216434_32677108 multiprocessing.freeze_support() - from flask import Flask, request, send_file, send_from_directory from flask_cors import CORS from flask_restx import Api, Resource @@ -35,11 +36,13 @@ system_namespace, ) -app = Flask(__name__) +neurosift_file_registry = collections.defaultdict(bool) + +flask_app = Flask(__name__) # Always enable CORS to allow distinct processes to handle frontend vs. backend -CORS(app) -app.config["CORS_HEADERS"] = "Content-Type" +CORS(flask_app) +flask_app.config["CORS_HEADERS"] = "Content-Type" # Create logger configuration LOG_FOLDER = Path(GUIDE_ROOT_FOLDER, "logs") @@ -62,8 +65,34 @@ api.add_namespace(data_namespace) api.add_namespace(system_namespace) api.add_namespace(dandi_namespace) -api.add_namespace(neurosift_namespace) -api.init_app(app) +# api.add_namespace(neurosift_namespace) # TODO: enable later +api.init_app(flask_app) + + +@flask_app.route("/preview/") +def send_preview(file_path): + return send_from_directory(directory=STUB_SAVE_FOLDER_PATH, path=file_path) + + +@flask_app.route("/files/", methods=["GET", "POST"]) +def handle_file_request(file_path) -> Union[str, None]: + if ".nwb" not in file_path: + raise ValueError("This endpoint must be called on an NWB file!") + + if request.method == "GET": + if neurosift_file_registry[file_path] is True: + file_path = unquote(file_path) + if not isabs(file_path): + file_path = f"/{file_path}" + + return send_file(path_or_file=file_path) + else: + app.abort(404, "Resource is not accessible.") + + else: + neurosift_file_registry[file_path] = True + + return request.base_url @api.route("/log") @@ -111,13 +140,13 @@ def get(self): ) log_handler.setFormatter(log_formatter) - app.logger.addHandler(log_handler) - app.logger.setLevel(DEBUG) + flask_app.logger.addHandler(log_handler) + flask_app.logger.setLevel(DEBUG) - app.logger.info(f"Logging to {LOG_FILE_PATH}") + flask_app.logger.info(f"Logging to {LOG_FILE_PATH}") # Run the server api.logger.info(f"Starting server on port {port}") - app.run(host="127.0.0.1", port=port) + flask_app.run(host="127.0.0.1", port=port) else: raise Exception("No port provided for the NWB GUIDE backend.") diff --git a/src/pyflask/namespaces/neurosift.py b/src/pyflask/namespaces/neurosift.py index 8c6ad7320..117237092 100644 --- a/src/pyflask/namespaces/neurosift.py +++ b/src/pyflask/namespaces/neurosift.py @@ -1,4 +1,8 @@ -"""An API for handling file system communication with the standalone Neurosift preview page.""" +""" +An API for handling file system communication with the standalone Neurosift preview page. + +NOTE: not currently used due to ongoing issues +""" import collections import os @@ -7,6 +11,7 @@ import flask import flask_restx +from manageNeuroconv.info import STUB_SAVE_FOLDER_PATH neurosift_namespace = flask_restx.Namespace( name="neurosift", description="Handle file system communication with the " "standalone Neurosift preview page." From be466496789aef01627335a5cf4142acbdaf9f30 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 03:26:00 +0000 Subject: [PATCH 10/17] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../src/stories/pages/preview/PreviewPage.js | 125 +++--- .../src/stories/preview/NWBFilePreview.js | 408 +++++++++--------- .../renderer/src/stories/preview/Neurosift.js | 206 +++++---- 3 files changed, 357 insertions(+), 382 deletions(-) diff --git a/src/electron/renderer/src/stories/pages/preview/PreviewPage.js b/src/electron/renderer/src/stories/pages/preview/PreviewPage.js index 9c6c79fd0..e6de3b95a 100644 --- a/src/electron/renderer/src/stories/pages/preview/PreviewPage.js +++ b/src/electron/renderer/src/stories/pages/preview/PreviewPage.js @@ -1,64 +1,61 @@ -import { html } from "lit"; -import { Page } from "../Page.js"; -import { onThrow } from "../../../errors"; -import { JSONSchemaInput } from "../../JSONSchemaInput.js"; -import { Neurosift } from "../../preview/Neurosift.js"; -import { baseUrl } from "../../../server/globals"; - -export class PreviewPage extends Page { - header = { - title: "NWB File Exploration", - subtitle: "Visualize your NWB file using Neurosift.", - }; - - constructor(...args) { - super(...args); - this.style.height = "100%"; // Fix main section - } - - updatePath = async (path) => { - if (path) { - // Enable access to the explicit file path - const result = await fetch(`${baseUrl}/files/${path}`, { - method: "POST", - }).then((res) => res.text()); - - // Set Neurosift to access the returned URL - if (result) this.neurosift.url = result; - } else this.neurosift.url = undefined; - }; - - neurosift = new Neurosift(); - - input = new JSONSchemaInput({ - path: ["file_path"], - schema: { - type: "string", - format: "file", - description: - "Please provide a file path that you'd like to visualize using Neurosift. The GUIDE will serve this file and access the appropriate URL automatically.", - }, - onUpdate: this.updatePath, - onThrow, - }); - - render() { - const urlFilePath = new URL(document.location).searchParams.get("file"); - - if (urlFilePath) { - this.updatePath(urlFilePath); - this.input.value = urlFilePath; - } - - return html` -
      - ${this.input} ${this.neurosift} -
      - `; - } -} - -customElements.get("nwbguide-preview-page") || - customElements.define("nwbguide-preview-page", PreviewPage); +import { html } from "lit"; +import { Page } from "../Page.js"; +import { onThrow } from "../../../errors"; +import { JSONSchemaInput } from "../../JSONSchemaInput.js"; +import { Neurosift } from "../../preview/Neurosift.js"; +import { baseUrl } from "../../../server/globals"; + +export class PreviewPage extends Page { + header = { + title: "NWB File Exploration", + subtitle: "Visualize your NWB file using Neurosift.", + }; + + constructor(...args) { + super(...args); + this.style.height = "100%"; // Fix main section + } + + updatePath = async (path) => { + if (path) { + // Enable access to the explicit file path + const result = await fetch(`${baseUrl}/files/${path}`, { + method: "POST", + }).then((res) => res.text()); + + // Set Neurosift to access the returned URL + if (result) this.neurosift.url = result; + } else this.neurosift.url = undefined; + }; + + neurosift = new Neurosift(); + + input = new JSONSchemaInput({ + path: ["file_path"], + schema: { + type: "string", + format: "file", + description: + "Please provide a file path that you'd like to visualize using Neurosift. The GUIDE will serve this file and access the appropriate URL automatically.", + }, + onUpdate: this.updatePath, + onThrow, + }); + + render() { + const urlFilePath = new URL(document.location).searchParams.get("file"); + + if (urlFilePath) { + this.updatePath(urlFilePath); + this.input.value = urlFilePath; + } + + return html` +
      + ${this.input} ${this.neurosift} +
      + `; + } +} + +customElements.get("nwbguide-preview-page") || customElements.define("nwbguide-preview-page", PreviewPage); diff --git a/src/electron/renderer/src/stories/preview/NWBFilePreview.js b/src/electron/renderer/src/stories/preview/NWBFilePreview.js index de01eea64..cd268a90e 100644 --- a/src/electron/renderer/src/stories/preview/NWBFilePreview.js +++ b/src/electron/renderer/src/stories/preview/NWBFilePreview.js @@ -1,214 +1,194 @@ -import { LitElement, css, html } from "lit"; -import { InspectorList } from "./inspector/InspectorList"; -import { Neurosift, getURLFromFilePath } from "./Neurosift"; -import { unsafeHTML } from "lit/directives/unsafe-html.js"; -import { run } from "../pages/guided-mode/options/utils"; -import { until } from "lit/directives/until.js"; -import { InstanceManager } from "../InstanceManager"; -import { path } from "../../electron"; -import { FullScreenToggle } from "../FullScreenToggle"; - -export function getSharedPath(array) { - array = array.map((str) => str.replace(/\\/g, "/")); // Convert to Mac-style path - const mapped = array.map((str) => str.split("/")); - let shared = mapped.shift(); - mapped.forEach((arr, i) => { - for (let j in arr) { - if (arr[j] !== shared[j]) { - shared = shared.slice(0, j); - break; - } - } - }); - - return shared ? path.normalize(shared.join("/")) : ""; // Convert back to OS-specific path -} - -export function truncateFilePaths(items, basepath) { - return items.map((item) => { - item = { ...item }; - item.file_path = item.file_path - .replace(`${basepath}/`, "") // Mac - .replace(`${basepath}\\`, ""); // Windows - return item; - }); -} - -export const removeFilePaths = (items) => { - return items.map((item) => { - const copy = { ...item }; - delete copy.file_path; - return copy; - }); -}; - -class NWBPreviewInstance extends LitElement { - constructor({ file }, project) { - super(); - this.file = file; - this.project = project; - - window.addEventListener("online", () => this.requestUpdate()); - window.addEventListener("offline", () => this.requestUpdate()); - } - - render() { - const isOnline = navigator.onLine; - - return isOnline - ? new Neurosift({ - url: getURLFromFilePath(this.file, this.project), - fullscreen: false, - }) - : until( - (async () => { - const htmlRep = await run( - "html", - { nwbfile_path: this.file }, - { swal: false }, - ); - return unsafeHTML(htmlRep); - })(), - html`Loading HTML representation...`, - ); - } -} - -customElements.get("nwb-preview-instance") || - customElements.define("nwb-preview-instance", NWBPreviewInstance); - -export class NWBFilePreview extends LitElement { - static get styles() { - return css` - :host { - display: block; - width: 100%; - height: 100%; - background: white; - position: relative; - } - - iframe { - width: 100%; - height: 100%; - border: 0; - } - - #inspect { - display: flex; - flex-direction: column; - border-left: 1px solid gray; - box-shadow: -5px 0 5px -5px rgba(0, 0, 0, 0.5); - z-index: 1; - } - `; - } - - constructor({ files = {}, project, inspect = false }) { - super(); - this.project = project; - this.files = files; - this.inspect = inspect; - } - - createInstance = ({ subject, session, info }) => { - return { - subject, - session, - display: () => new NWBPreviewInstance(info, this.project), - }; - }; - - render() { - const fileArr = Object.entries(this.files) - .map(([subject, v]) => - Object.entries(v).map(([session, info]) => { - return { subject, session, info }; - }), - ) - .flat(); - - const onlyFirstFile = fileArr.length <= 1; - - return html` ${new FullScreenToggle({ target: this })} -
      -
      - ${(() => { - if (onlyFirstFile) - return new NWBPreviewInstance(fileArr[0].info, this.project); - else { - const _instances = fileArr.map(this.createInstance); - - const instances = _instances.reduce( - (acc, { subject, session, display }) => { - if (!acc[`sub-${subject}`]) acc[`sub-${subject}`] = {}; - acc[`sub-${subject}`][`ses-${session}`] = display; - return acc; - }, - {}, - ); - - return new InstanceManager({ instances }); - } - })()} -
      - ${this.inspect - ? html`
      -

      - Inspector Report -

      - ${until( - (async () => { - const options = {}; // NOTE: Currently options are handled on the Python end until exposed to the user - - const title = "Inspecting your file"; - - const report = onlyFirstFile - ? await run( - "inspect_file", - { nwbfile_path: fileArr[0].info.file, ...options }, - { title }, - ) // Inspect the first file - : await run( - "inspect_folder", - { path, ...options }, - { title: title + "s" }, - ); // Inspect the folder - - const result = onlyFirstFile - ? { - ...report, - messages: removeFilePaths(report.messages), - } - : { - ...report, - messages: truncateFilePaths( - report.messages, - getSharedPath(fileArr.map(({ info }) => info.file)), - ), - }; - - const items = result.messages; - - const list = new InspectorList({ - items: items, - listStyles: { minWidth: "300px", maxWidth: "350px" }, - emptyMessage: "No issues found.", - }); - list.style.padding = "10px"; - return list; - })(), - html`Loading inspector report...`, - )} -
      ` - : ""} -
      `; - } -} - -customElements.get("nwb-file-preview") || - customElements.define("nwb-file-preview", NWBFilePreview); +import { LitElement, css, html } from "lit"; +import { InspectorList } from "./inspector/InspectorList"; +import { Neurosift, getURLFromFilePath } from "./Neurosift"; +import { unsafeHTML } from "lit/directives/unsafe-html.js"; +import { run } from "../pages/guided-mode/options/utils"; +import { until } from "lit/directives/until.js"; +import { InstanceManager } from "../InstanceManager"; +import { path } from "../../electron"; +import { FullScreenToggle } from "../FullScreenToggle"; + +export function getSharedPath(array) { + array = array.map((str) => str.replace(/\\/g, "/")); // Convert to Mac-style path + const mapped = array.map((str) => str.split("/")); + let shared = mapped.shift(); + mapped.forEach((arr, i) => { + for (let j in arr) { + if (arr[j] !== shared[j]) { + shared = shared.slice(0, j); + break; + } + } + }); + + return shared ? path.normalize(shared.join("/")) : ""; // Convert back to OS-specific path +} + +export function truncateFilePaths(items, basepath) { + return items.map((item) => { + item = { ...item }; + item.file_path = item.file_path + .replace(`${basepath}/`, "") // Mac + .replace(`${basepath}\\`, ""); // Windows + return item; + }); +} + +export const removeFilePaths = (items) => { + return items.map((item) => { + const copy = { ...item }; + delete copy.file_path; + return copy; + }); +}; + +class NWBPreviewInstance extends LitElement { + constructor({ file }, project) { + super(); + this.file = file; + this.project = project; + + window.addEventListener("online", () => this.requestUpdate()); + window.addEventListener("offline", () => this.requestUpdate()); + } + + render() { + const isOnline = navigator.onLine; + + return isOnline + ? new Neurosift({ + url: getURLFromFilePath(this.file, this.project), + fullscreen: false, + }) + : until( + (async () => { + const htmlRep = await run("html", { nwbfile_path: this.file }, { swal: false }); + return unsafeHTML(htmlRep); + })(), + html`Loading HTML representation...` + ); + } +} + +customElements.get("nwb-preview-instance") || customElements.define("nwb-preview-instance", NWBPreviewInstance); + +export class NWBFilePreview extends LitElement { + static get styles() { + return css` + :host { + display: block; + width: 100%; + height: 100%; + background: white; + position: relative; + } + + iframe { + width: 100%; + height: 100%; + border: 0; + } + + #inspect { + display: flex; + flex-direction: column; + border-left: 1px solid gray; + box-shadow: -5px 0 5px -5px rgba(0, 0, 0, 0.5); + z-index: 1; + } + `; + } + + constructor({ files = {}, project, inspect = false }) { + super(); + this.project = project; + this.files = files; + this.inspect = inspect; + } + + createInstance = ({ subject, session, info }) => { + return { + subject, + session, + display: () => new NWBPreviewInstance(info, this.project), + }; + }; + + render() { + const fileArr = Object.entries(this.files) + .map(([subject, v]) => + Object.entries(v).map(([session, info]) => { + return { subject, session, info }; + }) + ) + .flat(); + + const onlyFirstFile = fileArr.length <= 1; + + return html` ${new FullScreenToggle({ target: this })} +
      +
      + ${(() => { + if (onlyFirstFile) return new NWBPreviewInstance(fileArr[0].info, this.project); + else { + const _instances = fileArr.map(this.createInstance); + + const instances = _instances.reduce((acc, { subject, session, display }) => { + if (!acc[`sub-${subject}`]) acc[`sub-${subject}`] = {}; + acc[`sub-${subject}`][`ses-${session}`] = display; + return acc; + }, {}); + + return new InstanceManager({ instances }); + } + })()} +
      + ${this.inspect + ? html`
      +

      Inspector Report

      + ${until( + (async () => { + const options = {}; // NOTE: Currently options are handled on the Python end until exposed to the user + + const title = "Inspecting your file"; + + const report = onlyFirstFile + ? await run( + "inspect_file", + { nwbfile_path: fileArr[0].info.file, ...options }, + { title } + ) // Inspect the first file + : await run("inspect_folder", { path, ...options }, { title: title + "s" }); // Inspect the folder + + const result = onlyFirstFile + ? { + ...report, + messages: removeFilePaths(report.messages), + } + : { + ...report, + messages: truncateFilePaths( + report.messages, + getSharedPath(fileArr.map(({ info }) => info.file)) + ), + }; + + const items = result.messages; + + const list = new InspectorList({ + items: items, + listStyles: { minWidth: "300px", maxWidth: "350px" }, + emptyMessage: "No issues found.", + }); + list.style.padding = "10px"; + return list; + })(), + html`Loading inspector report...` + )} +
      ` + : ""} +
      `; + } +} + +customElements.get("nwb-file-preview") || customElements.define("nwb-file-preview", NWBFilePreview); diff --git a/src/electron/renderer/src/stories/preview/Neurosift.js b/src/electron/renderer/src/stories/preview/Neurosift.js index de5922fc4..96641c4b5 100644 --- a/src/electron/renderer/src/stories/preview/Neurosift.js +++ b/src/electron/renderer/src/stories/preview/Neurosift.js @@ -1,104 +1,102 @@ -import { LitElement, css, html } from "lit"; - -import { Loader } from "../Loader"; -import { FullScreenToggle } from "../FullScreenToggle"; -import { baseUrl } from "../../server/globals"; - -export function getURLFromFilePath(file, projectName) { - const regexp = new RegExp(`.+(${projectName}.+)`); - return `${baseUrl}/preview/${file.match(regexp)[1]}`; -} - -export class Neurosift extends LitElement { - static get styles() { - return css` - :host { - background: white; - width: 100%; - height: 100%; - display: grid; - grid-template-rows: 100%; - grid-template-columns: 100%; - position: relative; - --loader-color: hsl(200, 80%, 50%); - } - - iframe, - .loader-container { - width: 100%; - height: 100%; - } - - .loader-container { - display: flex; - align-items: center; - justify-content: center; - position: absolute; - top: 0; - left: 0; - } - - .fullscreen-toggle { - display: flex; - position: absolute; - top: 10px; - right: 10px; - padding: 10px; - color: white; - background-color: gainsboro; - border: 1px solid gray; - border-radius: 10px; - cursor: pointer; - } - - span { - font-size: 14px; - } - - small { - padding-left: 10px; - } - - iframe { - border: 0; - } - `; - } - - static get properties() { - return { - url: { type: String, reflect: true }, - }; - } - - constructor({ url, fullscreen = true } = {}) { - super(); - this.url = url; - this.fullscreen = fullscreen; - } - - render() { - return this.url - ? html`
      - ${new Loader({ - message: `Loading Neurosift view...
      ${this.url}`, - })} - ${new Loader({ - message: `Loading Neurosift view...
      ${this.url}`, - })} -
      - ${this.fullscreen ? new FullScreenToggle({ target: this }) : ""} - ` - : ``; - } -} - -customElements.get("neurosift-iframe") || - customElements.define("neurosift-iframe", Neurosift); +import { LitElement, css, html } from "lit"; + +import { Loader } from "../Loader"; +import { FullScreenToggle } from "../FullScreenToggle"; +import { baseUrl } from "../../server/globals"; + +export function getURLFromFilePath(file, projectName) { + const regexp = new RegExp(`.+(${projectName}.+)`); + return `${baseUrl}/preview/${file.match(regexp)[1]}`; +} + +export class Neurosift extends LitElement { + static get styles() { + return css` + :host { + background: white; + width: 100%; + height: 100%; + display: grid; + grid-template-rows: 100%; + grid-template-columns: 100%; + position: relative; + --loader-color: hsl(200, 80%, 50%); + } + + iframe, + .loader-container { + width: 100%; + height: 100%; + } + + .loader-container { + display: flex; + align-items: center; + justify-content: center; + position: absolute; + top: 0; + left: 0; + } + + .fullscreen-toggle { + display: flex; + position: absolute; + top: 10px; + right: 10px; + padding: 10px; + color: white; + background-color: gainsboro; + border: 1px solid gray; + border-radius: 10px; + cursor: pointer; + } + + span { + font-size: 14px; + } + + small { + padding-left: 10px; + } + + iframe { + border: 0; + } + `; + } + + static get properties() { + return { + url: { type: String, reflect: true }, + }; + } + + constructor({ url, fullscreen = true } = {}) { + super(); + this.url = url; + this.fullscreen = fullscreen; + } + + render() { + return this.url + ? html`
      + ${new Loader({ + message: `Loading Neurosift view...
      ${this.url}`, + })} + ${new Loader({ + message: `Loading Neurosift view...
      ${this.url}`, + })} +
      + ${this.fullscreen ? new FullScreenToggle({ target: this }) : ""} + ` + : ``; + } +} + +customElements.get("neurosift-iframe") || customElements.define("neurosift-iframe", Neurosift); From 3f824618d25c14a35bb3d73c4fe04ead4e2a8704 Mon Sep 17 00:00:00 2001 From: Cody Baker Date: Mon, 27 May 2024 23:33:02 -0400 Subject: [PATCH 11/17] the attribute is the name of the variable? --- src/pyflask/tests/conftest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pyflask/tests/conftest.py b/src/pyflask/tests/conftest.py index ec72c792b..fca69482c 100644 --- a/src/pyflask/tests/conftest.py +++ b/src/pyflask/tests/conftest.py @@ -12,7 +12,7 @@ def client(request): if target: return target else: - app = flask.app + app = flask.flask_app app.config.update( { "TESTING": True, From 2b495540f9c4526ab1d8690494bc7a01ae21a09f Mon Sep 17 00:00:00 2001 From: Garrett Michael Flynn Date: Tue, 28 May 2024 08:32:24 -0700 Subject: [PATCH 12/17] Update Neurosift.js --- src/electron/renderer/src/stories/preview/Neurosift.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/electron/renderer/src/stories/preview/Neurosift.js b/src/electron/renderer/src/stories/preview/Neurosift.js index 96641c4b5..3f85327d8 100644 --- a/src/electron/renderer/src/stories/preview/Neurosift.js +++ b/src/electron/renderer/src/stories/preview/Neurosift.js @@ -83,9 +83,6 @@ export class Neurosift extends LitElement { ${new Loader({ message: `Loading Neurosift view...
      ${this.url}`, })} - ${new Loader({ - message: `Loading Neurosift view...
      ${this.url}`, - })} ${this.fullscreen ? new FullScreenToggle({ target: this }) : ""}